什么是算法? - David J. Malan:英语精读讲义

TED-Ed

学习难度
799 词 203 词/分

视频简介:视频通过逐步改进“数房间里有多少人”的方法,介绍算法的基本概念,并说明伪代码、循环、正确性、效率、边界情况测试、程序错误和条件分支之间的关系。 主要英语知识点: 1. algorithm — 词义与语域:理解该词在计算机科学中并非泛指普通“方法”,而是为解决问题而设计的一组明确步骤,从而能听懂技术讲解中程序如何被表示、逐步执行并得到结果。 2. corner case — 词义与语域:识别这个工程术语所指的异常或边界情况;这类情况可能暴露方案缺陷,因此可用它讨论程序、规则或解决方案在常规示例之外是否依然正确可靠。 3. only executes if — 语法与句型:掌握“只有满足指定条件才执行”的条件逻辑表达,用来准确说明某条指令或分支何时运行,以及程序流程、规则触发条件和例外处理方式。

本篇讲解

What's an algorithm?

0:15

什么是算法?

In computer science,

0:16

在计算机科学中,

an algorithm is a set of instructions for solving some problem, 用詞

0:17

算法是一套用于解决特定问题的指令,

step by step. 短語搭配

0:20

一步一步来。

用詞

algorithm:解决问题的明确流程

algorithm 指一组用来解决问题的明确指令。它不只是大致的想法或技巧;人或计算机都可以按照这些步骤执行。 在本句中,step by step 强调这些指令构成一个有顺序的流程。循环和条件可以控制哪些步骤要重复或被选择。

练习

在本句中,algorithm 是什么意思?

  1. 任何与计算机有关的想法
  2. 一台进行计算的机器
  3. 用来解决问题的一组明确步骤
查看答案

用来解决问题的一组明确步骤

短語搭配

step by step:一步一步地进行

step by step 表示把一件事分成若干阶段,按照顺序一步一步进行。在本句中,它说明这些指令通过有序的流程来解决问题。 这里的 step 指流程中的一个“步骤”,不是实体的台阶。

练习

用表示“一步一步”的固定词组完成指令:To avoid mistakes, follow the checklist ____.

查看答案

step by step

Typically, algorithms are executed by computers,

0:21

通常,算法是由计算机执行的,

but we humans have algorithms as well. 短語搭配

0:23

但我们人类也有算法。

短語搭配

句尾 as well 表示“也”

这里的 as well 表示“也”。它位于分句末尾;前文把算法和计算机联系起来之后,这个短语又把人类加入讨论:人类也有算法。 在这种用法中,要把 as well 当作一个表示补充的完整短语。这里的 well 不是“好”或“以好的方式”的意思。

练习

用表示“也”的目标短语完成句子:Nina wants to join the game, and Omar wants to join ____.

查看答案

as well

For instance, how would you go about counting the number of people in a room? 講解

0:26

例如,你打算如何计算一个房间里的人数?

表達脈絡

For instance:引出具体例子

For instance 告诉听者,接下来会出现一个具体例子。这里的讲解从“人类会使用算法”这个概括性观点,转到“统计房间里的人数”这个具体任务。 作为组织信息的短语,它帮助听者把例子与前面的概括性观点联系起来。它并不表示一件事在另一件事之后发生。

练习

For instance 在下面这段话中起什么作用?“Many materials can be recycled. For instance, clean glass jars can go in the recycling bin.”

  1. 它引出前面概括性观点的一个具体例子。
  2. 它表示时间顺序中的下一步。
  3. 它表示说话人正在纠正之前的错误。
查看答案

它引出前面概括性观点的一个具体例子。

短語搭配

go about counting:询问怎样着手完成任务

在 go about doing something 这个结构中,go about 表示以某种方式着手并处理一项任务。这里的 how would you go about counting 是在问你会用什么方法数人数,而不是问你会不会数数。 about 后面的动词要用 -ing 形式,如 go about counting、go about fixing。这个短语强调处理事情的方法或过程,不表示在一个地方到处走动。

练习

用 repair 的正确形式完成问题:How should we go about ____ the damaged chair?

查看答案

repairing

Well, if you're like me, 語氣意圖

0:29

那么,如果你和我一样,

you probably point at each person,

0:31

你可能会指着每个人,

語氣意圖

if you're like me:邀请听众产生共鸣

If you're like me 从字面上看是在设定“如果你和我相似”这个条件,但这里是友好的口语铺垫。说话人先提到自己的习惯,暗示听众也可能有同样的习惯。 这个表达能缓和说法:说话人没有断言每个人都会逐一指着数,而是说这是我会做的事,你可能也会这样做。它通常只比较当前话题中的某个习惯或偏好,不是在比较两个人的全部性格。

练习

判断这个用法:在轻松友好的演讲中,If you're like me 可以引出说话人自己的习惯,而不会声称每个人都这样做。

  1. 正确
  2. 错误
查看答案

正确

one at a time, 短語搭配

0:33

一次指一个,

and count up from zero. 短語動詞

0:34

从零开始数。

短語搭配

one at a time:每轮一个人或一件事

one at a time 表示每轮只处理一个人或一件事。在这句话中,它说明说话人如何指人:先指一个人,再指下一个,这样就能按顺序计数。 at a time 表示每轮处理的数量,并不是指钟表上的时间或某个特定时刻。

练习

老师希望孩子们逐个走到桌前,而不是一起过来。哪条指示最合适?

  1. Please come to my desk one at a time.
  2. Please come to my desk at one time.
  3. Please come to my desk one time.
