程序員的本質(zhì)

發(fā)布時(shí)間:2011-5-18 22:10    發(fā)布者:Liming
關(guān)鍵詞: 本質(zhì) , 程序員
很多人認為計算機變得如此智能,所以在不久的未來(lái)將不再需要程序員。另外一些人認為程序員是天才,他們在電腦前能不斷地解決復雜的數學(xué)難題。甚至不少程序員對他們是做什么的都沒(méi)有清晰的概念。在這篇文章中,我想給不知情的人解釋一下程序員到底是做什么的:Computers are useless. They can only give you answers. – Picasso
  計算機沒(méi)有什么作用。他們只能告訴你答案!吋铀

  很多人(包括我岳母)認為計算機變得如此智能,所以在不久的未來(lái)將不再需要程序員。另外一些人認為程序員是天才,他們在電腦前能不斷地解決復雜的數學(xué)難題。甚至不少程序員對他們是做什么的都沒(méi)有清晰的概念。

  在這篇文章中,我想給不知情的人解釋一下程序員到底是做什么的:

  程序員是將人類(lèi)想法翻譯成計算機語(yǔ)言的譯者。

  他們是兩種世界之間的紐帶。你認為維護這個(gè)紐帶很容易嗎?



  人類(lèi)世界的背景

  The problem with people is that they’re only human. - Bill Watterson
  人類(lèi)的問(wèn)題是,他們只是人而已!葼枴の痔厣

  人類(lèi)是生物進(jìn)化的產(chǎn)物,并且擁有獨特而寶貴的器官——大腦,它能為程序員提供想法。大腦有組合復雜的新大腦皮層(對人類(lèi)而言是獨特的),還有從哺乳動(dòng)物和爬行動(dòng)物繼承的舊結構。舊的大腦結構主要負責生殖(性)和生存(尋找食物或者躲避危險)。新大腦皮層進(jìn)化成能夠更好地支持這些功能,但是,它開(kāi)始產(chǎn)生奇怪的副作用——意識、思考和好奇心。幸虧這些副作用的影響,人類(lèi)產(chǎn)生了文明并在數千年后發(fā)明了計算機。

  一些人相信經(jīng)過(guò)數千年的發(fā)展,人類(lèi)應該變成完全沉悶的、理性的、可預測的生物,但是這并沒(méi)有發(fā)生。人類(lèi)舊的大腦結構、復雜的心理和社會(huì )行為往往使人們不理性,不可預測并帶有欺騙性。并且,人類(lèi)有糟糕的記憶力、強烈的情感和個(gè)人興趣。但是,程序員沒(méi)法選擇與更理性的物種工作,他們不得不與人類(lèi)共事并且把人類(lèi)的想法翻譯成計算機語(yǔ)言。

  計算機世界背景

  Part of the inhumanity of the computer is that, once it iscompetently programmed and working smoothly, it is completely honest. –Isaac Asimov
  計算機非人性的一部分表現是,一旦完成編譯并且順利運行,它將忠實(shí)地完成工作!_克·阿西莫夫

  計算機是人類(lèi)文明的最佳發(fā)明。它由CPU、主板、內存、硬盤(pán)驅動(dòng)器、顯示器和其他部分構成。計算機將我們的文明推入一個(gè)新的水平,使我們的生活更有意義并充滿(mǎn)樂(lè )趣,還彌補了我們大腦的缺陷。很可能計算機比人類(lèi)更聰明。(不過(guò),我有點(diǎn)關(guān)心如果這成為現實(shí)后,計算機還需要人類(lèi)程序員嗎?)

  現代計算機具有完全邏輯性、直接性和順從性。如果你知道它應該做什么并且知道如何命令它,那么和計算機一起工作是快樂(lè )的。唯一的問(wèn)題是,計算機只會(huì )做你告訴它去做的。因此,你應該有清晰的思路并且在見(jiàn)你的上司或客戶(hù)時(shí)保證計算機不出岔子。

  在人類(lèi)和計算機之間的翻譯

  翻譯中會(huì )遇到三個(gè)主要的挑戰:
