2021-01-23

十年內(nèi)自學(xué)編程辫封。

研究人員(Bloom(1985)、Bryan&Harter(1899年)、Hayes(1989)倦微、Simmon&Chase(1973))已經(jīng)證明妻味,在包括國際象棋、音樂創(chuàng)作璃诀、電報(bào)運(yùn)算弧可、繪畫、鋼琴演奏劣欢、游泳僻焚、網(wǎng)球以及神經(jīng)心理學(xué)和拓?fù)鋵W(xué)研究在內(nèi)的任何廣泛領(lǐng)域涣楷,都需要十年的時(shí)間才能發(fā)展出專門知識扰付。關(guān)鍵在于深思熟慮的練習(xí):不只是一次又一次地去做颊埃,而是用一項(xiàng)超出你目前能力范圍的任務(wù)來挑戰(zhàn)自己,嘗試它牧抵,分析你在做的時(shí)候和之后的表現(xiàn)笛匙,并糾正任何錯(cuò)誤。那就重復(fù)一遍犀变。再重復(fù)一遍妹孙。似乎沒有真正的捷徑:即使是莫扎特,他在4歲時(shí)是一個(gè)音樂天才获枝,花了13年才開始創(chuàng)作世界級的音樂蠢正。在另一種類型中,披頭士樂隊(duì)似乎以一連串的#1熱門和1964年的埃德·沙利文秀出現(xiàn)在現(xiàn)場省店。但從1957年起嚣崭,他們就一直在利物浦和漢堡打小俱樂部,雖然他們很早就有了很大的吸引力懦傍,但他們的第一個(gè)重大成功雹舀,佩珀斯中士,在1967年被釋放了粗俱。

馬爾科姆·格拉德威爾(Malcolm Gladwell)推廣了這一理念说榆,盡管他專注于1萬小時(shí),而不是10年源梭。HenriCartier-Bresson(1908-2004)有另一個(gè)指標(biāo):“你的前10,000張照片是你最差的娱俺。”(他沒有預(yù)料到废麻,使用數(shù)碼相機(jī),一些人可以在一周內(nèi)達(dá)到這一目標(biāo)模庐。)真正的專業(yè)知識可能需要一生的時(shí)間:塞繆爾·約翰遜(1709-1784)說:“任何部門的卓越都只能靠一生的勞動(dòng)才能實(shí)現(xiàn)烛愧;不能以較低的價(jià)格購買。”喬叟(1340-1400)抱怨道:“萊夫太短了怜姿,手藝太長了慎冤。”Hippocrates(公元前400年)以摘錄“Ars Longa沧卢,vita brevis”而聞名蚁堤,這是較長的引語“Ars Longa,vita brevis但狭,ocus o precep披诗,實(shí)驗(yàn)性的周膜,艱難的分枝”的一部分立磁,在英語中呈队,它表現(xiàn)為“生命短,工藝長唱歧,機(jī)會(huì)短暫宪摧,實(shí)驗(yàn)變化無常,判斷困難”颅崩。當(dāng)然几于,沒有一個(gè)數(shù)字是最終的答案:似乎不合理地假定所有技能(例如編程、下棋沿后、跳棋和音樂演奏)都需要完全相同的時(shí)間來掌握沿彭,也不認(rèn)為所有人都需要完全相同的時(shí)間。正如K·安德斯·愛立信(K.Anders Ericsson)教授所言得运,“在大多數(shù)領(lǐng)域膝蜈,即便是最有才華的人,也需要多少時(shí)間才能達(dá)到最高水平熔掺。1萬小時(shí)的時(shí)間讓你感覺到饱搏,我們所說的每周10到20個(gè)小時(shí),有些人會(huì)認(rèn)為置逻,那些天生最有天賦的人仍然需要達(dá)到最高水平推沸。”

所以你想成為一名程序員

下面是我編程成功的秘訣:

對編程感興趣券坞,并做一些鬓催,因?yàn)樗怯腥さ摹R欢ㄒ3肿銐虻臉啡ず廾@樣你就會(huì)愿意投入你的10年/10,000小時(shí)宇驾。