查看答案

Please come to my desk one at a time.

短語動詞

count up:从较小的数字数到较大的数字

count up 表示按数值递增的顺序说出或记录数字,例如 0、1、2、3。在这句话中,计数从零开始,每计入一个人,数字就随之增加。 up 这个小品词赋予动词“数值增加”的方向,并不是指物体向上移动。

练习

用表示数字递增方向的小品词完成指示:Start at zero and count ____ to ten.

查看答案

up

1 2 3 4 and so forth. 短語搭配

0:35

1、2、3、4等等。

短語搭配

and so forth:表示清楚的列表或规律继续

and so forth 告诉听者,列表或规律还会按同类内容继续。说到“1、2、3、4”后,接下来的数字很容易推知,所以说话人不再逐个说出。 要把它作为一个用于列表结尾的整体表达来理解,意思是“还有同类内容继续”,而不是按 forth 表示方向的字面义理解。它和 and so on 意思接近。

练习

在“The club offers chess, music, painting, and so forth”中,and so forth 表示什么?

  1. 后面还有更多同类项目。
  2. 列出的项目都是错误的。
  3. 这个列表已经转到一个新话题。
查看答案

后面还有更多同类项目。

Well, that's an algorithm.

0:38

嗯,这就是一个算法。

In fact, let's try to express it a bit more formally in pseudocode, 講解

0:39

事实上,让我们试着用伪代码更正式地表达它,

English-like syntax that resembles a programming language.

0:43

伪代码是一种类似于编程语言、类似于英语的语法。

短語搭配

a bit more formally:稍微提高正式程度

a bit more formally 表示“以稍微更正式的方式”。more formally 说明要怎样表达这个想法,a bit 则限制变化的程度,表示只改变一点。 这里说话人正从日常描述转向伪代码。这个短语让这种转换听起来幅度不大,而不是要彻底改变表达风格。

练习

用本课中表示“以稍微更正式的方式”的短语完成句子:Could you state the rule ____?

查看答案

a bit more formally

用詞

pseudocode:不用可执行代码描述算法逻辑

pseudocode(伪代码)是一种非正式、便于人阅读的算法描述方式,用来说明算法的步骤和逻辑。它往往看起来像编程语言,但不必遵守某一种语言的精确语法。 在本句中,in pseudocode 说明这个想法将以什么形式表达。后面的英语式指令是为了把算法讲清楚,不一定能由计算机直接运行。

练习

关于 pseudocode,哪一项说法正确?

  1. 它是必须严格遵守某种编程语言规则的 source code。
  2. 它以类似代码的形式描述算法,但不一定能直接执行。
  3. 它是程序运行时发现的错误列表。
查看答案

它以类似代码的形式描述算法,但不一定能直接执行。

Let n equal zero. 語法

0:45

让 n 等于零。

語法

Let n equal zero:设置变量的初始值

在数学和伪代码中,Let n equal zero. 的意思是“定义或设置 n 的值为 0”。它先给 n 设定初始值,后面的步骤再使用或改变 n。 这里的 let 用来引入定义或假设,不表示“允许”。结构是 Let + variable + equal + value,而且在 let 后面要用 equal 的原形。

练习

使用 Let ... equal ... 结构补全这条伪代码指令:____ total ____ zero before counting.

查看答案

Let · equal

For each person in room, 語法

0:47

对于房间里的每个人,

語法

For each person in room:伪代码循环

For each ... 引出一个循环:后面的指令会对集合中的每个成员执行一次。这里的 person in room 指明要处理的集合,因此每个人都会触发后续步骤。 在普通英文中,通常会说 for each person in the room。伪代码为了让指令简短,常会省略 the 这类小词。

练习

在这段伪代码中,For each person in room 表示要做什么?

  1. 只对房间里的第一个人执行后续指令
  2. 为每个人准备一个房间
  3. 对房间里的每个人执行一次后续指令
查看答案

对房间里的每个人执行一次后续指令

set n = n + 1. 用詞

0:49

设置 n = n + 1。

用詞

set n = n + 1:更新变量

在伪代码中,set 表示给变量赋值。先用 n 当前的值计算 n + 1,再把结果存回 n。每执行一次这条指令,n 就增加 1。 这里的等号是赋值指令的一部分,不是在断言 n 在数学上始终等于 n + 1。

练习

伪代码 set n = n + 1 执行一次后会发生什么?

  1. n 当前的值增加 1
  2. n 的值被删除
  3. 程序检查 n 是否等于 n + 1
查看答案

n 当前的值增加 1

How to interpret this pseudocode? 表達脈絡

0:52

如何理解这段伪代码呢?

表達脈絡

How to interpret ...?:标题式提问

在这句话中,How to interpret this pseudocode? 是一个标题式问题。它把讲解从展示伪代码推进到说明每一行是什么意思。 how to + 动词原形表示做某事的方法。这里是完整直接问句 How should we interpret this pseudocode? 的简略形式,主要作用是组织接下来的讲解。

练习

判断正误:在教程中,How to interpret this pseudocode? 可以像标题一样用作过渡,引出后面的解释。

  1. 正确
  2. 错误
查看答案

正确

Well, line one declares, so to speak, 講解

0:54

嗯,可以这么说,第一行声明了

語氣意圖

so to speak:标记近似或比喻性说法

