作為程序員如何學(xué)英語的一點(diǎn)經(jīng)驗(yàn)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/3/27 16:31:09 ] 推薦標(biāo)簽:
總的來說,程序員可算是英語水平比較好的群體,因?yàn)樵谶@個(gè)行業(yè),英文資料是全面、及時(shí),對英文資料的需求也迫切的。因此,我的觀察,即便剛?cè)腴T不久的程序員,面對陌生的問題,一般也能查閱英文文檔,找到需要的信息。但是另一方面,我也發(fā)現(xiàn),經(jīng)常閱讀英文文檔的程序員,英語水平許多時(shí)候卻不像“經(jīng)常閱讀英文”的樣子。應(yīng)《程序員》的編輯邀約,我在這里列幾點(diǎn)自己的學(xué)習(xí)心得,供大家參考。
第一,讀文檔不能只讀代碼。
讀文檔只讀代碼,是很多程序員的習(xí)慣,也是導(dǎo)致程序員雖然讀了很多英文資料,英文水平卻沒有相應(yīng)提高的原因之一。以前曾在《程序員》上看到介紹閱讀技術(shù)圖書方法的文章,提出過“先代碼后文字”的方法,也是“先看代碼,看不明白再看文字”。這種閱讀法能極大提高閱讀效率,但如果技術(shù)圖書只看代碼足夠,還要文字干什么呢?很多時(shí)候,代碼只是冰山一角,代碼背后的思維和邏輯才是真正的重頭戲,只有寫成文字才能解釋,也只有閱讀文字才能理解。
比如,代碼都是 x = 5; 有時(shí)的說明是x should be not more than five,有時(shí)的說明是x should be no more than five。不查詞典,你能弄清楚兩種說法的區(qū)別嗎??前者是“x必須小于等于5”,后者是“x應(yīng)當(dāng)只有5”,意思不同,應(yīng)用的方法與場合也不相同。
這些年來經(jīng)常有希望翻譯技術(shù)文檔的程序員來找我討論翻譯問題,希望了解一些句子應(yīng)該如何表達(dá)。一開始,我也認(rèn)為這是中文表達(dá)的問題,但后來逐漸發(fā)現(xiàn),其實(shí)更多的問題出在英文閱讀上,所以我的回答經(jīng)常是:你覺得作者這里說的是什么意思?引導(dǎo)對方把原文的意思逐步表達(dá)出來,其實(shí)這時(shí)候,真正的譯文已經(jīng)浮出水面了。
近的例子來自這句話:But as with any web-based system, atom-based solutions trade scalability for latency, making atom often inappropriate for very low-latency notifications。這句話之所以難翻譯,問題似乎在于,除去句子的主干,之前有一個(gè)But as…, 之后又有一個(gè)making…。然而我后發(fā)現(xiàn),對這個(gè)句子有疑問的程序員其實(shí)根本沒搞懂trade…for…的用法(翻譯為“基于atom的解決方案需要權(quán)衡延遲和性擴(kuò)展性”),如果明白它是“犧牲xx換取xx”之后,整個(gè)句子相當(dāng)好理解,也非常容易翻譯了:與所有基于web的系統(tǒng)一樣,基于atom的解決方案為追求可擴(kuò)展性,增大了延遲,所以atom通常并不適用要求極低延遲的提示。
要解決這個(gè)問題,首先要做的是改變“只看代碼不看文字”的習(xí)慣,至少要做到“閱讀文字之后,認(rèn)識(shí)到它的意思與代碼是一致的”;另一個(gè)有效的辦法是通過閱讀純文字的英文資料來學(xué)習(xí)某些新的知識(shí)(比如關(guān)于深入原理的細(xì)致講解),這個(gè)方法我推薦給許多朋友,非常有效。
第二,注意讀音。
以前總聽人說,中國人學(xué)了很多年英語,其實(shí)是啞巴英語。不知道現(xiàn)在的情況有多少改觀,但我所見,不少程序員雖然閱讀了大量英文資料,也會(huì)加入英文的討論組,也敢開口說,但是還會(huì)在讀音上出現(xiàn)許多問題。這里說的“讀音”,并不是字正腔圓的口音,而是一些術(shù)語的讀音。
計(jì)算機(jī)科學(xué)的術(shù)語來源非常廣泛。比如設(shè)計(jì)模式里,有一種模式叫Facade,許多人往往直接讀作’fək?:d,其實(shí)這個(gè)詞來自法文,正確的讀音其實(shí)是fə’s?:d;再比如偽代碼的“偽”pseudo,正確的讀音是’su:dəʊ,但是我很少遇到程序員能把它讀對,許多人干脆不會(huì)發(fā)這個(gè)音。
也許有人說,這些問題不重要,大家“將錯(cuò)錯(cuò)”,約定俗成了,但事情沒有這么簡單。近我參見某個(gè)技術(shù)聚會(huì),有一位嘉賓(技術(shù)高手)把框架名chameleon(變色龍)讀成了’tʃəmiljən,而正確的讀音是kə’miljən,因?yàn)闆]有文字資料,許多人聽了半天才知道他說的是什么,一些不熟悉chameleon的聽眾更是到結(jié)束也沒明白。中國人聚會(huì)尚且如此,如果有機(jī)會(huì)參加中外技術(shù)交流,讀錯(cuò)造成的問題更大了。
要解決這個(gè)問題,有一個(gè)非常好的辦法,是學(xué)習(xí)美國大學(xué)的公開課,耶魯、斯坦福等學(xué)校的計(jì)算機(jī)系都放出了許多高質(zhì)量的公開課,學(xué)習(xí)其中的一些精品課程,不但能夯實(shí)基礎(chǔ),還能順帶學(xué)會(huì)許多每天都要遇到,但不會(huì)或者讀錯(cuò)的術(shù)語。比如我從中學(xué)到,數(shù)據(jù)類型char的讀音是k?:,而不是tʃ?:。
第三,鍛煉英文表達(dá)。
如果你背過單詞,大概聽到過“被動(dòng)單詞”和“主動(dòng)單詞”的說法,前者是指“看到了能認(rèn)出來”的單詞,后者指“表達(dá)時(shí)能主動(dòng)應(yīng)用”的單詞。我的觀察,許多程序員掌握的大多數(shù)英語,都屬于“被動(dòng)英語”??看到了能認(rèn)識(shí),但要表達(dá)同樣的意思,未必說得出來。
平時(shí)這樣似乎沒有問題,但如果要查閱資料,不會(huì)表達(dá)造成了大的障礙。相比中文技術(shù)資料世界中“無責(zé)任/不負(fù)責(zé)轉(zhuǎn)貼”泛濫的情況,英文技術(shù)資料的質(zhì)量要高得多,Google搜索資料的準(zhǔn)確性也遠(yuǎn)高于百度;但是,要能夠順利應(yīng)用英文資料,需要“主動(dòng)”輸入信息,描述問題,這時(shí)候“被動(dòng)英語”成了大問題。
我遇到過很多次這樣的情況:即便答案近在咫尺,輸入正確的關(guān)鍵詞,Google的第一條結(jié)果是答案,但程序員是一籌莫展??因?yàn)樗恢烙?jì)算機(jī)的“嘟嘟”聲是beep,不知道搜“多線程”資料應(yīng)該用concurrency,也不知道“死機(jī)”是system halt,“黑屏”是blank screen,“(登錄時(shí))不停返回”是infinite loop……
要解決這個(gè)問題,好的辦法是在閱讀資料時(shí)多用心,記住這些說法;另一方面,沒事的時(shí)候多瀏覽stackoverflow之類的網(wǎng)站,不要因?yàn)閱栴}與自己無關(guān)而忽略,多留心這些問題到底是什么,是如何表達(dá)的。這樣,在自己遇到問題時(shí),才能迅速找到可能的解決方案,節(jié)省時(shí)間。
有人說,以漢語為母語的程序員,學(xué)習(xí)英語已經(jīng)是迫不得已,不但要會(huì)閱讀,還要會(huì)讀、會(huì)表達(dá),真是難上加難。這種說法有一定道理,但是在目前并沒有更好的解決方案,學(xué)會(huì)閱讀、認(rèn)準(zhǔn)讀音、鍛煉表達(dá),確實(shí)可以給自己帶來好處。長遠(yuǎn)來看,要改變這種情況,需要中文技術(shù)圈的所有人員努力貢獻(xiàn)高質(zhì)量的資料(原創(chuàng)和翻譯都可以),如果只是“無責(zé)任轉(zhuǎn)貼”,既不親自驗(yàn)證,也不整理格式,中文技術(shù)資料的整體質(zhì)量只會(huì)持續(xù)惡化,反向逼迫更多的人把英語學(xué)好。
相關(guān)推薦

最新發(fā)布
性能測試之測試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測試是從什么時(shí)候開始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動(dòng)化測試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項(xiàng)目適合做自動(dòng)化?自動(dòng)化測試人員應(yīng)具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測試工具測評
2020/7/17 8:52:11RPA機(jī)器人能夠快速響應(yīng)企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測試基本概念是怎么來的?軟件測試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10