`我每天都面對(duì)電腦, 老婆孩子便以為這不過是與機(jī)器為伍。雖看似有理, 但有失“偏頗”。 記得有天晚上, 老婆問我編程語言如何運(yùn)行, 我便解釋CPU的原理, 雖并未完全聽懂, 但她依舊興趣盎然。 我想, 不如寫幾篇文章, 來解釋我為何“沉迷”于此, 且多次說過至死方休。望日后孩子也可了解這個(gè)"宅"爸爸。
“程序員”存在的原因, 是因?yàn)橛?jì)算機(jī)不理解人類語言。
人類的語言復(fù)雜且隱晦,而編程語言簡單而直白。
有種影響甚廣的觀點(diǎn): 偉大的設(shè)計(jì)即簡單的設(shè)計(jì)。 計(jì)算機(jī)行業(yè)更是將此奉為圭臬。
但現(xiàn)實(shí)是復(fù)雜的。
土星五火箭有700萬個(gè)零件, Linux內(nèi)核代碼早已超過千萬行, 連樂高直升飛機(jī)有幾百塊積木,孩子安裝了4個(gè)小時(shí)才完工。
很多零件和代碼都是“冗余”的, 丟掉一兩塊非關(guān)鍵積木也能把玩具組裝起來。阿波羅13號(hào)殘缺不全的也返回了地球。一個(gè)腎也可以活。所以適度的“冗余”是非常必要的。
“冗余”并非“多余”,無論是人類語言還是計(jì)算機(jī)語言。遺憾的是,因?yàn)閷?duì)“偉大的設(shè)計(jì)即簡單的設(shè)計(jì)”太過執(zhí)著, 許多計(jì)算機(jī)語言的設(shè)計(jì)者過分簡化了其設(shè)計(jì),卻把復(fù)雜性交給了程序員。
比如: Time flies like an arrow. 這句話對(duì)人容易理解,但是對(duì)計(jì)算機(jī)會(huì)有困難,因?yàn)閒lies還是蒼蠅的復(fù)數(shù)形式。這時(shí)候就需要程序員編寫算法來消除歧義。
一些隨時(shí)出現(xiàn)的新興詞匯,如“娘炮請(qǐng)自重”“喜大普奔”等等,讓電腦理解起來就更是難上加難了。
程序員這個(gè)職業(yè)會(huì)在哪天消失呢? 我想應(yīng)該在計(jì)算機(jī)和人類無障礙溝通的那一天吧。
總結(jié)一下:
- 計(jì)算機(jī)不能理解人類的語言
- 人類語言復(fù)雜而隱晦
- 計(jì)算機(jī)語言簡單而直白
- 程序員是機(jī)器和人類的翻譯