so to speak 是插入语,意思是“如果可以这样说”。这里它缓和了 declares:说话人借用了一个有用的技术说法,而不是坚持这就是唯一完全精确的描述。 它提醒听者把这个措辞理解为近似或比喻,而不是把它当成让人真的开口说话的指令。

练习

用表示 second home 是非字面描述的三个词表达完成句子:After so many late nights there, the library became our second home, ____.

查看答案

so to speak

a variable called n and initializes its value to zero.

0:56

一个名为 n 的变量,并将其值初始化为零。

用詞

编程中的 declares ... initializes its value to zero

在编程说明中,declares a variable 表示把变量引入代码或伪代码,通常会确定它的名称,有时还会确定类型。这里的变量名是 n。 initializes its value to zero 表示给这个变量设置起始值 0。声明和初始化是两个不同的动作,即使同一行可以同时完成它们。

练习

请把 declare 和 initialize 变成正确形式来完成句子:The first line ____ a variable named total and ____ it to zero.

查看答案

declares · initializes

This just means that at the beginning of our algorithm,

0:59

这只是意味着在我们的算法开始时,

the thing with which we're counting has a value of zero. 語法

1:02

我们用来计数的东西的值为零。

語法

with which we're counting:介词前置的正式关系从句

with which we're counting 是修饰 the thing 的关系从句。which 回指 the thing,with 表明它是用于计数的工具,即“我们用来计数的东西”。 把介词放在 which 前面会形成较正式的“介词 + which”结构。在本句中,the thing 指变量 n;它是计数器,而不是被数的对象。

练习

用指代事物的关系代词完成这个正式关系从句:The camera with ____ we filmed the birds was very light.

查看答案

which

After all, before we start counting, 表達脈絡

1:05

毕竟,在开始计数之前,

we haven't counted anything yet. 語法

1:06

我们什么都没数。

表達脈絡

After all:补充支持前文的理由

After all 引出一个支持或解释前一句话的理由。这里它表明,把零作为计数起点很合理,因为数数还没有开始。 它先给出判断或结论,再提醒听者注意理由,从而组织信息。在这里,它大致表示“别忘了这个事实”,而不是时间顺序上的“所有事情之后”。

练习

哪一句使用 after all 补充一个支持前文的理由?

  1. We checked the map after all the visitors left.
  2. We should check the map; after all, this is our first visit.
  3. After all the work, we went home.
查看答案

We should check the map; after all, this is our first visit.

語法

haven't counted anything yet:截至现在还没有数

Haven't counted 是现在完成时的否定形式:have not + 过去分词。它表示从过去到当前时点,数数这件事一直没有发生,所以现在的计数仍然是零。 在否定句中,anything 表示没有数任何东西。句尾的 yet 表示截至现在这件事仍未完成,通常也暗示以后可能会发生。

练习

用缩写形式 haven't ... yet 完成句子,表示截至现在还没有进行任何测试:We ____ run any tests ____.

查看答案

haven't · yet

Calling this variable n is just a convention. 用詞

1:08

把这个变量叫做 n 只是一种惯例。

用詞

just a convention:常见做法,并非硬性规则

在这个技术语境中,convention 指大家通常采用的共同做法,不是“会议”,也不是硬性要求。just a convention 表示把变量命名为 n 是常见选择,但换成其他有效名称也可以。 说惯例是可选的,是指编程语言并未强制这样做;不过,遵循惯例仍能让其他人更容易读懂代码。

练习

这句话中的 just a convention 是什么意思?

  1. 这是一种常见做法,但也可以使用其他有效名称。
  2. 这是所有程序都必须遵守的规则。
  3. 这是一场讨论变量名称的正式会议。
查看答案

这是一种常见做法,但也可以使用其他有效名称。

I could have called it almost anything. 語法

1:10

我几乎可以叫它任何名字。

語法

could have called it:过去本可以这样命名,但没有采用

Could have called it 使用 could have + 过去分词来回顾过去一个没有采用的选择。说话人当时可以选择另一个名字,但实际选择了 n。 这里的 called 表示“给……取名”,结构是 call + 宾语 + 名称。have 把这种可能性放在过去;could call it 通常表示现在或未来可以这样命名。

练习

使用 could 和 call 补全句子,表示过去有一个未采用的命名选择:We ____ something else, but we chose Horizon.

查看答案

could have called it

Now, line two demarks the start of a loop, 用詞

1:12

现在,第二行标志着循环的开始,

a sequence of steps that will repeat some number of times.

1:14

循环是一系列将重复若干次的步骤。

用詞

loop:程序中重复执行的步骤序列

在编程中,loop 指“循环”,也就是让一系列步骤反复运行的结构。loop 后面的短语直接解释了它:这些步骤会重复若干次。 这里的 loop 描述的是程序流程,不只是圆形。看到代码或伪代码中的 loop 时,要找出哪些指令属于会重复执行的代码块。

练习

在编程讲解中,句子“The loop checks every message in the inbox”里的 loop 是什么意思?

  1. 只能运行一次的单条指令
  2. 屏幕上的圆形图像
  3. 重复执行一组指令的结构
查看答案

重复执行一组指令的结构

So, in our example, the step we're taking is counting people in the room.

1:17

所以,在我们的例子中,我们采取的步骤是数房间里的人。

Beneath line two is line three,

1:20

第二行下面是第三行,

which describes exactly how we'll go about counting.

1:22

它确切地描述了我们将如何进行计数。

The indentation implies that it's line three that will repeat. 用詞

1:25

缩进意味着要重复的是第三行。

用詞