節(jié)目。最好的學(xué)習(xí)方式是邊做邊學(xué)猴伶。更嚴(yán)格地說课舍,“在某一領(lǐng)域塌西,個(gè)人的最高業(yè)績水平并不是隨著經(jīng)驗(yàn)的擴(kuò)展而自動(dòng)達(dá)到的,但即使是經(jīng)驗(yàn)豐富的個(gè)人筝尾,也可以通過刻意改進(jìn)而提高業(yè)績水平捡需。”(第366頁)和“最有效的學(xué)習(xí)需要一個(gè)明確的任務(wù)筹淫,適當(dāng)?shù)碾y度水平站辉,為特定的個(gè)人,信息反饋损姜,并有機(jī)會(huì)重復(fù)和糾正錯(cuò)誤饰剥。”(第20-21頁)“實(shí)踐中的認(rèn)知:日常生活中的思想薛匪、數(shù)學(xué)和文化”是這一觀點(diǎn)的有趣參考捐川。

與其他程序員交談;閱讀其他程序逸尖。這比任何書籍或培訓(xùn)課程都更重要古沥。

如果你愿意,在一所大學(xué)(或更多的研究生院)待四年娇跟。這會(huì)讓你獲得一些需要資格證書的工作岩齿,也會(huì)讓你對這個(gè)領(lǐng)域有更深入的了解,但如果你不喜歡上學(xué)苞俘,你可以(用一些奉獻(xiàn)精神)獨(dú)自或在工作中獲得類似的經(jīng)驗(yàn)盹沈。無論如何,光靠書本學(xué)習(xí)是不夠的吃谣∑蚍猓“計(jì)算機(jī)科學(xué)教育不能使任何人成為專業(yè)程序員,就像研究畫筆和顏料可以使人成為專業(yè)畫家一樣”岗憋,“新黑客詞典”的作者埃里克·雷蒙德說肃晚。我雇過的最好的程序員之一只有高中學(xué)位,他制作了很多很棒的軟件仔戈,有自己的新聞組关串,并且有足夠的股票期權(quán)來購買自己的夜總會(huì)。

與其他程序員一起完成項(xiàng)目监徘。在某些項(xiàng)目中做最好的程序員晋修;在其他項(xiàng)目上做最差的程序員。當(dāng)你是最好的凰盔,你可以測試你的能力來領(lǐng)導(dǎo)一個(gè)項(xiàng)目墓卦,并用你的遠(yuǎn)見激勵(lì)別人。當(dāng)你是最壞的時(shí)候户敬,你學(xué)會(huì)了主人做什么趴拧,你學(xué)會(huì)了他們不喜歡做什么(因?yàn)樗麄冏屇銥樗麄冏?溅漾。

工作項(xiàng)目后山叮,其他程序員著榴。理解別人寫的程序∑ň螅看看當(dāng)原來的程序員不在的時(shí)候脑又,需要什么才能理解和修復(fù)它。想一想如何設(shè)計(jì)你的程序锐借,讓那些在你之后維護(hù)它們的人更容易问麸。

至少學(xué)習(xí)六種編程語言。包括一種強(qiáng)調(diào)類抽象的語言(比如Java或C++)钞翔、一種強(qiáng)調(diào)函數(shù)抽象(比如Lisp严卖、ML或Haskell)、一種支持語法抽象(比如Lisp)布轿、一種支持聲明性規(guī)范(比如Prolog或C++模板)哮笆、一種強(qiáng)調(diào)并行性(比如Clojure或Go)。

記住汰扭,在“計(jì)算機(jī)科學(xué)”中有一個(gè)“計(jì)算機(jī)”稠肘。知道您的計(jì)算機(jī)執(zhí)行指令、從內(nèi)存中獲取一個(gè)單詞(是否有緩存丟失)萝毛、從磁盤中讀取連續(xù)單詞以及尋找磁盤上的新位置需要多長時(shí)間项阴。(答案在這里)

參與語言標(biāo)準(zhǔn)化工作。它可能是ANSI C++委員會(huì)笆包,也可能是決定您的本地編碼風(fēng)格將有2或4個(gè)空間縮進(jìn)水平环揽。不管是哪種方式,你都可以了解到其他人在一種語言中喜歡什么庵佣,他們有多深歉胶,也許還有一點(diǎn)是關(guān)于為什么他們會(huì)這樣想的。

有良好的判斷力秧了,盡快擺脫語言標(biāo)準(zhǔn)化的努力跨扮。

