[程式]從程式設計開始的英文教室 (1. 字尾概念篇)

Pochang Lee
English4Formosa
Published in
13 min readNov 28, 2019

各位程式設計的先進大大,安安~

我是英語教學平台 English4Formosa 的工程師。因為個人經歷的關係,英語一直是我學習技術過程中的一大助力。這些年雖然我也很想讓大家實際體會學英文的帶來的好處,但礙於對英語教學的陌生,所以一直沒法下手。幸好因為長期與敝平台的教師合作久了,也學到了點皮毛。現在的我覺得可以嘗試對軟體工程師進行英文的傳教活動了。所以才在本站的教師與高雄Python學院的協助下,寫了這篇文章。

我在寫這系列的文章時設定的閱讀者是

  1. 英文程度至少高一以上。
  2. 有一年以上的程式設計實務基礎,或是本科畢業生
    (Python 為佳,主要是解釋概念時的選字或舉例偏好)
  3. 勉強可以讀技術文件,但英文能力培養不起來的人

所以,如果閱讀本篇文章過程中常常遇到障礙,又不符合以上述條件1, 2的話只能抱歉了。我不懂通用的英文教學。

喔對了,這篇有業配,在最下面,先打個預防針。

字尾 ?

在我們開始舉例前,先來講講字尾大概是什麼。

字尾是加在單字後面,用來修飾單字的字母組合

字尾的主要目的是在單字的尾端修飾整個單字,在英文裡比較常見的功能是做詞性的修飾。像是 recursive後面的 ive 就是一個常見的用法,將動詞 recur (再發生) 轉換成形容詞 recursive (遞迴的) 或是加上 ion 的 recursion (遞迴),都是在原本的字 (recur) 上進行詞性的修飾,然後再由原本的意思(再發生) 延伸出稍稍不一樣的概念。

接下來,我只會針對字尾的部份做文章,不會太專住在單字解釋或其它運用的部份。一步一步來,先建立觀念,未來的文章才會慢慢加入其它的元素。

字尾的正確開啟方式

字首字根字尾是拆解單字的 3 大重要主題。雖然字尾是對字義本身影嚮最小的。但是…

「字尾」 卻是 「字首字根字尾」 裡最重要的!!

主要是有幾個原因啦

理由1. 剝繭抽絲

常用的程式設計模式 decorator pattern (裝飾者模式) 裡的單字 decorator (裝飾者) 是個很適合用來解釋這概念的例子。因為「字尾就是個放在單字尾端的裝飾者」

decorator 有個常見的字尾 or,字尾 or 有 「人」 的概念在裡面。當拿掉 or 後,顯示出來的就是 decorate (裝飾)。

反之 decorate (裝飾)+ or (人) = 裝飾的人 = 裝飾者 = decorator

decorate(裝飾) + or (人) = decorator (裝飾者)

這樣一來,我們在學會 decorator 的同時,也學會了 decorate 這個字

但是故事並沒有結束

當更熟悉字尾後,會發現 decorate 還有個字尾 “ate”。而它修飾的單字是一個較為困難的單字 “decor” 意思是名詞”裝飾”

如果對字尾不熟悉的人,在第一次見到 decor 時,可能會一點辦法都沒有。但熟悉字尾概念的朋友,會在一開始學 decorator 時,順便學會 decor 這個字。

單字在一層層的抽絲剝繭後,通常可以得到這個單字最核心的概念和它組成的基本元素,像是 decorate => decor (裝飾)+ ate (動詞)。將單字拆分為更單純的小元素,再個別理解,最後整合,就可以收集到關於單字定義的提示。是不是有點像是演算法裡的 divide and conquer (分治法)。直接背單字,可能有點難。但如果細分成較單純又常見的元素,事情就容易了一些。

理由2. 很好延伸