The indentation implies:格式显示代码结构

indentation 指行首把一行内容向右移开的空白,也就是“缩进”。在代码或伪代码中,这种间距可以表示哪些指令属于同一个代码块。 The indentation implies that... 表示这种格式为后面的结论提供了线索。这里,缩进说明第三行位于循环内部,所以第三行才是会重复执行的部分。

练习

在代码讲解“The indentation implies that the message is part of the loop”中,The indentation implies 是什么意思?

  1. 间距表明消息中有错误。
  2. 间距使程序显示这条消息。
  3. 间距为代码结构提供了线索。
查看答案

间距为代码结构提供了线索。

So, what the pseudocode is saying is that after starting at zero, 講解

1:28

所以,伪代码的意思是,在从零开始之后,

for each person in the room, we'll increase n by one. 短語搭配

1:32

针对房间里的每个人,我们会把 n 增加一。

表達脈絡

what the pseudocode is saying is that...:解释伪代码的意思

What X is saying is that... 这个框架可以把 X 中的信息改写成通俗的解释。这里的 saying 表示“表达、意思是”,不是说某个事物真的在讲话。 what 从句先指出要解读的信息来源,is that 再引出具体解释。这样可以把信息来源和后面的解释清楚地区分开。

练习

使用 What X is saying is that... 框架补全这句解释:____ every visitor must sign in.

查看答案

What the notice is saying is that

語法

after starting at zero:用 after + -ing 表示步骤顺序

after starting at zero 使用 after + -ing 表示一个步骤先于下一个步骤发生。在本句中,我们先让计数从零开始,然后再增加 n。 starting 是介词 after 后使用的 -ing 形式,不是现在进行时的主要谓语。这种简短结构常见于流程说明和操作指令。

练习

使用 after + -ing 短语表示检查先发生:____, click Submit.

查看答案

After checking the address

短語搭配

increase n by one:by 表示变化幅度

在 increase n by one 中,n 是被改变的数值,by one 表示变化的幅度。要在当前值上加 1;by one 并不是说最终值是 1。 可迁移的结构是 increase + 数值 + by + 幅度。例如,n 原来是 4,增加一之后就是 5。

练习

一个计数器从 7 变为 8。请用 by 和英文数字单词补全句子:Increase the counter ____.

查看答案

by one

Now, is this algorithm correct?

1:35

那么,这个算法正确吗?

Well, let's bang on it a bit. 習語

1:38

让我们来测试一下。

習語

bang on it a bit:非正式地动手测试

这里的 bang on it a bit 是技术讨论中的非正式比喻,表示用几个不同情况试一试某个系统或想法,看看它是否会出问题,并不是真的动手敲打。 这个说法给人的感觉是对它施加一些压力,而不只是静态地查看。不过在其他语境中,bang on it 可能确实表示反复敲打,因此这里的“测试”含义来自技术讨论的上下文。

练习

在软件讨论中,"Let's bang on it a bit" 最可能是什么意思?

  1. 用几个不同情况测试一下它。
  2. 反复敲打电脑。
  3. 停止处理它。
查看答案

用几个不同情况测试一下它。

Does it work if there are two people in the room? 語法

1:39

如果房间里有两个人,它能行得通吗?

語法

Does it work if ...?:测试一个条件

Does it work if ...? 用来询问某个方法、系统或方案在 if 后面的条件下是否仍然有效。这里的 it 指前面提到的算法,work 表示“按预期发挥作用”或“有效”,不是“做工作”。 可以用 Does it work if + 条件? 来检验假设,或确认一个解决方案在什么情况下会失效。

练习

设计者想测试智能门锁在停电时是否仍能使用。哪个问题表达了这个意思?

  1. Does it work if the power goes out?
  2. Does it work because the power goes out?
  3. Does it work, so the power goes out?
查看答案

Does it work if the power goes out?

Let's see.

1:42

让我们来看看。

In line one, we initialize n to zero.

1:43

在第一行,我们将 n 初始化为零。

For each of these two people, we then increment n by one. 用詞

1:45

对于这两个人中的每一个,我们将 n 加一。

用詞

increment n by one:把变量加 1

Increment 是技术语境中的动词,意思是“让一个数值按指定幅度增加”。在 increment n by one 中,n 是被改变的值,by one 表示变化量:新值等于原值加 1。 本句描述的是重复更新:每处理一个人,就给 n 加 1。可迁移的结构是 increment + 数值 + by + 增量。

练习

用表示变化量的介词完成这条技术指令:Increment the retry count ____ one after each failed attempt.

查看答案

by

So, on the first trip through the loop, we update n from zero to one. 習語

1:49

所以,在第一次循环时,我们将 n 从零更新为一。

習語

trip through the loop:一次循环迭代

在这句话中,a trip through the loop 指循环体执行一次,也就是一次迭代。the first trip 是循环内的步骤第一次运行。 trip 用路径来比喻抽象的程序流程。可以想象进入循环、把里面的步骤走一遍再出来;每完整走一遍,就是 one trip through the loop。

练习

用高亮的非正式技术表达补全句子:On the second ____, the program removes one duplicate.

查看答案

trip through the loop

On the second trip through that same loop, we update n from one to two.

1:52

在第二次同一次循环中,我们将 n 从一更新为二。

And so, by this algorithm's end, 短語搭配

1:56

这样,当这个算法结束时,

n is two, which indeed matches the number of people in the room. 表達脈絡

1:58

n 就是二,这确实与房间里的人数相符。

