程序員為什么不能只學(xué)好“專業(yè)英語”?
97 2017-04-11
在我上大學(xué)的時候,除去普通的英語課程,專業(yè)課程里還有一門《計算機英語》。當(dāng)時大家的普遍認(rèn)為,普通的“英語”是過四六級用的,《計算機英語》才是專業(yè)真正需要的。
等到工作了,我發(fā)現(xiàn)很多人都持這樣的觀點:程序員應(yīng)該學(xué)好英語。這樣才能方便地查找資料,迅速地學(xué)習(xí)最新的知識。換句話說,“學(xué)好英語”在很多人看來,就是是“學(xué)好專業(yè)英語”——這項要求已經(jīng)很高了,我曾經(jīng)在《程序員要怎樣學(xué)英語》里提到,不但要能看懂文檔,還要知道“黑屏”是blankscreen,“死機”是systemhalt,否則查找就會很費力。
但是今天我想強調(diào)的是,對程序員來說,學(xué)好“英語”而不是“專業(yè)英語”是非常重要的。只學(xué)好專業(yè)英語,看得了技術(shù)文檔,但那一大堆專業(yè)術(shù)語和概念可能會像隕石一樣,沒來由地墜落下來,只能生吞活剝地硬背。如果學(xué)好英語,你才會有融會貫通的感覺,知道那些術(shù)語和概念原來是從地里長出來的,底下連著根莖。
程序員經(jīng)常被認(rèn)為是呆頭呆腦的古怪家伙,講一口外人聽不懂的語言,其實技術(shù)世界里的很多術(shù)語都是從生活經(jīng)驗中借鑒而來,是非常形象而有趣的??上В@些意味和趣味無法通過翻譯傳遞,也很難在硬邦邦地研讀時體會到。所以如果你只看中文資料,或者以學(xué)習(xí)“專業(yè)英語”的態(tài)度來對待,即便能記住,也只能硬背下來。天長日久,“古怪”的感覺也就油然而生了。
比如說cache和buffer,這兩個英文單詞是完全不一樣的,但中文分別翻譯為“緩存”和“緩沖”,看起來非常像,很多人確實會搞混(不要吃驚,我的面試經(jīng)歷已經(jīng)證明了)。分得清的人都知道,“緩存”是cache,“緩沖”是buffer,不過其中還有些麻煩,因為“緩存”很多時候是用于讀取的,“緩沖”很多時候是用于寫入的。為避免混淆,很多人干脆放棄中文直接說英文,這確實是一種有效的辦法,但是cache和buffer到底是什么意思呢,它們是天上掉下來的,還是地里長出來的?答案是后者。
cache在“緩存”的含義誕生之前就存在了,意思是asecretplaceofstorage,也就是“用于存放物品的隱蔽區(qū)域”,比如動物貯存食物的地方,或者人類埋藏金幣的秘穴。所以用cache來命名計算機中的“緩存”是非常恰當(dāng)?shù)模篶ache把數(shù)據(jù)存儲起來加快讀取,而且它必須是隱蔽的。我已經(jīng)見過無數(shù)程序員寫的不透明緩存了,這種“緩存”必須改動主線業(yè)務(wù),使用和維護都異常麻煩,如果程序員多懂一點英文,知道cache原本的意思,問題會少很多吧。
buffer也是這樣,它原本的意思是devicesorpiecesofmaterialforreducingshockordamageduetocontact,也就是“用來減少接觸時產(chǎn)生的震蕩或損壞的裝置或材料”,比如為了用于逃生的氣墊,或者汽車上用的減震器。用buffer來命名計算機中的“緩沖”也是非常巧妙的:buffer用來解決兩種設(shè)備在數(shù)據(jù)交互時的數(shù)據(jù)丟失(或者阻塞等待)的問題。我讀大學(xué)的時候,老師特意強調(diào)“緩沖是用來解決速度不匹配的問題”,讓大家印象深刻。但是如果大家多懂一點英文,知道buffer原本的意思,估計不用老師強調(diào)自己也能理解了。
再比如serialize和flatten,這兩個單詞Java程序員都熟悉,其它程序員也不會陌生。前者是“序列化”或者“串行化”嘛;后者,嗯,有些人翻譯為“扁平化”,還有些人干脆不翻譯,就叫flatten好了??傊?,這兩個詞都比較難記憶,給其他人解釋的時候也很麻煩。
文檔里是這么描述serialize的:theobjectcanbeflattenedintobytesandsubsequentlyinflatedinthefuture。不妨看看flat和serial原本的意思。flatten的意思是“打扁、推倒”,serial的意思是“無間隔的規(guī)律擺放”。這樣看來,整個描述是非常形象了:“序列化”指的是把對象拆散成一堆緊密碼放好的字節(jié)(也就是字節(jié)數(shù)組啦),之后還能組裝起來。有很多人糾結(jié)serialize到底是“序列化”還是“串行化”,如果你懂得seralize和flatten的真正意思就會知道,“序列化”還是“串行化”都不合適,但是,也無所謂。
沒錯,程序員面對的是機器和科技,但這并不意味著他們的工作就沒有任何樂趣,就需要硬生生造出很多“天外飛仙”一般的術(shù)語。恰恰相反,許多技術(shù)術(shù)語都像莊稼一樣,把生活經(jīng)驗當(dāng)成誕生的土壤,所以顯得非常生動形象。如果程序員的母語是英語,他看到cache,buffer,serialize,flatten之類的單詞,雖然也要學(xué)習(xí)其專業(yè)含義,但有背景知識和生活經(jīng)驗可以借鑒,所以“背靠大樹好乘涼”。但如果程序員的母語是中文,英文又不夠好,就沒有這種優(yōu)勢,那些專業(yè)術(shù)語就像隕石雨一樣難以理解和應(yīng)付,只能生吞活剝,麻煩不說,久而久之也容易變得無趣。
有人說,好的翻譯可以解決這種問題。一定程度上來說確實如此,比如董樂山先生當(dāng)年翻譯的“導(dǎo)彈”,朗朗上口又生動形象,大家一聽都明白。可惜如今這樣用心的翻譯家已經(jīng)太少了,加上新單詞出現(xiàn)太快,翻譯的速度根本跟不上。所以對程序員來說,真正的出路還在于自己,不要自我束縛在“專業(yè)英語”的世界里,而是要認(rèn)真完整地學(xué)英語,了解英文單詞本來的意思,真正懂得用英語思考和理解世界,才能收獲融會貫通的效果。
當(dāng)然,這個道理反過來也是成立的,還記得前不久被關(guān)掉的“曲徑”嗎?它的命名和cache,buffer,serialize等等一樣,其中的邏輯“不足為外人道也”,老外程序員如果只懂中文技術(shù)資料,看到這個名字多半也要撓頭瞪眼了。
溫馨提示:
專業(yè)老師1對1為您解答 馬上填寫,¥1000 元豪禮免費領(lǐng)!
掃一掃
獲取更多福利
獵學(xué)網(wǎng)企業(yè)微信
獵學(xué)網(wǎng)訂閱號
獵學(xué)網(wǎng)服務(wù)號