十年內(nèi)自學(xué)編程
彼得·諾維格
為什么大家都這么著急故硅?
走進(jìn)任何一家書(shū)店,您將看到如何在24小時(shí)內(nèi)教會(huì)自己Java萨螺,以及提供在幾天或幾小時(shí)內(nèi)教授C窄做、SQL、Ruby慰技、算法等的無(wú)休止的變體椭盏。亞馬遜高級(jí)搜索[標(biāo)題:教學(xué),你自己吻商,小時(shí)掏颊,自2000年以來(lái),發(fā)現(xiàn)512這樣的書(shū)艾帐。在前十名中乌叶,有九本是編程書(shū)(另一本是關(guān)于簿記的)。類(lèi)似的結(jié)果來(lái)自于將“自學(xué)”改為“學(xué)習(xí)”柒爸,或?qū)ⅰ靶r(shí)”替換為“天”枉昏。
結(jié)論是,要么人們急于學(xué)習(xí)編程揍鸟,要么編程比其他任何東西都容易得多。費(fèi)萊森等人在他們的“如何設(shè)計(jì)程序”(How To Design Program)一書(shū)中句旱,他們表示:“糟糕的編程很容易阳藻,白癡可以在21天內(nèi)學(xué)會(huì)它,即使他們是假人谈撒⌒饶啵”這位狂暴的鵝漫畫(huà)也有自己的想法。
讓我們分析24小時(shí)內(nèi)自學(xué)C++這樣的標(biāo)題可能意味著什么:
自學(xué):在24小時(shí)內(nèi)啃匿,你就沒(méi)有時(shí)間寫(xiě)幾個(gè)重要的程序蛔外,從你的成功和失敗中吸取教訓(xùn)蛆楞。您將沒(méi)有時(shí)間與有經(jīng)驗(yàn)的程序員一起工作,并了解在C++環(huán)境中生活是什么感覺(jué)夹厌”總之,你沒(méi)有時(shí)間學(xué)到很多東西矛纹。因此臂聋,這本書(shū)只能談?wù)撘环N膚淺的熟悉,而不是一種深刻的理解或南。正如亞歷山大·波普所說(shuō)孩等,一點(diǎn)點(diǎn)學(xué)習(xí)是一件危險(xiǎn)的事情。
C++:在24小時(shí)內(nèi)采够,您可能可以學(xué)習(xí)C++的一些語(yǔ)法(如果您已經(jīng)知道另一種語(yǔ)言)肄方,但您無(wú)法了解如何使用該語(yǔ)言。簡(jiǎn)單地說(shuō)蹬癌,如果你是一個(gè)基本程序員权她,你可以學(xué)習(xí)用C++語(yǔ)法以Basic的方式編寫(xiě)程序,但是你不能知道C++實(shí)際上是好的(和壞的)什么冀瓦。那有什么意義伴奥?AlanPerlis曾經(jīng)說(shuō)過(guò):“一種不影響你對(duì)編程的思考方式的語(yǔ)言是不值得知道的”。一個(gè)可能的問(wèn)題是翼闽,您必須學(xué)習(xí)一點(diǎn)C++(或者更可能的是拾徙,類(lèi)似JavaScript或處理的東西),因?yàn)槟枰c現(xiàn)有工具接口來(lái)完成特定的任務(wù)感局。但是你不是在學(xué)習(xí)如何編程尼啡,而是在學(xué)習(xí)如何完成這個(gè)任務(wù)。
在24小時(shí)內(nèi):不幸的是询微,這還不夠崖瞭,正如下一節(jié)所示迅诬。
十年內(nèi)自學(xué)編程
研究人員(Bloom(1985)柬脸、Bryan&Harter(1899年)寂曹、Hayes(1989)拙绊、Simmon&Chase(1973))已經(jīng)證明争涌,在包括國(guó)際象棋栅贴、音樂(lè)創(chuàng)作怀喉、電報(bào)運(yùn)算半抱、繪畫(huà)胯杭、鋼琴演奏驯杜、游泳、網(wǎng)球以及神經(jīng)心理學(xué)和拓?fù)鋵W(xué)研究在內(nèi)的任何廣泛領(lǐng)域做个,都需要十年的時(shí)間才能發(fā)展出專(zhuān)門(mén)知識(shí)鸽心。關(guān)鍵在于深思熟慮的練習(xí):不只是一次又一次地去做滚局,而是用一項(xiàng)超出你目前能力范圍的任務(wù)來(lái)挑戰(zhàn)自己,嘗試它顽频,分析你