短語搭配

by this algorithm's end:截止点上的结果

这里的 by this algorithm's end 意思是“到这个算法完成时”。by 标记一个截止点:到达这个时间点时,n 已经变成二。这里的 by 不是“使用这个算法”。 this algorithm's end 是 the end of this algorithm 的所有格表达。by + 截止点 适合说明某个结果不晚于该时间点已经完成或成立。

练习

哪句话表示报告必须不晚于下午 5 点完成?

  1. The report must be finished by 5 p.m.
  2. The report must be worked on through 5 p.m.
  3. The report must be finished at 5 p.m.
查看答案

The report must be finished by 5 p.m.

表達脈絡

which indeed matches:确认前面的结果

这里,which 引出一个补充说明的关系从句,指代前面的整个结果 n is two,而不是 people 或 the room。这个从句补上一项核对:该结果与实际人数一致。 indeed 加强确认语气。因此,which indeed matches... 可用于先给出一个结果,再把它与数据、预期或现实事实进行核对。

练习

在例句中,which 指代什么?

  1. 房间
  2. 前面的结果 n is two
  3. people 这个词
查看答案

前面的结果 n is two

So far, so good. 習語

2:02

到目前为止,一切顺利。

習語

So far, so good:积极但暂时的进展判断

So far, so good. 是一个固定表达,意思是事情到目前为止进展顺利。它对当前进展作出正面判断,同时不排除之后可能出现变化。 这里说话人是在总结一个阶段性结果,并不是宣布最终成功。应把整句话作为一个固定表达来理解,不要认为两个 so 的意思和作用完全相同。

练习

判断:So far, so good. 表示整个任务已经完成,而且肯定会成功。

  1. 错误
  2. 正确
查看答案

错误

How about a corner case though? 用詞

2:03

但是遇到极端情况会怎样呢?

用詞

corner case:不常见的测试条件

在技术讨论中,corner case 指可能暴露系统在正常使用中不会出现的问题的不常见条件或输入。 这里把“零个人”选作这种特殊测试条件。这个短语不是指实际的角落;它表示要用极端或少见的输入,测试计数方法是否仍然有效。

练习

在软件测试中,哪种情况最适合称为 corner case?

  1. 测试列表包含零个项目时会发生什么
  2. 用有效账户测试通常的登录流程
  3. 为登录按钮选择一种新颜色
查看答案

测试列表包含零个项目时会发生什么

Suppose that there are zero people in the room, 語法

2:05

假设房间里有零个人,

besides me, who's doing the counting.

2:07

除了正在计数的我。

語法

Suppose that:设定一个假设条件

Suppose that 用来引入一个条件,并在接下来的讨论、计算或测试中暂时把它当作真的。它是在为推理设定起点,并不是说说话人猜这个条件可能是真的。 结构是 Suppose that + 从句。that 可以省略:Suppose there are zero people 的意思相同。

练习

使用 Suppose that 设定这个假设测试条件:____ the phone has no saved contacts. What should the app display?

查看答案

Suppose that

In line one, we again initialize n to zero.

2:09

在第一行,我们再次将 n 初始化为零。

This time though, line three doesn't execute at all, 用詞

2:12

然而这一次,第三行根本没有执行,

since there isn't a person in the room,

2:14

因为房间里没有其他人,

用詞

doesn't execute at all:代码一次也不运行

这里,execute 是编程动词,表示“运行”或“执行”一行代码。Line three doesn't execute 表示程序流程从未到达并运行第三行。 at all 加强了 doesn't 的否定语气。这个短语表示该行一次也没有运行,而不是运行了但结果错误。

练习

在编程讨论中,“The line doesn't execute at all”是什么意思?

  1. 这一行一次也没有运行。
  2. 这一行运行了,但速度很慢。
  3. 这一行运行了,但行为或结果不正确。
查看答案

这一行一次也没有运行。

and so n remains zero,

2:16

所以 n 仍然是零,

which indeed matches the number of people in the room.

2:18

这确实与房间里的人数相符。

Pretty simple, right? 語氣意圖

2:20

非常简单,对吧?

語氣意圖

Pretty simple, right?:轻松地寻求确认

这里的 pretty 表示“相当、挺”,所以 pretty simple 是说这个想法似乎很容易理解。pretty 在这里不是“漂亮”的意思。 句尾的简短问句 right? 用来轻松地寻求确认:说话人邀请听者表示同意或表明自己跟上了。在轻松的讲解中,它是一种快速互动确认,并不是在询问方向或权利。

练习

在 “Pretty simple, right?” 中,“right?” 的主要功能是什么?

  1. 它轻松地请听者确认,或表示自己已经跟上。
  2. 它正式证明这项任务很简单。
  3. 它让听者朝某个方向移动。
查看答案

它轻松地请听者确认,或表示自己已经跟上。

But counting people one at a time is pretty inefficient too, no?

2:21

但是一次数一个人效率也很低,不是吗?

Surely we can do better. 表達脈絡

2:25

我们肯定能做得更好。

表達脈絡

Surely we can do better:转向改进的过渡句

Surely we can do better 不只是表达信心。它还在论证:目前的方法不够好,应该能找到改进办法。 作为过渡句,它把讨论从指出低效的方法推进到寻找更好的方案。Surely 把这个判断说成合情合理的,并期待听者认同。

练习

在演讲中,Surely we can do better 主要起什么作用?

  1. 它表示当前做法很可能还能改进。
  2. 它表示当前做法已经是最好的选择。
  3. 它要求听众解释这个做法为什么失败。