考慮到所有這些,僅僅通過書本學(xué)習(xí)验毡,你能走多遠(yuǎn)是值得懷疑的衡创。在我的第一個(gè)孩子出生之前,我讀了所有的書晶通,仍然覺得自己是一個(gè)無知的新手璃氢。30個(gè)月后,當(dāng)我的第二個(gè)孩子即將出生時(shí)狮辽,我是否又回到書本上復(fù)習(xí)了一下一也?沒有巢寡。相反,我依靠的是我個(gè)人的經(jīng)驗(yàn)椰苟,這比專家們寫的幾千頁更有用抑月,也更讓我放心。

弗雷德·布魯克斯(FredBrooks)在他的文章“沒有銀彈”中指出了一個(gè)尋找優(yōu)秀軟件設(shè)計(jì)師的三部分計(jì)劃:

系統(tǒng)地盡早確定頂級設(shè)計(jì)師舆蝴。

指派一位職業(yè)導(dǎo)師負(fù)責(zé)前景的發(fā)展谦絮,并仔細(xì)保存一份職業(yè)檔案。

為不斷成長的設(shè)計(jì)師提供互動(dòng)和相互激勵(lì)的機(jī)會(huì)洁仗。

這假設(shè)有些人已經(jīng)具備了成為一名偉大設(shè)計(jì)師所必需的素質(zhì)层皱,其工作就是恰當(dāng)?shù)匾龑?dǎo)他們堅(jiān)持下去。艾倫·佩利斯(AlanPerlis)更簡潔地說:“每個(gè)人都可以學(xué)會(huì)雕刻:米開朗基羅(Michelangelo)必須學(xué)會(huì)如何不去做赠潦,偉大的程序員也是如此叫胖。”佩利斯說她奥,偉大的球員有一些超越他們訓(xùn)練的內(nèi)在素質(zhì)瓮增。但是質(zhì)量是從哪里來的呢?是天生的嗎方淤?或者他們是通過勤奮來發(fā)展的呢钉赁?正如奧古斯特·古斯托(Ratatouille中虛構(gòu)的廚師)所言:“任何人都能做飯,但只有無畏的人才能做得很好携茂∧悴龋”我認(rèn)為它更多的是愿意把一個(gè)人一生中的大部分時(shí)間花在深思熟慮的實(shí)踐上。但也許無畏是總結(jié)這一點(diǎn)的一種方式讳苦〈ぃ或者,正如古斯托的批評家安東·伊戈所說:“不是每個(gè)人都能成為偉大的藝術(shù)家鸳谜,但偉大的藝術(shù)家可以來自任何地方膝藕。”

因此咐扭,繼續(xù)購買Java/Ruby/Javascript/PHP書籍芭挽;您可能會(huì)從中得到一些使用。但你不會(huì)在24小時(shí)或21天內(nèi)改變你的生活蝗肪,也不會(huì)改變你作為程序員的真正專業(yè)知識袜爪。在過去的24個(gè)月里,努力工作薛闪,不斷提高辛馆,怎么樣?現(xiàn)在你開始有進(jìn)展了..豁延。

參考文獻(xiàn)

布盧姆昙篙,本杰明(編輯)“發(fā)展青年人才”腊状,巴蘭汀,1985年苔可。

布魯克斯缴挖,弗雷德,沒有銀子彈硕蛹,IEEE計(jì)算機(jī)醇疼,第20卷,第4期法焰,1987年,第10-19頁倔毙。

Bryan埃仪,W.L.&Harter,N.“電報(bào)語言研究:習(xí)慣層次的習(xí)得”陕赃,“心理學(xué)評論”卵蛉,1899年,8,345-375么库。

海斯傻丝,約翰R.,完全問題解決者勞倫斯厄爾鮑姆诉儒,1989年葡缰。

放大圖片作者:William G.&Simon,Herbert A.“象棋中的知覺”忱反,“認(rèn)知心理學(xué)”泛释,1973,4温算,55-81怜校。

“實(shí)踐中的認(rèn)知:日常生活中的思想、數(shù)學(xué)和文化”注竿,劍橋大學(xué)出版社茄茁,1988年。

答案

典型PC上各種操作的大致時(shí)間:

