2021-01-20

為什么每個(gè)人都這么著急?走進(jìn)任何書店,您將看到如何在24小時(shí)內(nèi)自學(xué)Java,以及無窮無盡的變體,可以在幾天或幾小時(shí)內(nèi)教授C,SQL,Ruby,算法等。亞馬遜高級搜索[標(biāo)題:自學(xué),自學(xué),自學(xué),自2000年以來,共發(fā)現(xiàn)512本書。在前十名中,有九本是編程書籍(另一本是關(guān)于簿記的)。通過將“自學(xué)”替換為“學(xué)習(xí)”或?qū)ⅰ靶r(shí)”替換為“天”,可以得到類似的結(jié)果。結(jié)論是要么人們急于學(xué)習(xí)編程,要么編程比其他任何事物都更容易學(xué)習(xí)。 Felleisen等。在他們的書《如何設(shè)計(jì)程序》中對這種趨勢表示贊同,當(dāng)他們說“錯誤的編程很容易。白癡即使是假人也可以在21天內(nèi)學(xué)習(xí)它。” Abtruse Goose漫畫也受到了歡迎。讓我們分析一下“ 24小時(shí)自學(xué)C ++”這樣的標(biāo)題的含義:自學(xué):在24小時(shí)內(nèi),您將沒有時(shí)間編寫幾個(gè)重要的程序,并從中學(xué)習(xí)成功和失敗的原因。您將沒有時(shí)間與經(jīng)驗(yàn)豐富的程序員一起工作,也不了解在C ++環(huán)境中生活的感覺。簡而言之,您將沒有時(shí)間學(xué)習(xí)很多東西。因此,這本書只能說是膚淺的熟悉,而不是深刻的理解。正如亞歷山大·波普(Alexander Pope)所說,學(xué)一點(diǎn)東西是危險(xiǎn)的。C ++:在24小時(shí)內(nèi),您可能可以學(xué)習(xí)C ++的某些語法(如果您已經(jīng)知道另一種語言),但是您對如何使用該語言的了解卻不多。簡而言之,如果您是一名Basic程序員,則可以學(xué)習(xí)使用C ++語法以Basic風(fēng)格編寫程序,但是您將無法了解C ++的優(yōu)點(diǎn)(或缺點(diǎn))。那有什么意義呢?艾倫·珀利斯(Alan Perlis)曾經(jīng)說過:“不影響您對編程的思考方式的語言是不值得了解的”。一個(gè)可能的觀點(diǎn)是,您必須學(xué)習(xí)一小部分C ++(或更可能是JavaScript或Processing之類的東西),因?yàn)槟枰c現(xiàn)有工具交互以完成特定任務(wù)。但是,那時(shí)您不會學(xué)習(xí)編程。您正在學(xué)習(xí)完成該任務(wù)。在24小時(shí)內(nèi):不幸的是,這還不夠,如下一節(jié)所示。十年自學(xué)編程研究人員(Bloom(1985),Bryan&Harter(1899),Hayes(1989),Simmon&Chase(1973))顯示,在下棋,音樂等眾多領(lǐng)域中發(fā)展專業(yè)知識大約需要十年的時(shí)間。寫作,電報(bào)操作,繪畫,彈鋼琴,游泳,網(wǎng)球以及神經(jīng)心理學(xué)和拓?fù)鋵W(xué)研究。關(guān)鍵是深思熟慮的實(shí)踐:不僅要一遍又一遍地做,還要挑戰(zhàn)一項(xiàng)超越您當(dāng)前能力的任務(wù)來挑戰(zhàn)自己,嘗試一下,分析執(zhí)行前后的表現(xiàn),并糾正任何錯誤。然后重復(fù)。再重復(fù)一次。似乎沒有真正的捷徑:即使是4歲的音樂天才莫扎特,也花了13年的時(shí)間才開始創(chuàng)作世界一流的音樂。在另一種類型中,甲殼蟲樂隊(duì)似乎爆出一連串的#1熱門歌曲,并在1964年的埃德·沙利文(Ed Sullivan)演出中露面。但是,自1957年以來,他們一直在利物浦和漢堡的小型俱樂部打球,盡管如此,他們?nèi)匀痪哂芯薮蟮奈υ谠缙?,他們的第一個(gè)重大成功就是Sgt。胡椒,于1967年發(fā)行。馬爾科姆·格拉德威爾(Malcolm Gladwell)推廣了這個(gè)想法,盡管他專注于10,000小時(shí)而不是10年。亨利·卡蒂?!げ祭咨℉enri Cartier-Bresson,1908-2004年)還有另一個(gè)度量標(biāo)準(zhǔn):“您的前10,000張照片是最糟糕的?!?(他沒想到數(shù)碼相機(jī)會在一個(gè)星期內(nèi)達(dá)到這個(gè)目標(biāo)。)真正的專業(yè)知識可能需要一輩子:塞繆爾·約翰遜(Samuel Johnson(1709-1784))說:“只有通過一輩子;不要以較低的價(jià)格購買?!眴蘵c(1340-1400)抱怨說:“ lyf太短了,工藝太長了?!毕2死祝s公元前400年)以其摘錄“ ars longa,vita brevis”而著稱,這是更長的引文“ Ars longa,vita brevis,occasio praeceps,experimentum perculosum,iudicium difficile”的一部分,英語中用“ Life”表示。短,工藝長,機(jī)會稍縱即逝,實(shí)驗(yàn)詭reach,判斷困難?!碑?dāng)然,沒有一個(gè)數(shù)字可以作為最終答案:假設(shè)所有技能(例如編程,下棋,下棋和玩音樂)可能都需要完全相同的時(shí)間來掌握,這似乎是不合理的,也不會所有人都花費(fèi)完全相同的時(shí)間。正如K. Anders Ericsson教授所說:“在大多數(shù)領(lǐng)域,即使是最有才華的個(gè)人也需要多少時(shí)間才能達(dá)到最高水平。令人難以置信的是,10,000小時(shí)的工作時(shí)間使您感覺我們正在談?wù)摱嗄昴承┤藭f,那些天生才華橫溢的人每周必須花費(fèi)10到20個(gè)小時(shí)才能達(dá)到最高水平。”所以你要成為一名程序員這是我編程成功的秘訣:對編程感興趣,并做一些有趣的事情。確保它保持足夠的樂趣,以便您愿意投入十年/ 10,000小時(shí)的時(shí)間。程序。最好的學(xué)習(xí)方法就是邊做邊學(xué)。從技術(shù)上來說,“在一定范圍內(nèi),個(gè)人的最高績效不會根據(jù)擴(kuò)展經(jīng)驗(yàn)而自動獲得,但是即使是經(jīng)驗(yàn)豐富的個(gè)人,由于有意改進(jìn)也可以提高績效水平。 ?!?(p。366)和“最有效的學(xué)習(xí)需要對特定個(gè)體具有適當(dāng)難度級別的明確定義的任務(wù),信息反饋以及重復(fù)和糾正錯誤的機(jī)會?!?(第20-21頁)《實(shí)踐中的認(rèn)知:日常生活中的思維,數(shù)學(xué)和文化》是對此觀點(diǎn)的有趣參考。與其他程序員交談;閱讀其他程序。這比任何書籍或培訓(xùn)課程都重要。如果需要,可以在大學(xué)學(xué)習(xí)四年(或者在研究生院學(xué)習(xí)四年)。這將使您能夠訪問一些需要證書的工作,并且可以使您對該領(lǐng)域有更深入的了解,但是,如果您不喜歡學(xué)校,則可以(有一定的奉獻(xiàn)精神)獨(dú)自或在工作中獲得類似的經(jīng)驗(yàn)。 。無論如何,僅靠書籍學(xué)習(xí)是不夠的。 《新黑客字典》的作者埃里克·雷蒙德(Eric Raymond)表示:“計(jì)算機(jī)科學(xué)教育不能像學(xué)習(xí)畫筆和顏料那樣使任何人成為專家程序員?!蔽以?jīng)雇用過的最好的程序員之一只有高中學(xué)位。他開發(fā)了許多出色的軟件,擁有自己的新聞組,并擁有足夠的股票期權(quán)來購買自己的夜總會。與其他程序員一起從事項(xiàng)目。在某些項(xiàng)目中成為最好的程序員;在其他人身上最糟糕。當(dāng)您處于最佳狀態(tài)時(shí),就可以測試自己領(lǐng)導(dǎo)項(xiàng)目的能力,并用自己的遠(yuǎn)見激發(fā)他人的才能。在最壞的情況下,您將學(xué)習(xí)大師的所作所為,并了解他們不喜歡做的事情(因?yàn)樗麄冏屇鸀樗麄冏觯?。在其他程序員之后從事項(xiàng)目。了解別人編寫的程序??纯串?dāng)原始程序員不在時(shí)需要理解和修復(fù)它的過程。考慮如何設(shè)計(jì)您的程序,使那些在您之后維護(hù)它們的人更輕松。學(xué)習(xí)至少六種編程語言。包括一種強(qiáng)調(diào)類抽象的語言(如Java或C ++),一種強(qiáng)調(diào)功能抽象的語言(如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 ++委員會,也可以確定您的本地編碼樣式是否具有2或4個(gè)空格縮進(jìn)級別。無論哪種方式,您都可以了解其他人在某種語言中的喜好,他們的感受有多深,甚至可能很少了解他們?yōu)槭裁慈绱?。具有良好的意識,可以盡快開始語言標(biāo)準(zhǔn)化工作??紤]到所有這些,僅通過學(xué)習(xí)書籍就能獲得多大的成績值得懷疑。在我的第一個(gè)孩子出生之前,我閱讀了所有“如何做”書,仍然覺得自己是一個(gè)笨手笨手的新手。 30個(gè)月后,當(dāng)我的第二個(gè)孩子到期時(shí),我是否又回到書店復(fù)習(xí)了?否。相反,我依靠自己的個(gè)人經(jīng)歷,事實(shí)證明,與專家撰寫的成千上萬頁相比,這對我來說更加有用和令人放心。弗雷德·布魯克斯(Fred Brooks)在他的論文《無銀子彈》中確定了一個(gè)由三部分組成的計(jì)劃,以尋找優(yōu)秀的軟件設(shè)計(jì)師:盡早系統(tǒng)地確定頂級設(shè)計(jì)師。指派職業(yè)指導(dǎo)者負(fù)責(zé)潛在客戶的發(fā)展,并仔細(xì)保存職業(yè)檔案。為成長中的設(shè)計(jì)師提供互動和相互刺激的機(jī)會。假設(shè)某些人已經(jīng)具備成為優(yōu)秀設(shè)計(jì)師所需的素質(zhì);工作是適當(dāng)?shù)睾弪_他們。艾倫·珀利斯(Alan Perlis)更簡潔地說:“每個(gè)人都可以學(xué)會雕刻:必須教導(dǎo)米開朗基羅如何不做。偉大的程序員也是如此?!迸謇梗≒erlis)說,偉人的內(nèi)在素質(zhì)超越了他們的訓(xùn)練。但是質(zhì)量從何而來?是天生的嗎?還是他們通過勤奮發(fā)展?正如奧古斯特·古斯托(Ratatouille的虛構(gòu)廚師)所說,“任何人都可以做飯,但只有無所畏懼的人才能做得好。”我認(rèn)為這更多是愿意花很大的時(shí)間去思考認(rèn)可的實(shí)踐。但是也許無所畏懼是一種概括的方式?;蛘?,正如古斯托(Gusteau)的批評家安東·埃戈(Anton Ego)所說:“不是每個(gè)人都能成為一名偉大的藝術(shù)家,但是偉大的藝術(shù)家可以來自任何地方?!币虼?,繼續(xù)購買那本Java / Ruby / Javascript / PHP書;您可能會從中受益匪淺。但是您不會在24小時(shí)或21天之內(nèi)改變自己的生活,也不會改變自己真正的整體專業(yè)知識。如何努力在24個(gè)月內(nèi)不斷改進(jìn)?好吧,現(xiàn)在您開始有所建樹...參考文獻(xiàn)本杰明·布魯姆(ed。),《年輕人的發(fā)展才能》,巴蘭廷,1985年。布魯克斯,弗雷德,《無銀子彈》,IEEE計(jì)算機(jī),第1卷。 20號1987年第4期,第4頁。 10-19。布萊恩(W.L.) &Harter,N .:“電報(bào)語言研究:習(xí)性等級的獲得?!缎睦碓u論》,1899年,第8期,第345-375頁海耶斯(John Hayes),《完全問題解決者》勞倫斯·艾爾鮑姆(Lawrence Erlbaum),1989年。Chase,William G.和Simon,Herbert A.“國際象棋的認(rèn)知”認(rèn)知心理學(xué),1973,4,55-81。Lave,Jean,《實(shí)踐中的認(rèn)知:日常生活中的思維,數(shù)學(xué)和文化》,劍橋大學(xué)出版社,1988年。答案典型PC上各種操作的大概時(shí)間:執(zhí)行典型指令1 / 1,000,000,000秒= 1納秒從L1緩存中獲取0.5納秒分支錯誤預(yù)測5納秒從二級緩存中獲取7納秒互斥鎖25納秒從主內(nèi)存獲取100納秒通過1Gbps網(wǎng)絡(luò)發(fā)送2K字節(jié)20,000納秒從內(nèi)存250,000納秒順序讀取1MB從新磁盤位置獲?。ㄋ阉鳎?,000,000納秒從磁盤20,000,000納秒順序讀取1MB將數(shù)據(jù)包發(fā)送到歐洲并返回150毫秒= 150,000,000納秒附錄:語言選擇一些人問他們應(yīng)該首先學(xué)習(xí)哪種編程語言。沒有答案,但是請考慮以下幾點(diǎn):使用你的朋友。當(dāng)被問及“我應(yīng)該使用哪種操作系統(tǒng),Windows,Unix或Mac?”時(shí),我的回答通常是:“使用您的朋友使用的任何軟件”。從朋友那里學(xué)習(xí)的好處將抵消操作系統(tǒng)之間或編程語言之間的任何內(nèi)在差異。還請考慮您的未來朋友:如果繼續(xù),您將成為程序員社區(qū)的一部分。您選擇的語言是一個(gè)正在成長的大型社區(qū)還是一個(gè)瀕臨滅絕的社區(qū)?是否有書籍,網(wǎng)站和在線論壇可提供答案?你喜歡那些論壇里的人嗎?把事情簡單化。諸如C ++和Java之類的編程語言是由經(jīng)驗(yàn)豐富的程序員組成的大型團(tuán)隊(duì)設(shè)計(jì)的,這些團(tuán)隊(duì)關(guān)心其代碼的運(yùn)行時(shí)效率。結(jié)果,這些語言具有針對這些情況設(shè)計(jì)的復(fù)雜部分。您擔(dān)心要學(xué)習(xí)編程。您不需要那種麻煩。您需要一種被設(shè)計(jì)為易于由單個(gè)新程序員學(xué)習(xí)和記住的語言。玩。您寧愿學(xué)習(xí)彈鋼琴的方式:正常的互動方式,即敲擊琴鍵后便會聽到每個(gè)音符,也就是“批量”模式,即在整首歌結(jié)束后才聽到音符。 ?顯然,交互模式使鋼琴和編程學(xué)習(xí)變得更加容易。堅(jiān)持使用交互式模式的語言并使用它。給定這些條件,我對第一種編程語言的建議是Python或Scheme。另一個(gè)選擇是Javascript,不是因?yàn)樗菫槌鯇W(xué)者精心設(shè)計(jì)的,而是因?yàn)橛泻芏嘣诰€教程,例如Khan Academy的教程。但是您的情況可能會有所不同,還有其他不錯的選擇。如果您的年齡是個(gè)位數(shù),則您可能更喜歡Alice或Squeak或Blockly(年齡較大的學(xué)習(xí)者可能會喜歡)。重要的是您選擇并開始。附錄:書籍和其他資源有幾個(gè)人問他們應(yīng)該從中學(xué)到什么書和網(wǎng)頁。我重申“僅靠書本學(xué)習(xí)是不夠的”,但我可以推薦以下內(nèi)容:方案:計(jì)算機(jī)程序的結(jié)構(gòu)和解釋(Abelson和Sussman)可能是計(jì)算機(jī)科學(xué)的最好入門,它確實(shí)教授編程作為理解計(jì)算機(jī)科學(xué)的一種方式。您可以在本書上在線觀看講座視頻,以及在線全文。這本書極具挑戰(zhàn)性,將淘汰一些可能通過其他方法成功的人。方案:如何設(shè)計(jì)程序(Felleisen等人)是有關(guān)如何以優(yōu)雅和實(shí)用的方式實(shí)際設(shè)計(jì)程序的最佳書籍之一。Python:Python編程:CS入門(Zelle)是使用Python的不錯的入門。Python:Python.org上提供了一些在線教程。Oz:計(jì)算機(jī)編程的概念,技術(shù)和模型(Van Roy和Haridi)被某些人視為Abelson&Sussman的現(xiàn)代繼任者。這是一門編程的大創(chuàng)意,涵蓋了比Abelson&Sussman更大的范圍,同時(shí)也許更易于閱讀和遵循。它使用的語言是Oz,該語言雖然鮮為人知,但作為學(xué)習(xí)其他語言的基礎(chǔ)。 <筆記T. Capey指出,亞馬遜上的“完全解決問題”頁面現(xiàn)在在“購買此商品的客戶也購買了這些商品”部分下有“ 21天內(nèi)自學(xué)孟加拉語”和“自學(xué)語法和風(fēng)格”書。 我猜想看那本書的人很大一部分來自此頁面。 感謝Ross Cohen為希波克拉底提供的幫助

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 為什么每個(gè)人都這么著急?走進(jìn)任何書店,您將看到如何在24小時(shí)內(nèi)自學(xué)Java,以及無窮無盡的變體,可以在幾天或幾小時(shí)...
    函數(shù)解析式閱讀 176評論 0 0
  • 十年自學(xué)編程 彼得·諾維格 為什么每個(gè)人都這么著急? 走進(jìn)任何書店,您將看到如何在24小時(shí)內(nèi)自學(xué)Java,以及無窮...
    陳笑揚(yáng)閱讀 254評論 0 0
  • 為什么每個(gè)人都這么著急?走進(jìn)任何書店,您將看到如何在24小時(shí)內(nèi)自學(xué)Java,以及無窮無盡的變體,可以在幾天或幾小時(shí)...
    函數(shù)解析式閱讀 119評論 0 0
  • 為什么每個(gè)人都這么著急? 走進(jìn)任何書店,您將看到如何在24小時(shí)內(nèi)自學(xué)Java,以及無窮無盡的變體,可以在幾天或幾小...
    小楊很nice閱讀 168評論 0 0
  • 十年內(nèi)自學(xué)編程 彼得·諾維格 為什么大家都這么著急? 走進(jìn)任何一家書店,您將看到如何在24小時(shí)內(nèi)教會自己Java,...
    見背閱讀 194評論 0 1

友情鏈接更多精彩內(nèi)容