查看答案

它表示当前做法很可能还能改进。

Why not count two people at a time? 語氣意圖

2:26

为什么不一次数两个人呢?

語氣意圖

Why not count:用 Why not + 动词原形提出建议

Why not count...? 使用 Why not + 动词原形来提出建议。这里说话人是在建议一次数两个人,并不是主要想让对方解释原因。 疑问句形式给讨论留下了空间:如果这个想法行不通,对方仍然可以说明实际原因。

练习

用 try 补全这个建议:Why not ____ the simpler method?

查看答案

try

Instead of counting 1 2 3 4 5 6 7 8 and so forth, 語法

2:28

为什么要数 1、2、3、4、5、6、7、8 等等,

why not count 2 4 6 8 and so on.

2:33

而不数 2、4、6、8 等等呢。

語法

Instead of counting ... why not count:提出替代做法

Instead of doing X, why not do Y? 这个框架把原来的做法和建议的替代做法放在一起。这里,X 是一个一个地数,Y 是两个两个地数。 instead of 后面接名词或 -ing 形式,所以这里用 counting。why not 后面接动词原形,所以这里用 count。这个框架可以用来建议换一种方法。

练习

把 check 和 use 变成正确形式,完成这个建议句:Instead of ____ every email one by one, why not ____ a filter?

查看答案

checking · use

It even sounds faster and it surely is.

2:36

听起来甚至更快,而且确实如此。

Let's express this optimization in pseudocode. 用詞

2:39

让我们用伪代码来表达这个优化。

用詞

optimization:有明确效率目标的优化

在这个句子中,optimization 指一种让计数方法更高效的具体改动:从一次处理一个人改为一次处理两个人。 在技术语境中,optimization 是为了实现某个目标而改进算法、程序或流程,例如提高速度、减少内存使用或减少工作量。它指有目的的改进,而不是笼统地说某件事变好了。

练习

在讨论如何让程序运行得更快时,optimization 最可能是什么意思?

  1. 把代码翻译成另一种语言
  2. 让系统效率更高的一项具体改动
  3. 列出所有可能出现的错误
查看答案

让系统效率更高的一项具体改动

Let n equal zero.

2:41

让 n 等于零。

For each pair of people in room,

2:43

对于房间里的一对人,

set n = n + 2.

2:45

设置 n = n + 2。

Pretty simple change, right?

2:47

非常简单的改变,对吧?

Rather than count people one at a time,

2:49

我们不再一次数一个人,

we instead count them two at a time.

2:51

而是改成一次数两个人。

This algorithm is thus twice as fast as the last. 語法

2:53

因此这个算法比上一个快两倍。

語法

twice as fast as:速度正好是两倍

twice as fast as 表示一个事物的速度是比较对象的两倍。这里比较的是这个算法和上一个算法的速度。 结构是“倍数 + as + 形容词或副词 + as + 比较对象”。在 twice as fast as the last 中,twice 表示倍数,fast 表示比较的性质,第二个 as 引出比较对象。

练习

补全倍数比较中缺少的两个词:The new scanner is twice ____ fast ____ the old one.

查看答案

as · as

But is it correct?

2:56

但它正确吗?

Let's see.

2:57

让我们来看看。

Does it work if there are two people in the room?

2:58

如果房间里有两个人,它行得通吗?

In line one, we initialize n to zero.

3:00

在第一行,我们将 n 初始化为零。

For that one pair of people, we then increment n by two.

3:02

对于那一对人,我们将 n 增加二。

And so, by this algorithm's end,

3:06

这样,在这个算法结束时,

n is two, which indeed matches the number of people in the room.

3:08

n 就是二,这确实与房间里的人数相符。

Suppose next that there are zero people in the room.

3:11

接下来假设房间里有零个人。

In line one, we initialize n to zero.

3:13

在第一行,我们将 n 初始化为零。

As before, line three doesn't execute at all, 表達脈絡

3:16

像之前一样,第三行根本没有执行,

表達脈絡

As before:连接到前面相同的情况

As before 表示“和前面的情况一样”。它指回已经讲过的信息,告诉听者当前情况遵循同样的模式。 这里它用来组织说明:第三行仍然不会执行,和前面的情况相同。这里的 As 表示相似,不表示原因。

练习

这里的 As before 起什么作用?The first test had no errors. As before, the second test finished without any errors.

  1. 它表示稍后还会再次进行测试。
  2. 它说明测试没有错误的原因。
  3. 它把这次结果和前一个案例中的相同结果联系起来。
查看答案

它把这次结果和前一个案例中的相同结果联系起来。

since there aren't any pairs of people in the room,

3:18

因为房间里没有任何成对的人,

and so n remains zero,

3:20

所以 n 仍然是零,

which indeed matches the number of people in the room.

3:22

这确实与房间里的人数相符。

But what if there are three people in the room? 語法

3:24

但是如果房间里有三个人呢?

語法

用 What if there are ...? 检验一种可能情况

在这句话中,What if 引入一种假设情况:假设房间里有三个人。说话人不是在确认房间目前有多少人,而是在问这种条件下该方法会得出什么结果。 there are 在这个假设中构成表示“有某些人或事物存在”的部分。这个结构可以用来检验:改变一个条件后,前面的结论、计划或流程是否仍然成立。

练习

用本课标出的四词结构完成问句:____ five passengers in the car?

查看答案

What if there are