執(zhí)行典型指令1/1,000,000,000秒=1納塞克

從L1高速緩存存儲(chǔ)器0.5納塞克中提取

支路誤判5納秒

從L2高速緩存存儲(chǔ)器7納塞克中提取

互斥鎖/解鎖25納塞克

從主存100納塞克中提取

在1Gbps網(wǎng)絡(luò)上發(fā)送2K字節(jié)20,000納秒

從內(nèi)存250,000納塞克中順序讀取1MB

從新磁盤位置(查找)獲取8,000,000納塞克

從磁盤按順序讀取1MB 20,000,000納塞克

將數(shù)據(jù)包US發(fā)送到歐洲巩割,返回150毫秒=150,000,000納塞克

附錄:語言選擇

有幾個(gè)人問他們應(yīng)該先學(xué)哪種編程語言裙顽。沒有一個(gè)答案,但請考慮以下幾點(diǎn):

利用你的朋友喂分。當(dāng)被問到“我應(yīng)該使用什么操作系統(tǒng)锦庸,Windows,Unix還是Mac蒲祈?”時(shí)甘萧,我的回答通常是:“使用任何你的朋友使用的操作系統(tǒng)萝嘁。”你從朋友那里學(xué)到的優(yōu)勢將抵消操作系統(tǒng)之間或編程語言之間的任何內(nèi)在差異扬卷。還要考慮你未來的朋友:如果你繼續(xù)的話牙言,你會(huì)成為程序員社區(qū)的一部分。你所選擇的語言是有一個(gè)龐大的成長社區(qū)怪得,還是一個(gè)正在消亡的小群體咱枉?有沒有書籍,網(wǎng)站和在線論壇可以得到答案徒恋?你喜歡那些論壇上的人嗎蚕断?

保持簡單。編程語言(如C++和Java)是為專業(yè)開發(fā)而設(shè)計(jì)的入挣,由大量經(jīng)驗(yàn)豐富的程序員組成亿乳,他們關(guān)心代碼的運(yùn)行時(shí)效率。因此径筏,這些語言具有為這些情況設(shè)計(jì)的復(fù)雜部分葛假。你關(guān)心的是學(xué)習(xí)編程。你不需要那種并發(fā)癥滋恬。你想要一種語言聊训,它被設(shè)計(jì)成一個(gè)簡單易學(xué)的語言,并被一個(gè)新的程序員記住恢氯。

玩带斑。你更愿意學(xué)習(xí)彈鋼琴的哪一種方式:普通的,交互式的酿雪,在你一按下鍵就聽到每個(gè)音符的方式遏暴,還是“分批”模式,只有在你唱完整首歌之后才能聽到音符指黎?顯然朋凉,交互模式使鋼琴和編程更容易學(xué)習(xí)。堅(jiān)持一種互動(dòng)的語言醋安,并使用它杂彭。

考慮到這些標(biāo)準(zhǔn),我對第一種編程語言的建議將是Python或Scheme吓揪。另一個(gè)選擇是Javascript亲怠,并不是因?yàn)樗鼮槌鯇W(xué)者設(shè)計(jì)得非常好,而是因?yàn)樗泻芏嘣诰€教程柠辞,比如Khan Academy的教程团秽。但你的情況可能會(huì)有所不同,還有其他好的選擇。如果你的年齡是個(gè)位數(shù)习勤,你可能更喜歡愛麗絲踪栋、斯奎克或布洛克里(年長的學(xué)習(xí)者也會(huì)喜歡這些)。重要的是你選擇并開始图毕。

附錄:書籍和其他資源

有幾個(gè)人問他們應(yīng)該從哪些書籍和網(wǎng)頁中學(xué)習(xí)夷都。我再說一遍,“光靠書本學(xué)習(xí)是不夠的”予颤,但我可以推薦以下幾點(diǎn):

方案:計(jì)算機(jī)程序的結(jié)構(gòu)和解釋(Abelson&Sussman)可能是計(jì)算機(jī)科學(xué)的最佳入門囤官,它確實(shí)教授編程作為理解計(jì)算機(jī)科學(xué)的一種方式。你可以在這本書上看到講座的在線視頻蛤虐,也可以在網(wǎng)上看到完整的文本党饮。這本書具有挑戰(zhàn)性,并將淘汰出一些可能通過另一種方法獲得成功的人笆焰。