在上面那個例子裡,我們知道 decorator 可以學到 decor。
但如果有人先學會 decor ,順便學會 decorator 也只需多花一些力氣。與背全新的單字相比,複雜度低很多

那問題來了,那可否從 decor 開始順便學其它的單字?

[森林圖] decor 可延伸的單字

上圖是 decor 相關的延伸單字,所以 decor 可以順便學其它單字!很好,很友善!!

然後回到為什麼要先學字尾,因為在這森林圖裡,16個單字有11個都只是單純加字尾形成的新的字。所以這裡有 7 成的單字都可因為熟悉字尾而順便學一下。效率很高!

想想看,早就熟到不能再熟的專業名詞 decorator 可以讓你順便學到 decorousness 這種稍難的考試才會看到的單字,而且還不只一個單字。如果你是常啃國外專業文件的朋友,那你就有足夠的本錢去擴張你的單字量。因為 decorator 並不是特例。越複雜或專業的單字,越有機會可以分解。而 decor 也不是特例。概念越簡單的字,越有可能可以延伸。

理由 3. 拔草測風向

awaitable 這是個出現在 Python 官方文件裡的單字,但基本上你不會在任何字典裡見到。也不會有人沒事去把這個字翻譯成中文,或是特地寫下它的定義然後放到字典裡。

但是!它有個常見字尾 ”able” !!

看到不會的字有字尾時,第一件事就是拔草測風向

先把字尾拔掉再觀察!

當我們從 awaitable 拔掉字尾 able 的時候,就剩下 await 這個字。寫過非同步或看過相關文章的大大,應該會熟 await 這個字。很多時候,難的單字你只要拔掉字尾,就會出現熟悉的單字。然後你就懂5, 6成了。這才是學字尾的最強奧義。因為它簡單常見又最容易上手。

理由 4. 詞性判斷

這裡要來舉個句子當例子

John is precautious about bad code, so he always documents his work carefully. (喬對壞的程式碼很 precautious,所以他總是很仔細的寫文件碼。)

這是個架構單純,只用了一個較難單字 “precautious” 的句子

當看到不會的單字時,老實說還蠻多人會不知所措,甚至會直接放棄。但我想講的是「就算看不懂,仍然有辦法」。

單字背了就忘,這事就算已經在美國生活了,面對不常用的單字,可能還是一樣。所以它就是個常態。有趣的是,習慣英語的人士對於這個情況並非束手無策,他們有獨特的單字直覺可以推敲出單字的意思。我無法教你英文高手的單字直覺,但我可以分享一個不依賴直覺的方法。程式設計界有個童子軍法則可以參照在這情境

“Always leave the code you’re editing a little better than you found it (離開編輯中的程式碼前,讓它變得比你剛看到時更好一點)” — Robert C. Martin (Uncle bob)

這是一個重構程式碼的方法,重點在確實的優化。每一次更動都要比上次好一些。讓我們用同樣的脈絡,修改成英文學習單字的版本

查單字前,要比剛看到它時更懂它一點

看到不懂的單字就立刻查單字,在我們的教學理念裡不是個好習慣。先想, 再猜,最後才是查單字。猜單字其實是個可以訓練的能力,不要因為看不懂,就浪費了你可以練習猜單字的機會。

precautious 對有些人來說或許算難字,但如果熟悉字尾的人,就不難發現 ous 的字尾,它是形容詞字尾。也就是說 precautious 是形容詞。

那我們可以再回到原先的句子。

John is <某形容詞> about bad code, so he always documents his work carefully. (喬對壞的程式碼很 <某形容詞>,所以他總是很仔細的寫文件碼。)

既然知道 precautious 是形容詞,那根據這句子的架構,也可以得知 precautious 是用來形容 John 對壞程式碼的態度。即使不懂這字什麼意思,知道詞性也比什麼都不懂強。再搭配上下的文意,就有機會猜中它的意思。這時再拿出字典,驗證你的猜想,修正猜單字的策略,下一次會猜更準。