How does this algorithm fair?

3:27

这个算法表现如何?

Let's see.

3:29

让我们来看看。

In line one, we initialize n to zero.

3:30

在第一行,我们将 n 初始化为零。

For a pair of those people, we then increment n by two.

3:33

对于这些人中的一对,我们将 n 加二。

But then what? 表達脈絡

3:36

但是接下来呢?

表達脈絡

用 But then what? 指出缺失的下一步

But 表示从前一步转折,then 指向流程中的下一阶段或结果。what 代替了更完整的问题,如 What happens next? 或 What do we do next? But then what? 作为一个独立的短问句,会打断当前说明并暴露缺口:虽然已经讲了一步,但流程还没有完成。它通过追问缺失的下一步来推动推理。

练习

在流程讲解中,But then what? 通常起什么作用?

  1. 回到一个无关的过去事件。
  2. 宣布所有步骤都已完成。
  3. 指出流程走到了一个尚未解决的下一步。
查看答案

指出流程走到了一个尚未解决的下一步。

There isn't another full pair of people in the room,

3:37

房间里没有另外完整的一对人了,

so line two no longer applies. 短語搭配

3:39

所以第二行不再适用。

短語搭配

no longer applies:规则不再适用

本句中,no longer applies 表示第二行原先适合这种情况,但现在所需条件已经不存在,所以不再适用。apply 在这里是“对某种情况适用或有效”,不是“提出申请”。 no longer + 动词 表示从“以前成立”变成“现在不成立”。规则、条件、说明或折扣作主语时,apply 表示它们适用于某种情况。

练习

哪种情况最适合用 The rule no longer applies 来描述?

  1. 有人正在申请制定一条新规则。
  2. 这条规则以前适用于该情况,但某个变化使它现在不再相关。
  3. 这条规则从来没有适用于该情况。
查看答案

这条规则以前适用于该情况,但某个变化使它现在不再相关。

And so, by this algorithm's end,

3:41

这样,在这个算法结束时,

n is still two, which isn't correct.

3:43

n 仍然是二,这是不正确的。

Indeed, this algorithm is said to be buggy, 用詞

3:46

事实上,这个算法可以说是有 bug 的,

because it has a mistake.

3:48

因为它有一个错误。

用詞

buggy:含有缺陷的软件或算法

在技术讨论中,buggy 是形容词,表示软件、算法或功能含有 bug,可能给出错误结果或运行不稳定。本句用它形容一个存在错误的算法。 buggy 比单纯说 wrong 更具体:它指技术系统的设计或实现中有缺陷。这里的 bug 是软件或工程缺陷,不是昆虫。

练习

在技术语境中,哪句话自然地使用了 buggy?

  1. The new app is still buggy and sometimes crashes.
  2. This pencil is buggy because it needs sharpening.
  3. The developer is buggy because she made a typo.
查看答案

The new app is still buggy and sometimes crashes.

Let's redress with some new pseudocode. 用詞

3:49

让我们用一些新的伪代码来纠正。

用詞

redress:正式表示纠正或补救问题

这里的 redress 表示“纠正或补救问题”。说话人正从指出算法中的缺陷转向尝试用新的伪代码修复它。 这个词强调把错误的状况纠正过来;在这里与衣服无关。

练习

在例句中,redress 是什么意思?

  1. 换上不同的衣服
  2. 纠正或补救问题
  3. 用红色写代码
查看答案

纠正或补救问题

Let n equal zero.

3:51

让 n 等于零。

For each pair of people in room,

3:52

对于房间里的一对人,

set n = n + 2.

3:55

设置 n = n + 2。

If one person remains unpaired,

3:57

如果有个人落单,

set n = n + 1.

4:00

设置 n = n + 1。

To solve this particular problem,

4:02

为了解决这个特定的问题,

we've introduced in line four a condition, 用詞

4:03

我们在第四行引入了一个条件,

otherwise known as a branch,

4:06

也被称为分支,

that only executes if there's one person we could not pair with another. 語法

4:08

只有当有一个人无法与别人配对时才会执行。

用詞

a condition, otherwise known as a branch:两个控制流术语

在这段程序讲解中,condition 是决定某段代码是否运行的真/假测试,而 branch 是根据测试结果选择的代码路径或代码块。otherwise known as 在这里把 branch 作为对正在讨论的条件部分的另一种称呼引出来。 这种说法并不完全严谨:condition 是测试,branch 是程序针对某个结果执行的内容。这里,只有当有一个人仍未配对时,相关的 branch 才会运行。

练习

哪一项最准确地说明了 condition 和 branch?

  1. branch 是真/假测试;condition 是根据结果选择的代码路径。
  2. condition 是真/假测试;branch 是根据结果选择的代码路径。
  3. condition 是注释;branch 是文件名。
查看答案

condition 是真/假测试;branch 是根据结果选择的代码路径。

語法

only executes if:说明必需的触发条件

在 only executes if... 中,only 限定的是执行条件:只有 if 从句中的条件成立,动作才可能运行;条件不成立时就不能运行。它不是说这个动作只执行一次。 这个结构把 if 从句作为代码、命令或自动化步骤执行所必需的触发条件。

练习

使用 only executes if 补全条件句:The shutdown command ____ the temperature rises above 40 degrees.

查看答案

only executes if

And so now,

4:12

这样一来,

whether there's one or three or any odd number of people in the room, 語法

4:12

无论房间里有一个人、三个人还是任何奇数个人,

this algorithm will now count them.

