彼得·諾維格
為什么大家都這么著急埠对?
走進任何一家書店,您將看到如何在24小時內教會自己Java汹碱,以及提供在幾天或幾小時內教授C粘衬、SQL、Ruby咳促、算法等的無休止的變體稚新。亞馬遜高級搜索[標題:教學,你自己跪腹,小時褂删,自2000年以來,發(fā)現512這樣的書冲茸。在前十名中屯阀,有九本是編程書(另一本是關于簿記的)。類似的結果來自于將“自學”改為“學習”轴术,或將“小時”替換為“天”难衰。
結論是,要么人們急于學習編程逗栽,要么編程比其他任何東西都容易得多盖袭。費萊森等人在他們的“如何設計程序”(How To Design Program)一書中,他們表示:“糟糕的編程很容易,白癡可以在21天內學會它苍凛,即使他們是假人趣席。”這位狂暴的鵝漫畫也有自己的想法醇蝴。
讓我們分析24小時內自學C++這樣的標題可能意味著什么:
自學:在24小時內宣肚,你就沒有時間寫幾個重要的程序,從你的成功和失敗中吸取教訓霉涨。您將沒有時間與有經驗的程序員一起工作惭适,并了解在C++環(huán)境中生活是什么感覺往枷。總之屯碴,你沒有時間學到很多東西。因此今艺,這本書只能談論一種膚淺的熟悉洼滚,而不是一種深刻的理解遥巴。正如亞歷山大·波普所說,一點點學習是一件危險的事情。
C++:在24小時內携栋,您可能可以學習C++的一些語法(如果您已經知道另一種語言)鸯隅,但您無法了解如何使用該語言蝌以。簡單地說,如果你是一個基本程序員,你可以學習用C++語法以Basic的方式編寫程序虱痕,但是你不能知道C++實際上是好的(和壞的)什么。那有什么意義?AlanPerlis曾經說過:“一種不影響你對編程的思考方式的語言是不值得知道的”晃酒。一個可能的問題是贝次,您必須學習一點C++(或者更可能的是蛔翅,類似JavaScript或處理的東西)掏父,因為您需要與現有工具接口來完成特定的任務爵政。但是你不是在學習如何編程,而是在學習如何完成這個任務钾挟。
在24小時內:不幸的是洁灵,這還不夠,正如下一節(jié)所示等龙。
十年內自學編程
研究人員(Bloom(1985)处渣、Bryan&Harter(1899年)、Hayes(1989)蛛砰、Simmon&Chase(1973))已經證明罐栈,在包括國際象棋、音樂創(chuàng)作泥畅、電報運算荠诬、繪畫、鋼琴演奏位仁、游泳柑贞、網球以及神經心理學和拓撲學研究在內的任何廣泛領域,都需要十年的時間才能發(fā)展出專門知識聂抢。關鍵在于深思熟慮的練習:不只是一次又一次地去做钧嘶,而是用一項超出你目前能力范圍的任務來挑戰(zhàn)自己,嘗試它琳疏,分析你