方案:如何設(shè)計(jì)程序(Felleisen等人)是關(guān)于如何以優(yōu)雅和實(shí)用的方式實(shí)際設(shè)計(jì)程序的最好的書籍之一劫谅。

Python:PythonProgramming:IntrotoCS(Zelle)是使用Python的一個(gè)很好的介紹。

Python:幾個(gè)在線教程可以在Python.org上找到嚷掠。

奧茲:計(jì)算機(jī)編程的概念、技術(shù)和模型(VanRoy&Haridi)被一些人視為現(xiàn)代阿貝爾森和蘇斯曼的繼承者荞驴。它是一個(gè)關(guān)于編程的偉大思想的旅行不皆,涵蓋的范圍比Abelson&Sussman更廣泛,而且可能更容易閱讀和跟蹤熊楼。它使用的一種語言霹娄,Oz,并不廣為人知鲫骗,但作為學(xué)習(xí)其他語言的基礎(chǔ)犬耻。<

注記

T.Capey指出,亞馬遜上的完整問題解決方案頁面現(xiàn)在有“21天內(nèi)教你自己孟加拉語”和“教你自己語法和風(fēng)格”的書执泰,在“為這個(gè)項(xiàng)目購物的顧客也在購買這些物品”部分下枕磁。我想看那本書的人中有很大一部分是從這一頁來的。感謝羅斯·科恩幫助希波克拉底术吝。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末计济,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子排苍,更是在濱河造成了極大的恐慌沦寂,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淘衙,死亡現(xiàn)場離奇詭異传藏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門毯侦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哭靖,“玉大人,你說我怎么就攤上這事叫惊】钋啵” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵霍狰,是天一觀的道長抡草。 經(jīng)常有香客問我,道長蔗坯,這世上最難降的妖魔是什么康震? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮宾濒,結(jié)果婚禮上腿短,老公的妹妹穿的比我還像新娘。我一直安慰自己绘梦,他們只是感情好橘忱,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卸奉,像睡著了一般钝诚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上榄棵,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天凝颇,我揣著相機(jī)與錄音,去河邊找鬼疹鳄。 笑死拧略,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瘪弓。 我是一名探鬼主播垫蛆,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杠茬!你這毒婦竟也來了月褥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤瓢喉,失蹤者是張志新(化名)和其女友劉穎宁赤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體栓票,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡决左,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年愕够,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佛猛。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惑芭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出继找,到底是詐尸還是另有隱情遂跟,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布婴渡,位于F島的核電站幻锁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏边臼。R本人自食惡果不足惜哄尔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望柠并。 院中可真熱鬧岭接,春花似錦、人聲如沸臼予。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粘拾。三九已至葵擎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間半哟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工签餐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寓涨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓氯檐,卻偏偏與公主長得像戒良,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子冠摄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 十年內(nèi)自學(xué)編程 彼得·諾維格 為什么大家都這么著急糯崎? 走進(jìn)任何一家書店,您將看到如何在24小時(shí)內(nèi)教會(huì)自己Java河泳,...
    孫帥帥2002閱讀 106評論 0 0
  • 十年內(nèi)自學(xué)編程 彼得·諾維格 為什么大家都這么著急沃呢? 走進(jìn)任何一家書店,您將看到如何在24小時(shí)內(nèi)教會(huì)自己Java拆挥,...
    張小龍_aba0閱讀 87評論 0 1
  • 十年內(nèi)自學(xué)編程 彼得·諾維格 為什么大家都這么著急薄霜? 走進(jìn)任何一家書店,您將看到如何在24小時(shí)內(nèi)教會(huì)自己Java,...
    見背閱讀 130評論 0 1
  • 十年內(nèi)自學(xué)編程 彼得·諾維格 為什么大家都這么著急惰瓜? 走進(jìn)任何一家書店否副,您將看到如何在24小時(shí)內(nèi)教會(huì)自己Java,...
    陳龍閱讀 192評論 0 0
  • 十年內(nèi)自學(xué)編程 彼得·諾維格 為什么大家都這么著急崎坊? 走進(jìn)任何一家書店备禀,您將看到如何在24小時(shí)內(nèi)教會(huì)自己Java,...
    Chinawmj閱讀 333評論 0 0