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