自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員的本質(zhì) 你可明了

開發(fā) 前端
很多人(包括我岳母)認(rèn)為計算機變得如此智能,所以在不久的未來將不再需要程序員。另外一些人認(rèn)為程序員是天才,他們在電腦前能不斷地解決復(fù)雜的數(shù)學(xué)難題。甚至不少程序員對他們是做什么的都沒有清晰的概念。本文將帶你一起探討程序員的本質(zhì)!

omputers are useless. They can only give you answers. – Picasso

計算機沒有什么作用。他們只能告訴你答案。——畢加索

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

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

程序員是將人類想法翻譯成計算機語言的譯者。

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

[[29264]]

人類世界的背景

The problem with people is that they’re only human. - Bill Watterson

人類的問題是,他們只是人而已。——比爾·沃特森

人類是生物進化的產(chǎn)物,并且擁有獨特而寶貴的器官——大腦,它能為程序員提供想法。大腦有組合復(fù)雜的新大腦皮層(對人類而言是獨特的),還有從哺乳動物和爬行動物繼承的舊結(jié)構(gòu)。舊的大腦結(jié)構(gòu)主要負(fù)責(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):

1. 語言歧義。人類語言是模糊、復(fù)雜并且雙關(guān)的,例如:“這個程序不能提供良好的用戶體驗”。文化、背景和上下文語境都會對溝通和含義造成影響。與之相反,所有計算機語言都是準(zhǔn)確、直接的,與上下文無關(guān)。

2. 細節(jié)層次。人類的溝通是籠統(tǒng)而不帶有過多細節(jié)的,例如:“我想讓這該死的程序運行起來”。這樣可以節(jié)省時間與精力,但由于缺少詳細信息,會產(chǎn)生兩個比較大的問題——誤解和不確定性。而計算機需要所有細節(jié)——每件事都要說清楚。

3. 思維模式。人類習(xí)慣于思考需求、結(jié)果與解決方案之間的關(guān)系,例如:“這份報告應(yīng)該在2秒內(nèi)運行,而不是2個小時”。然而,計算機需要算法——按照步驟去達到想要得到的結(jié)果。

為了寫出優(yōu)秀的軟件,程序員們必須克服這些困難,理解人們的想法并將之轉(zhuǎn)換成計算機語言。

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

程序員的本質(zhì)

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

理解人類的需求并提出解決方案:

◆ 1. 溝通——與人建立聯(lián)系的能力,能夠同他人親密的交談,并有勇氣去嘗試分享自己的觀點。

◆ 2. 意圖——從談話中提取有用的信息,理解并使之有意義。

◆ 3. 邏輯——為不懂讓步的計算機整理、剔除那些人類思想中含糊而有爭議的內(nèi)容。

◆ 4. 創(chuàng)造力——挖掘、轉(zhuǎn)變?nèi)祟惖南敕?,從而?chuàng)建優(yōu)秀的解決方案。

◆ 5. 構(gòu)思——利用人類友好的接口和便捷的互動性來包裝編程思想。

◆ 6. 大局觀——清楚解決方案是如何適應(yīng)全世界的用戶、企業(yè)以及其他,從而使你的程序更有用。

告訴計算機該做什么,并建立解決方案:

◆ 1. 邏輯(再次強調(diào))——把程序員的想法組織整理成有凝聚力的軟件思想和計算機指令

◆ 2. 技術(shù)——發(fā)現(xiàn)并理解科技黑箱(對于99%的人來說是黑箱)。

◆ 3. 編程語言——學(xué)習(xí)美觀的、富有邏輯的、清晰明了的語言,從而把程序員的想法提供給電腦。

◆ 4. 算法——精通讓計算機完成任務(wù)最高效的方法。

◆ 5. 建模——在軟件代碼中建立抽象和模型,從而掌握并操控想法。

◆ 6. 實踐(比如代碼重構(gòu)、單元測試、持續(xù)集成)——周期性活動,以保持系統(tǒng)可靠、健康與可改變。(關(guān)于代碼重構(gòu),可參見伯樂在線職場博客《明星軟件工程師的10種特質(zhì)》這篇文章中的第3點。)

面向人類和面向硬件對象/系統(tǒng)的程序員有很大不同。

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

原文鏈接:http://www.jobbole.com/entry.php/821

【編輯推薦】

  1. 如何成為一名優(yōu)秀的程序員?
  2. 想成為更好的程序員嗎?學(xué)習(xí)Prolog語言吧
  3. 老程序員10年技術(shù)生涯的思考 從C++到Java
  4. 程序員如何在"小公司成長"和"大公司學(xué)習(xí)"
  5. 程序員工資禁忌 你可知道?
責(zé)任編輯:陳貽新 來源: 伯樂在線
相關(guān)推薦

2009-05-21 15:58:12

程序員工作經(jīng)驗職場

2017-07-07 10:32:03

程序員微軟AI

2015-04-10 19:37:34

程序員

2015-12-14 17:26:42

程序員生活

2012-04-26 17:12:36

程序員夢想

2013-08-20 09:33:59

程序員

2015-07-28 09:54:43

2012-10-22 16:21:15

程序員編程

2015-09-16 11:32:38

程序員匠心

2012-09-10 09:16:54

2009-01-08 09:04:18

2015-05-27 09:45:59

程序員

2020-01-10 17:29:12

IT開發(fā)者程序員

2013-12-24 09:59:48

程序員管理

2011-05-13 14:34:02

程序員

2013-06-17 11:01:49

程序員離職

2012-09-24 01:18:32

程序員androidhtml5

2009-11-19 10:21:02

2013-10-08 09:34:57

編程漫畫編程漫畫

2021-01-23 20:00:53

程序員技能開發(fā)者
點贊
收藏

51CTO技術(shù)棧公眾號