很多人認為計算機變得如此智能,所以在不久的未來將不再需要程序員。另外一些人認為程序員是天才,他們在電腦前能不斷地解決復(fù)雜的數(shù)學(xué)難題。甚至不少程序員對他們是做什么的都沒有清晰的概念。在這篇文章中,筆者想給不知情的人解釋一下程序員到底是做什么的。
程序員是將人類想法翻譯成計算機語言的譯者。
他們是兩種世界之間的紐帶。你認為維護這個紐帶很容易嗎?
人類世界的背景
The problem with people is that they’re only human. – Bill Watterson人類的問題是,他們只是人而已?!葼枴の痔厣?
人類是生物進化的產(chǎn)物,并且擁有獨特而寶貴的器官——大腦,它能為程序員提供想法。大腦有組合復(fù)雜的新大腦皮層(對人類而言是獨特的),還有從哺乳動物和爬行動物繼承的舊結(jié)構(gòu)。舊的大腦結(jié)構(gòu)主要負責(zé)生殖(性)和生存(尋找食物或者躲避危險)。新大腦皮層進化成能夠更好地支持這些功能,但是,它開始產(chǎn)生奇怪的副作用——意識、思考和好奇心。幸虧這些副作用的影響,人類產(chǎn)生了文明并在數(shù)千年后發(fā)明了計算機。
一些人相信經(jīng)過數(shù)千年的發(fā)展,人類應(yīng)該變成完全沉悶的、理性的、可預(yù)測的生物,但是這并沒有發(fā)生。人類舊的大腦結(jié)構(gòu)、復(fù)雜的心理和社會行為往往使人們不理性,不可預(yù)測并帶有欺騙性。并且,人類有糟糕的記憶力、強烈的情感和個人興趣。但是,程序員沒法選擇與更理性的物種工作,他們不得不與人類共事并且把人類的想法翻譯成計算機語言。
計算機世界背景
Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest. – Isaac Asimov
計算機非人性的一部分表現(xiàn)是,一旦完成編譯并且順利運行,它將忠實地完成工作?!_克·阿西莫夫
計算機是人類文明的最佳發(fā)明。它由CPU、主板、內(nèi)存、硬盤驅(qū)動器、顯示器和其他部分構(gòu)成。計算機將我們的文明推入一個新的水平,使我們的生活更有意義并充滿樂趣,還彌補了我們大腦的缺陷。很可能計算機比人類更聰明。(不過,我有點關(guān)心如果這成為現(xiàn)實后,計算機還需要人類程序員嗎?)
現(xiàn)代計算機具有完全邏輯性、直接性和順從性。如果你知道它應(yīng)該做什么并且知道如何命令它,那么和計算機一起工作是快樂的。唯一的問題是,計算機只會做你告訴它去做的。因此,你應(yīng)該有清晰的思路并且在見你的上司或客戶時保證計算機不出岔子。
在人類和計算機之間的翻譯
翻譯中會遇到三個主要的挑戰(zhàn):
為了寫出優(yōu)秀的軟件,程序員們必須克服這些困難,理解人們的想法并將之轉(zhuǎn)換成計算機語言。
一名優(yōu)秀程序員所具備的能力
我們可以看到,一名優(yōu)秀程序員應(yīng)該具備應(yīng)付兩個不同世界的兩套技能。
理解人類的需求并提出解決方案:
告訴計算機該做什么,并建立解決方案:
面向人類和面向硬件對象/系統(tǒng)的程序員有很大不同。
不與人溝通的程序員不是好程序員。一個優(yōu)秀的解決方案需要計算機世界與人類世界的雙重技能。只有連接起兩個世界,才能成為一個真正的優(yōu)秀程序員。