4:16

这个算法现在都能将他们数出来了。

語法

whether there's one or three or any odd number:涵盖所有情况

在 whether there's one or three or any odd number... 中,whether 引出多种可能情况,每个 or 再加入一种情况。主句说明这些情况下的结果都相同:算法能统计所有奇数人数的情况。 这里的 whether 不是在提出一般疑问。one 和 three 是例子,any odd number 则把范围扩展到整个奇数类别;整体意思是“不论实际属于哪种情况”。

练习

这里的 whether there's one or three or any odd number 是什么意思?

  1. 算法只在人数恰好为一人或三人时统计。
  2. 说话人正在询问房间里有多少人。
  3. 算法能统计所有奇数人数的情况。
查看答案

算法能统计所有奇数人数的情况。

Can we do even better?

4:18

还能做得更好吗?

Well, we could count in threes or fours or even fives and tens, 短語搭配

4:19

嗯,我们可以一次数三个、四个,甚至五个、十个,

短語搭配

count in threes or fours:按三或四为单位数数

count in threes or fours 表示“按三个或四个为一组或步长来数”。例如,按三来数会得到 3、6、9、12。 结构是 count in + 复数数字词,如 count in twos、count in fives、count in tens。这里的 in 表示每组的数量或每次计数的步长,不表示地点。

练习

请用 in + 复数数字词补全句子,使计数每次增加三:Let's count ____: three, six, nine, twelve.

查看答案

in threes

but beyond that it's going to get a little bit difficult to point. 講解

4:23

但是超过这个数,就很难用手指了。

短語搭配

beyond that:超过刚才提到的限制

在本句中,beyond that 表示“超过刚才提到的范围或限制”。that 回指前面讨论的较大计数步长,beyond 则表示如果再往上增加,用手指点数会更困难。 beyond 不只表示物理空间。可迁移的 beyond that 常表示“如果超过那个数字、程度、阶段或限制”。

练习

在句子 “The first ten pages are easy, but beyond that the material gets harder,” 中,beyond that 是什么意思?

  1. 书的后面
  2. 前十页之后
  3. 还没到第十页
查看答案

前十页之后

語法

get a little bit difficult to point:变得有点难以指认

这里的 get 表示“变得”:原本还容易做的动作后来更难了。a little bit 缓和了 difficult 的程度,所以意思是“有点难”,不是“完全做不到”。 to point 这个不定式说明变难的是哪一个动作。在本句中,point 是动词,表示“用手指逐一指认”,不是表示“观点”或“分数”的名词。

练习

用表示“变得有点难以……”的目标短语补全句子:When the directions include too many steps, they ____ follow.

查看答案

get a little bit difficult to

At the end of the day, 習語

4:26

归根结底,

whether executed by computers or humans, 語法

4:27

无论是计算机还是人类执行,

algorithms are just a set of instructions with which to solve problems. 語法

4:30

算法都只是用于解决问题的一套指令。

習語

At the end of the day:引出最终结论

At the end of the day 是习语,意思是“把所有细节都考虑过后”或“归根结底”。它表示说话人要从补充细节转到主要结论,并不是指傍晚的某个时间。 这里,它把后面的内容标记为需要记住的核心定义:无论由电脑还是人来执行,算法都是解决问题的指令。

练习

用引出实际最终结论的习语补全句子:____, the team needs a plan everyone can follow.

查看答案

At the end of the day

語法

whether executed by computers or humans:精简的被动 whether 分句

完整形式是 whether algorithms are executed by computers or humans。这里省略了重复的主语 algorithms 和被动结构所需的 be 动词,因为可以从主句中补出来。 这个精简分句添加了一个条件,表示两种执行者中无论是哪一种都不影响结论。它修饰 algorithms,并为主句作铺垫;它不是另一个主句。

练习

哪一个完整分句最准确地展开了例句中的 whether executed by computers or humans?

  1. whether they are executed by computers or humans
  2. whether computers are executed by humans
  3. whether they execute computers or humans
查看答案

whether they are executed by computers or humans

語法

with which to solve problems:正式表达所用手段

with which to solve problems 修饰 a set of instructions。which 回指这组指令,with 表明这些指令是解决问题时使用的手段。 “名词 + 介词 + which + to 不定式”是一种简洁、正式的结构,用来表达某物可能的用途。这里表示“某人可以用来解决问题的一组指令”;并不是说 instructions 在语法上是 solve 的执行者。

练习

哪一个选项最准确地改述了 a set of instructions with which to solve problems?

  1. a set of instructions that solve every problem by themselves
  2. a set of instructions that someone must solve
  3. a set of instructions that someone can use to solve problems
查看答案

a set of instructions that someone can use to solve problems

These were just three.

4:33

这只是其中三种。

What problem would you solve with an algorithm? 語氣意圖

4:35

你会用算法解决什么问题呢?

語氣意圖

What problem would you solve...?:邀请对方设想一种选择

What problem would you solve...? 是一个开放式问题,邀请听者设想一种可能的选择,并把某个概念联系到自己的情境。它不要求唯一答案。 这里的 would 建立了一个假设性选择:如果你可以使用算法,你会选择解决哪个问题?在这个问题中,它不表示过去。

练习

在 What problem would you solve with an algorithm? 中,would 的主要作用是什么?

  1. 命令听者解决某个特定问题。
  2. 询问一个过去已经解决的问题。
  3. 邀请听者设想一种可能的选择。
查看答案

邀请听者设想一种可能的选择。