這裡想強調的是什麼?
知道詞性 -> 判斷句子結構 -> 可以猜字義 -> 可以累積猜單字的經驗

這次猜中 50% 的意思,下次能猜中 60% 嗎?

單字也許會再忘,但別忘了邏輯與方法才是我們的專長。透過邏輯,我們可以抓出重點。透過修正策略,我們可以逼近理想值。這才是工程師真正的強悍之處。恰巧英文的造字是有邏輯的,猜單字是有策略的。所以英文是工程師可以發揮專長的領域。好字尾不學嗎?

最後,如果在查字典前,就可以猜中單字 50% 的意思。那背單字還會難嗎?

好啦。我知道字尾了…那要怎麼背?

不要背!!!拜託

在觀看這文章的朋友應該沒有認識會背 hello world 程式碼的工程師吧?
我們能信手拈來小程式或快速上手不熟悉的函式庫
應該不會是因為背過,而是我們綜合過去的經驗才能辦到
但卻精準到不會忘記任何一個必要的符號與動作

既然這篇是寫給工程師看的
這篇文章,就沒有 「需要優秀的記憶力」 這樣的前提

我在這裡想導入一個敝站教學最核心的概念

「已知導未知」

將已知的資訊 (經驗,眼前的資訊) 推導出未知部份的資訊 (未掌握的單字)

讓我們回到之前的範例單字 precautious
當開始意識到字尾並熟悉之後,未來再看到這單字可能會想問幾個問題

1. ous 是什麼詞性?
2. ous 有什麼意思?

想找出問題的答案,你該做的是 「從記憶中找出 2 個以上用 ous 結尾的單字 」 越簡單越好,能找出 3 個以上為佳

我使用的單字分別是 dangerous,famous,delicious
意思分別是 「危險的」 ,「有名的」 與 「好吃的」

接者只要回答下面的問題就行了

1. 「危險的」 「有名的」 「好吃的」 這3者共同的詞性是什麼?答: 都是形容詞

2. 「危險的」 「有名的」 「好吃的」 這3者共有的概念是什麼?答: 沒有

將 「已學會」 的單字運用在逼近未知單字的定義,這過程就是 「已知導未知」

當我們確定 ous 是單純的形容詞結尾後,就可以查字典了

請記住,猜完再查字典

每次背單字,並不光只是為了記住這個一個單字的意義,也是為了更精準的猜測下一個未知單字的意義。所以看到還不熟的單字,請先猜測,才有辦法修正猜單字的策略。不然永遠都只是在背新單字而已。

那我們再試試另一個上面提到的範例字 awaitable

awaitable 有個常見字尾 ”able”

跟 able 相關的單字有 available,portable,countable 分別是 「可用的」,「可攜帶的」,「可計算的」

那再回答一樣的問題
1. 「可用的」,「可攜帶的」,「可計算的」 的共同的詞性是什麼?答: 形容詞
2. 「可用的」,「可攜帶的」,「可計算的」 的共有的概念是什麼?答: 可以的

把 able 從 awaitable 裡拆開,會得到 await + able

await + able = await + 可以的 = 可以 await 的

如果懂 await 的概念,也懂字尾的 able
那 awaitable 就已經懂了80%了

雖然字典沒有這個字,但仍可以用 Python 官方文件的定義對答案

We say that an object is an awaitable object if it can be used in an await expression。(可以被用在 await 表達式裡的物件,我們稱之為 awaitable)

別說 80%了,awaitable 根本與我預測的意思一模一樣。這就是專業單字的便利之處。只要有相關領域的專業知識,就可以對單字的意思做出相當精準的猜測。

如果 able 的一個例字都舉不出來怎麼辦

初期的時候,舉例字的方法偶爾會不靈光,可能是還不習慣舉例或是字彙量過少。還不習慣舉例的話,我們有個記憶救星的方法。

