<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          掐指一算,我學(xué)編程 13 年了!

          共 4266字,需瀏覽 9分鐘

           ·

          2021-09-07 14:25

          周末好呀,我是二哥。

          剛認(rèn)識(shí)了一個(gè)朋友 HexUp,他是浙大的博士生,倆人簡(jiǎn)單地聊了聊,還互吹了一番,哈哈哈。


          「Teach yourself programming in 10 years」是谷歌研究院院長(zhǎng) Peter Norvig 的經(jīng)典好文,我很早之前就看了,確實(shí)講得非常深刻,對(duì)我有很大的啟發(fā)。剛好 HexUp 翻譯了一下,我就轉(zhuǎn)過(guò)來(lái)分享給大家讀一讀,應(yīng)該會(huì)很有收獲。

          掐指一算,我學(xué)編程也 13 年了,時(shí)間過(guò)得可真快。我上大學(xué)的那會(huì),圖書(shū)館里好多書(shū)都是《21 天教會(huì)你 XXX》,真的——沒(méi)少看啊??。

          大家可以回想一下,你們學(xué)校的圖書(shū)館是不是也有不少這樣的書(shū)?更過(guò)分的是,還有《24 小時(shí)學(xué)會(huì) Java》這樣的書(shū),旁邊還會(huì)有各種變種,教你怎么在幾個(gè)小時(shí)或者幾天內(nèi)學(xué)會(huì) C、SQL、Ruby、算法等等。

          用亞馬遜的高級(jí)搜索[標(biāo)題:teach, yourself, hours, since:2000]可以找到 512 本這樣的書(shū),其中排名前 10 的有 9 本都是編程的書(shū)籍(另外一本是關(guān)于記賬的)。你用 learn 替代 teach yourself,或者用 days 替代 hours 可以得到相同的結(jié)果。

          這么看來(lái),要么就是人們學(xué)習(xí)編程非常地匆忙,要么就是編程學(xué)起來(lái)比其他東西簡(jiǎn)單多了。Felleisen 等人在他們《如何設(shè)計(jì)程序》一書(shū)中承認(rèn)了這個(gè)潮流。他們說(shuō):“壞的編程是容易的,就算是白癡也能在 21 天里面學(xué)會(huì)壞編程?!?/p>

          Abstruse Goose 網(wǎng)站也有一個(gè)這樣的漫畫(huà)來(lái)諷刺這種現(xiàn)象。

          我們來(lái)分析一下,一個(gè)像《24 小時(shí)內(nèi)教會(huì)你自己 C++》這樣的標(biāo)題意味著什么:

          • 自學(xué):在 24 小時(shí)內(nèi),你并沒(méi)有時(shí)間去寫(xiě)幾個(gè)有意義的程序,并且從中總結(jié)成功的經(jīng)驗(yàn)和吸取教訓(xùn)。你沒(méi)有時(shí)間去跟一個(gè)經(jīng)驗(yàn)豐富的程序員合作,然后理解在真正的 c++環(huán)境里面工作是什么樣的。簡(jiǎn)單來(lái)說(shuō),你沒(méi)有時(shí)間來(lái)學(xué)太多東西。所以這本書(shū)只能談?wù)撘恍┠w淺的認(rèn)知,而不是深入的理解。Alexander Pope(詩(shī)人、諷刺作家)說(shuō)過(guò),只知皮毛是一件危險(xiǎn)的事情(A little knowledge is a dangerous thing)
          • C++:在 24 小時(shí)內(nèi),你也許能夠?qū)W會(huì) C++的一些語(yǔ)法(如果你已經(jīng)知道其他編程語(yǔ)言),但是你并不能學(xué)會(huì)如何使用這門(mén)語(yǔ)言。簡(jiǎn)單來(lái)說(shuō),假如你是一個(gè) Basic 程序員,你可以學(xué)會(huì)如何用 C++的語(yǔ)法按照 Basic 的風(fēng)格寫(xiě)程序,但是你無(wú)法學(xué)習(xí)到 C++語(yǔ)法真正的優(yōu)勢(shì)(和劣勢(shì))。那這又有什么意義呢?Alan Perils 曾經(jīng)說(shuō)過(guò):“一門(mén)無(wú)法影響你對(duì)編程看法的語(yǔ)言是不值得學(xué)習(xí)的?!庇幸环N可能是,你需要學(xué)習(xí)一點(diǎn)點(diǎn) C++(也有可能是一些類似 JavaScript 或者 Processing 的東西)來(lái)跟某個(gè)現(xiàn)存的工具交互,以完成某個(gè)特定的任務(wù)。但這其實(shí)不是在學(xué)習(xí)如何編程,而是在學(xué)習(xí)如何完成那項(xiàng)任務(wù)。
          • 在 24 小時(shí)內(nèi):不幸的是,這不夠,下一節(jié)會(huì)說(shuō)明。

          用十年時(shí)間自學(xué)編程

          研究者已經(jīng)證明了,在眾多的領(lǐng)域中,任何一個(gè)都需要 10 年左右的時(shí)間來(lái)培養(yǎng)一個(gè)專家,包括下棋、作曲、電報(bào)操作、繪畫(huà)、彈鋼琴、游泳、網(wǎng)球、神經(jīng)心理學(xué)和拓?fù)溲芯俊?/p>

          關(guān)鍵在于刻意的練習(xí):不僅僅是一遍又一遍的重復(fù),而是用正好超出你能力邊界一點(diǎn)點(diǎn)的任務(wù)挑戰(zhàn)自己。嘗試,并在過(guò)程中和之后分析自己的表現(xiàn),并糾正任何錯(cuò)誤。然后就是重復(fù),再重復(fù)。

          看起來(lái)并沒(méi)有一個(gè)明顯的捷徑:即便是 4 歲就已經(jīng)是音樂(lè)神童的莫扎特,也要等到 13 年之后才開(kāi)始創(chuàng)作出世界級(jí)的音樂(lè)。Beatles 樂(lè)隊(duì)看起來(lái)像是從 1964 年的一場(chǎng)演唱會(huì)開(kāi)始突然火起來(lái),但是他們從 1957 年開(kāi)始就在利物浦和漢堡的小酒吧里面表演了,而直到 1967 年他們才創(chuàng)作出第一個(gè)真正的偉大關(guān)鍵作品,雖然在那之前他們已經(jīng)挺火的了。

          Malcolm Galdwell 推廣了這個(gè)概念,不過(guò)他更強(qiáng)調(diào)的是 10000 個(gè)小時(shí)而不是 10 年。Henri Cartier-Bresson(1908-2004)有另一個(gè)標(biāo)準(zhǔn):“你的頭 10000 張照片是你最差的作品?!保ㄋ麤](méi)預(yù)料到的是,用數(shù)碼相機(jī),有些人一周內(nèi)就能拍出這么多照片)真正的專家級(jí)精通可能需要一生的時(shí)間:Samuel Johnson(1709-1784)說(shuō)過(guò):“任何領(lǐng)域的精通只能用一生的努力去獲取;不能用更少的代價(jià)來(lái)獲得?!盋haucer(1340-1400)曾經(jīng)抱怨過(guò)“人生太短,技藝卻需要這么久去學(xué)習(xí)”。

          Hippocrates(希波克拉底)有句名言:“人生短暫,技藝長(zhǎng)久,機(jī)會(huì)稍縱即逝,經(jīng)驗(yàn)不可靠,決策困難”。當(dāng)然,沒(méi)有一個(gè)數(shù)字是最終的答案:因?yàn)椴豢赡芩械募寄埽ň幊?,下棋,音?lè)等等)都會(huì)花費(fèi)相同的時(shí)間來(lái)獲得。

          就像 K. Anders Ericsson 教授所說(shuō):“在大多數(shù)領(lǐng)域內(nèi),即便是最天才的人達(dá)到最高水平表現(xiàn)所需要的時(shí)間也是值得注意的。1 萬(wàn)小時(shí)這個(gè)數(shù)字只是給你一個(gè)大致的感覺(jué),我們?cè)谡務(wù)撁恐?10 到 20 個(gè)小時(shí)的努力,天才也需要多年才能達(dá)到的最高水平。”

          所以你想成為一個(gè)程序員

          這里是我的編程成功秘訣:

          • 對(duì)編程產(chǎn)生興趣,然后寫(xiě)一些有趣的程序。確保它始終是有趣的,這樣你才能愿意投入 10 年或者 1 萬(wàn)小時(shí)
          • 寫(xiě)程序。最好的學(xué)習(xí)方法是通過(guò)實(shí)踐學(xué)習(xí)。更技術(shù)地講,“個(gè)體的最高水平不是靠經(jīng)驗(yàn)的積累自動(dòng)獲得的,即便是經(jīng)驗(yàn)豐富的人仍然能夠通過(guò)刻意地訓(xùn)練提升自己的表現(xiàn)?!薄白钣行У膶W(xué)習(xí)方法需要一個(gè)定義良好的任務(wù),配合合理的難度曲線,富有信息的反饋,重復(fù)和糾錯(cuò)的機(jī)會(huì)?!薄秾?shí)踐中的認(rèn)知:心靈,數(shù)學(xué)和日常生活中的文化》這本書(shū)提供了一個(gè)有趣的參考。
          • 跟其他程序員對(duì)話交流;讀他們的程序。這比任何書(shū)籍或者培訓(xùn)課程都重要。
          • 如果你想的話,上四年大學(xué)(或者進(jìn)一步讀研)。這會(huì)讓你獲得需要學(xué)歷證明的敲門(mén)磚,而且會(huì)讓你對(duì)這個(gè)領(lǐng)域有一個(gè)更深的認(rèn)知,但是如果你不喜歡上學(xué)的話,你可以(經(jīng)過(guò)一些投入)靠自己或者在工作中獲得類似的經(jīng)驗(yàn)。在任何一種情況中,只看書(shū)都是不夠的。Eric Raymond,《新黑客字典》的作者,說(shuō)過(guò):“研究刷子和顏料不能產(chǎn)生偉大的畫(huà)家,計(jì)算機(jī)教育在培養(yǎng)專家程序員上的效果也不比這個(gè)好?!蔽以?jīng)雇傭過(guò)的最好的程序員之一只有高中學(xué)歷,他創(chuàng)作了很多很棒的軟件,有自己的新聞群組,并且賺到了足夠的股票期權(quán)買下了自己的夜店。
          • 跟其他程序員一起合作項(xiàng)目。在某些項(xiàng)目上成為最好的一個(gè),在某些項(xiàng)目中成為最差的一個(gè)。當(dāng)時(shí)是最好的那個(gè)的時(shí)候,檢驗(yàn)一下自己領(lǐng)導(dǎo)一個(gè)項(xiàng)目的能力,并且用自己的視野來(lái)激勵(lì)其他人。當(dāng)你是最差的那一個(gè)的時(shí)候,你學(xué)習(xí)其他大師的方法,學(xué)習(xí)他們不喜歡做什么(因?yàn)樗麄儠?huì)讓你幫他們做這種事)。
          • 接手做其他程序員做過(guò)的項(xiàng)目。理解其他程序員寫(xiě)的程序??纯蠢斫獠⑿迯?fù)一個(gè)項(xiàng)目(當(dāng)原始作者不在的時(shí)候)需要什么。思考一下如何設(shè)計(jì)程序,讓后來(lái)者可以在你之后更輕松地維護(hù)。
          • 學(xué)習(xí)至少半打(6 門(mén))編程語(yǔ)言。包括一門(mén)強(qiáng)調(diào)類別抽象的語(yǔ)言(比如 Java 或者 C++),一門(mén)強(qiáng)調(diào)函數(shù)式抽象的(比如 Lisp,ML 或者 Haskell),一門(mén)強(qiáng)調(diào)語(yǔ)法抽象的(比如 Lisp),一門(mén)強(qiáng)調(diào)聲明式的(比如 Prolog 或者 C++模板),一門(mén)強(qiáng)調(diào)并行的(比如 Clojure 或者 Go)。
          • 記住,計(jì)算機(jī)科學(xué)里面有一個(gè)計(jì)算機(jī)。知道你的計(jì)算機(jī)執(zhí)行一條指令需要多久,從內(nèi)存中取一個(gè)字需要多久,從硬盤(pán)中連續(xù)讀取字需要多久,在硬盤(pán)上尋找新的地址需要多久(答案在后面)。
          • 參與一個(gè)語(yǔ)言標(biāo)準(zhǔn)化的工作。可以是 ANSI C++委員會(huì),或者是參與決策你的本地的代碼規(guī)范里面縮進(jìn)是用 2 個(gè)空格還是 4 個(gè)空格。任何一種方式,你都可以學(xué)習(xí)到其他人喜歡一個(gè)語(yǔ)言的地方,他們的深入感受,以及他們?yōu)槭裁催@么想。
          • 有良好的意識(shí)可以盡快從語(yǔ)言的標(biāo)準(zhǔn)化努力中脫身。

          所有的這些在心中,那就有個(gè)問(wèn)題,僅僅靠看書(shū)能走多遠(yuǎn)呢?我的一個(gè)小孩出生之前,我閱讀了所有的如何帶孩子的書(shū),但我仍然毫無(wú)頭緒。30 個(gè)月之后,我的第二個(gè)小孩出生了,我還會(huì)去看這些書(shū)嗎?不會(huì)了。相反的,我依靠我的個(gè)人經(jīng)驗(yàn),實(shí)踐證明,它們比專家寫(xiě)的書(shū)有用靠譜多了。

          Fred Brooks 在他的文章《No Silver Bullet》中找到了一個(gè)三步計(jì)劃,用來(lái)發(fā)掘偉大的程序員:

          1. 系統(tǒng)性地發(fā)掘頂級(jí)設(shè)計(jì)者,越早越好
          2. 分配一個(gè)職業(yè)導(dǎo)師,為希望之星的發(fā)展負(fù)責(zé),并謹(jǐn)慎地保持職業(yè)生涯
          3. 給成長(zhǎng)的設(shè)計(jì)者提供機(jī)會(huì),讓他們跟其他人交互并互相刺激

          這里面假定一些人已經(jīng)有了成為好的設(shè)計(jì)者的潛力;所需要的工作只是誘導(dǎo)他們發(fā)展。Alan Perils 有一個(gè)更簡(jiǎn)要的說(shuō)法:“每個(gè)人都可以被教會(huì)如何雕刻,米開(kāi)朗基羅只需要被教會(huì)怎么別去雕刻。偉大的程序員也一樣?!盤(pán)erils 的意思是偉大的人有超越了訓(xùn)練的內(nèi)在特質(zhì)。但這些特質(zhì)是從哪來(lái)的呢?是與生俱來(lái)的嗎?還是靠勤奮培養(yǎng)的?就像 Auguste Gusteau 說(shuō)的:“每個(gè)人都能烹飪,但只有無(wú)所畏懼的人才能偉大?!卑凑瘴业睦斫?,關(guān)鍵在于將自己的大部分時(shí)間投入到刻意訓(xùn)練的意愿。但也許無(wú)所畏懼就是總結(jié)它的一種方式?;蛘呦?Gusteau 的評(píng)論家 Anton Ego 說(shuō)的:“不是每個(gè)人都能成為偉大的藝術(shù)家,但是一個(gè)偉大的藝術(shù)家可能來(lái)自任何地方?!?/p>

          所以,可以繼續(xù),買下那本 Java/Ruby/Javascript/PHP 的書(shū);你很可能會(huì)發(fā)現(xiàn)還是有點(diǎn)用處。但是它不能在 24 小時(shí)或者 21 天內(nèi)改變你的生命,或者你的真正編程技巧。繼續(xù)堅(jiān)持持續(xù)提升 24 個(gè)月呢?很好,你現(xiàn)在正開(kāi)始向某個(gè)地方前進(jìn)了……

          -----------

          分享的最后,簡(jiǎn)單說(shuō)兩句吧。

          13 年前,在圖書(shū)館看到 21 天學(xué)會(huì) xxx 這些書(shū)的時(shí)候,確實(shí)很激動(dòng),以為自己從此就走上了人生巔峰。

          13 年后,依然覺(jué)得自己是個(gè)菜逼,編程這條路上還有太多的未知需要我去學(xué)習(xí),去探索,知識(shí)的邊界隨著時(shí)間的推移,沒(méi)變小卻變更大了。

          大家都學(xué)習(xí)編程多少時(shí)間了呢?可以在評(píng)論區(qū) show 一下。覺(jué)得這篇內(nèi)容有幫助的小伙伴,可以把 點(diǎn)贊+在看 順手安排一下!

          推薦閱讀

          瀏覽 70
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丁香五月激情戏91 | 青娱乐91免费视频 | 我想看操逼视频 | 人人操人人超碰 | 免费看片A级毛片免费看电影男 |