十年內(nèi)自學(xué)編程
Peter Norvig
為什么大家都這么著急?
走進(jìn)任何一家書店,您都會(huì)看到如何在24小時(shí)內(nèi)自學(xué)Java考廉,以及在幾天或幾個(gè)小時(shí)內(nèi)自學(xué)C昙篙、SQL腊状、Ruby、算法等各種各樣的語言苔可。亞馬遜高級(jí)搜索[標(biāo)題:teach, yourself, hours, since: 2000缴挖,找到了512本這樣的書。在前十本書中焚辅,九本是編程書(另一本是關(guān)于簿記的)映屋。用“學(xué)習(xí)”代替“自學(xué)”,用“天”代替“小時(shí)”同蜻,也會(huì)得到類似的結(jié)果棚点。
結(jié)論是,要么人們急于學(xué)習(xí)編程湾蔓,要么編程比其他任何東西都要容易得多乙濒。Felleisen等人在他們的《如何設(shè)計(jì)程序》一書中承認(rèn)了這一趨勢(shì),他們說“糟糕的編程很容易卵蛉“涔桑”傻瓜可以在21天內(nèi)學(xué)會(huì)它,即使他們是傻瓜傻丝「视校”《Abtruse Goose》漫畫也有自己的風(fēng)格。
讓我們來分析一下《24小時(shí)自學(xué)c++》這款游戲的意義:
自學(xué):在24小時(shí)內(nèi)葡缰,你將沒有時(shí)間寫幾個(gè)重要的程序亏掀,并從你的成功和失敗中學(xué)習(xí)。您將沒有時(shí)間與有經(jīng)驗(yàn)的程序員一起工作泛释,了解在c++環(huán)境中生活是什么樣子的滤愕。簡(jiǎn)而言之,你沒有時(shí)間學(xué)太多東西怜校。所以這本書只能談?wù)撃w淺的熟悉间影,而不是深刻的理解。正如亞歷山大·蒲柏所說茄茁,一知半解是一件危險(xiǎn)的事情魂贬。
c++:在24小時(shí)內(nèi)巩割,你可能能夠?qū)W習(xí)一些c++的語法(如果你已經(jīng)知道另一種語言),但你不可能學(xué)到很多關(guān)于如何使用這門語言的知識(shí)付燥。簡(jiǎn)而言之宣谈,如果你是一個(gè)基本的程序員,你可以學(xué)習(xí)用c++語法編寫B(tài)asic風(fēng)格的程序键科,但是你不能學(xué)習(xí)c++到底有什么好處(和壞處)闻丑。那么重點(diǎn)是什么呢?Alan Perlis曾經(jīng)說過:“如果一門語言不影響你思考編程的方式,那么它就不值得你去了解勋颖“鸬В”一個(gè)可能的問題是,您必須學(xué)習(xí)一點(diǎn)c++知識(shí)(或者更有可能是JavaScript或Processing之類的知識(shí))牙言,因?yàn)槟枰c現(xiàn)有的工具進(jìn)行接口,以完成特定的任務(wù)怪得。但是你并不是在學(xué)習(xí)如何編程;你正在學(xué)習(xí)如何完成這項(xiàng)任務(wù)咱枉。
24小時(shí):不幸的是,這還不夠徒恋,如下一節(jié)所示蚕断。
十年內(nèi)自學(xué)編程
研究人員(布魯姆(1985),布萊恩和哈特(1899),海斯(1989),西蒙& Chase(1973))顯示大約需要十年開發(fā)經(jīng)驗(yàn)的各種領(lǐng)域,包括國(guó)際象棋、音樂作曲,電報(bào)操作,繪畫入挣、彈鋼琴亿乳、游泳、網(wǎng)球以及神經(jīng)心理學(xué)和拓?fù)鋵W(xué)的研究径筏。關(guān)鍵是深思熟慮的練習(xí):不僅僅是一遍又一遍地做葛假,而是挑戰(zhàn)自己,做一個(gè)超出你目前能力范圍的任務(wù)滋恬,嘗試它聊训,在做的時(shí)候和之后分析你的表現(xiàn),并糾正任何錯(cuò)誤恢氯。然后重復(fù)带斑。并再次重復(fù)。似乎沒有真正的捷徑:即使是4歲的音樂天才莫扎特勋拟,也花了13年多的時(shí)間才開始創(chuàng)作出世界級(jí)的音樂作品勋磕。在另一個(gè)流派中,甲殼蟲樂隊(duì)似乎以一系列的熱門歌曲和1964年在埃德·蘇利文秀上亮相而突然走紅敢靡。但自1957年以來挂滓,他們一直在利物浦和漢堡的小俱樂部踢球,雖然他們?cè)谠缙谟袕V泛的吸引力啸胧,但他們的第一個(gè)巨大的成功是1967年發(fā)行的Sgt. Peppers杂彭。
馬爾科姆?格拉德威爾(Malcolm Gladwell)推廣了這一觀點(diǎn)墓毒,盡管他專注于1萬個(gè)小時(shí),而不是10年亲怠。亨利·卡蒂埃-布列松(1908-2004)有另一個(gè)衡量標(biāo)準(zhǔn):“你的前一萬張照片是你最差的所计。”(他沒有預(yù)料到团秽,有了數(shù)碼相機(jī)主胧,有些人能在一周內(nèi)達(dá)到這個(gè)水平。)真正的專長(zhǎng)可能需要一生的時(shí)間:塞繆爾?約翰遜(Samuel Johnson, 1709-1784)曾說過:“任何部門的卓越成就都只能通過一生的努力獲得;不能以較低的價(jià)格購(gòu)買习勤∽俣埃”喬叟(1340-1400)抱怨道:“呂弗河太短,去勒內(nèi)的船太長(zhǎng)图毕∫亩迹”希波克拉底(約公元前400年)以摘錄“ars longa, vita brevis”而聞名,這是較長(zhǎng)的引文“ars longa, vita brevis, praeceps, experimentum pericullosum, idirium difficile”的一部分予颤,英文翻譯為“生命短暫囤官,工藝漫長(zhǎng),機(jī)會(huì)稍息蛤虐,實(shí)驗(yàn)不確定党饮,判斷困難”。當(dāng)然,沒有一個(gè)數(shù)字可以最終答案:這似乎不合理假設(shè)所有技能(如編程,國(guó)際象棋,跳棋,和播放音樂)可能都需要完全相同的時(shí)間掌握,也沒有,所有的人將完全相同的時(shí)間驳庭。正如k·安德斯·埃里克森(K. Anders Ericsson)教授所說:“在大多數(shù)領(lǐng)域刑顺,即使是最有才華的人也需要多少時(shí)間才能達(dá)到最高水平,這是值得注意的饲常《滋茫”1萬小時(shí)這個(gè)數(shù)字給你的感覺是我們?cè)谡f的是每周10到20小時(shí)的年數(shù),有些人會(huì)認(rèn)為這些人是最有天賦的人