1. 語(yǔ)言歧義。人類(lèi)語(yǔ)言是模糊、復雜并且雙關(guān)的,例如:“這個(gè)程序不能提供良好的用戶(hù)體驗”。文化、背景和上下文語(yǔ)境都會(huì )對溝通和含義造成影響。與之相反,所有計算機語(yǔ)言都是準確、直接的,與上下文無(wú)關(guān)。 2. 細節層次。人類(lèi)的溝通是籠統而不帶有過(guò)多細節的,例如:“我想讓這該死的程序運行起來(lái)”。這樣可以節省時(shí)間與精力,但由于缺少詳細信息,會(huì )產(chǎn)生兩個(gè)比較大的問(wèn)題——誤解和不確定性。而計算機需要所有細節——每件事都要說(shuō)清楚。 3. 思維模式。人類(lèi)習慣于思考需求、結果與解決方案之間的關(guān)系,例如:“這份報告應該在2秒內運行,而不是2個(gè)小時(shí)”。然而,計算機需要算法——按照步驟去達到想要得到的結果。
  為了寫(xiě)出優(yōu)秀的軟件,程序員們必須克服這些困難,理解人們的想法并將之轉換成計算機語(yǔ)言。

  一名優(yōu)秀程序員所具備的能力

  我們可以看到,一名優(yōu)秀程序員應該具備應付兩個(gè)不同世界的兩套技能。

  理解人類(lèi)的需求并提出解決方案:
1. 溝通——與人建立聯(lián)系的能力,能夠同他人親密的交談,并有勇氣去嘗試分享自己的觀(guān)點(diǎn)。 2. 意圖——從談話(huà)中提取有用的信息,理解并使之有意義。 3. 邏輯——為不懂讓步的計算機整理、剔除那些人類(lèi)思想中含糊而有爭議的內容。 4. 創(chuàng )造力——挖掘、轉變人類(lèi)的想法,從而創(chuàng )建優(yōu)秀的解決方案。 5. 構思——利用人類(lèi)友好的接口和便捷的互動(dòng)性來(lái)包裝編程思想。 6. 大局觀(guān)——清楚解決方案是如何適應全世界的用戶(hù)、企業(yè)以及其他,從而使你的程序更有用。
  告訴計算機該做什么,并建立解決方案:
1. 邏輯(再次強調)——把程序員的想法組織整理成有凝聚力的軟件思想和計算機指令 2. 技術(shù)——發(fā)現并理解科技黑箱(對于99%的人來(lái)說(shuō)是黑箱)。 3. 編程語(yǔ)言——學(xué)習美觀(guān)的、富有邏輯的、清晰明了的語(yǔ)言,從而把程序員的想法提供給電腦。 4. 算法——精通讓計算機完成任務(wù)最高效的方法。 5. 建!谲浖a中建立抽象和模型,從而掌握并操控想法。 6. 實(shí)踐(比如代碼重構、單元測試、持續集成)——周期性活動(dòng),以保持系統可靠、健康與可改變。(關(guān)于代碼重構,可參見(jiàn)伯樂(lè )在線(xiàn)職場(chǎng)博客《明星軟件工程師的10種特質(zhì)》這篇文章中的第3點(diǎn)。)
  面向人類(lèi)和面向硬件對象/系統的程序員有很大不同。

  不與人溝通的程序員不是好程序員。一個(gè)優(yōu)秀的解決方案需要計算機世界與人類(lèi)世界的雙重技能。只有連接起兩個(gè)世界,才能成為一個(gè)真正的優(yōu)秀程序員。

  譯文出處:伯樂(lè )在線(xiàn)- 職場(chǎng)博客 - 程序員
  譯文鏈接:http://www.jobbole.com/entry.php/821
本文地址:http://selenalain.com/thread-65972-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页