不習慣舉例字的人點我看記憶救星方法

如果一個 able 字尾的字都不認識的話,還有個好方法,那就是

「背!」

背你眼前的這個字,並拿這個字當做以後 able 的例字。

雖然我說過我們的方法不需要優秀的記憶力。但當你沒有任何資訊做為推理的依據時,還是有回歸原始作法的選項。不必擔心背了會浪費時間,因為背了一個字尾 able 的字,下次看到 able 就會有依據了,並可以應用到未來所有含有 able 字尾的單字,C/P 值還是很高的

常見的字尾的類型

ly: 副詞
iteratively — 疊代地
finally — 最終
recursively — 遞迴
immediately — 立即

ate: 動詞
iterate — 疊代/重覆
automate — 自動
evaluate — 求值/評估

ive: 形容詞
iterative — 疊代的
recursive — 遞迴的
iteractive — 互動的

ion: 名詞
iteration — 疊代
computation — 計算
permission — 許可
exception — 例外

字尾依詞性可以粗淺的分為 [副詞, 動詞, 形容詞, 名詞] 四種 (口訣: 副動形名)。如果平時在看英文文章時,在單字後面看到某些常出現的字母組合,不仿猜猜看它屬於哪種詞性。久了也可以培養對字尾的敏感度。

錯誤的字尾開啟方法 — 造字

不要自己造字,因為會造成看的人混亂。

我可以隨手創個單字 againable 然後用在某個句子裡

The lab result is againable. (實驗結果是可以再來一次的)

但我敢保證大部份看到這句子的人,即使看得懂造字的邏輯,頭上也會有一堆問號。這字有幾個問題

  1. 它不精準。
  2. 沒人在用這個字。

與其造這個,不如換成下面的字

The lab result is reproducible. (實驗結果是可複製的)

這句子比上個句子更有描述性。我舉這例子是想說,絕大部份情況,都沒有造字的必要。英文裡已經有很多精準且好理解的單字,可以適用於絕大多數的情境。不需要增加額外的溝通門檻。

為什麼我要針對工程師寫英文教學

理由1. 不必從 0 開始

工程師學英文有一個優勢,就是工程師有專業英文單字的基礎。不必因為只懂專業名詞而覺得無奈。專業名詞會成為很好的出發點。因為專業單字都是些適合拆解,方便學習和理解的優良學習單字。專業文章通常也有很好的脈絡,遇到不懂的字也很適合推敲。工程師的英文起點… 很高。

理由2. 有實際使用英文的需求

很難相信有工程師能在不接觸英文的前提下繼續混下去,這代表工程師有很多機會可以練習英文。這比單純為了唸英文而唸輕鬆多了。工程師可以一直在自己英文的舒適圈不斷擴張,直到有一天發現 “啊,我的舒適圈真大”。

理由3. 業配

創… 創業維艱啊…

如果覺得本篇文內容還行,也有實際的英語需求,可以考慮我們的網站服務

點我前往 English4Formosa

這是個工具網站
所有的功能都是為了方便實踐我們的教學方法而設計的
未來我們還有更多英文學習的方法會陸續與大家分享
如果覺得我們的方法很對您的胃口,或是親朋好友有需求
也請支援一下本站

這文章使用到的網站相關功能

點我看如何查詢分解圖

點我看如何查詢森林圖

下一篇會嘗試講一下字首

要解鎖字首了,能講的東西更完整了
有興趣的人還請追蹤一下 English4Formosa

本系列由英語教學平台 English4Formosa 贊助
官網在這兒 https://english4formosa.com/
我們也有 FB https://www.facebook.com/English4Formosa/

本文也感謝 「高雄 Python 學院」 的經驗分享與技術支援
看完本文後想學程式設計的朋友,可以嘗試與他們聯絡
高雄 Python 學院的 FB https://www.facebook.com/KHPYAcademy/

轉貼請附上文章出處

--

--