什麼是演算法? - 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. 它是程式執行時發現的錯誤清單。
  2. 它是必須嚴格遵守某種程式語言規則的 source code。
  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 的值被刪除
  2. 程式檢查 n 是否等於 n + 1
  3. 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. After all the work, we went home.
  2. We checked the map after all the visitors left.
  3. We should check the map; after all, this is our first visit.
查看答案

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 because the power goes out?
  2. Does it work, so the power goes out?
  3. Does it work if 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 at 5 p.m.
  2. The report must be finished by 5 p.m.
  3. The report must be worked on through 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. This pencil is buggy because it needs sharpening.
  2. The new app is still buggy and sometimes crashes.
  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. condition 是註解;branch 是檔案名稱。
  2. branch 是真/假測試;condition 是依結果選擇的程式碼路徑。
  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 someone must solve
  2. a set of instructions that someone can use to solve problems
  3. a set of instructions that solve every problem by themselves
查看答案

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. 邀請聽者想像一種可能的選擇。
查看答案

邀請聽者想像一種可能的選擇。