乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      十年學(xué)會編程

       日月911 2019-11-15

      作者:Peter NorviG

      翻譯:劉延棟 ,公眾號“軟件那些事兒”

      這篇文章已經(jīng)有很多人翻譯過了,我之所以再搞一次,首先是我覺得這文章真的很好,值得一搞再搞,其次,幾乎所有的版本都漏掉了一些語句,我猜可能是英文版更新過,但是,中文版沒有與時俱進(jìn)。

      如果再有人在我的公眾號里問我如何學(xué)習(xí)編程的話,我就可以把這個發(fā)給他了。

      為何每個人都急于求成?

      隨便走進(jìn)一家書店,都會看到類似《24小時學(xué)會Java》這樣的書,旁邊擺著的是大量諸如在幾天,幾小時之內(nèi)學(xué)會C語言,SQL,Ruby以及算法這樣的書。

      如果使用Amazon上的高級搜索,使用title: teach, yourself, hours, since: 2000這個關(guān)鍵字來搜索,將會返回512本書。最靠前的10本書中,有9本是編程的書(唯一的例外是一本記賬的書)。如果把關(guān)鍵字”teach yourself”替換成”learn”,或者將”hours”替換成”days”,返回的結(jié)果大同小異。

      很明顯,人們在學(xué)習(xí)編程的時候喜歡大躍進(jìn),或者認(rèn)為編程比起其它事情來,是小菜一碟的事。Felleisen在他的書《How to Design Program》里說:“編寫爛程序一點(diǎn)也不難。傻瓜也可以在21天內(nèi)學(xué)會,即使他們是傻逼?!痹诟阈β嬀W(wǎng)站Abtruse Goose也在這個漫畫中表達(dá)了同樣的看法。

      我們來看看類似《24小時自學(xué)C++》這種標(biāo)題黨,到底說的什么鬼東西:

      • 自學(xué): 24小時之內(nèi),你沒有時間寫幾個有意義的程序,也就無法從成功或失敗中學(xué)到經(jīng)驗(yàn)。24小時之內(nèi),你沒有時間和一個有經(jīng)驗(yàn)的程序員合作交流,也就無從理解使用C++編程的真實(shí)場景。簡單來說,時間太短,你啥也學(xué)不到。因此,有這種干貨標(biāo)題的速成書,只是讓你走馬觀花的瞧一下,絕非深入的理解。18世紀(jì)的英國詩人亞歷山大·蒲柏曾說過:“一知半解”是一件危險(xiǎn)的事情。這個哥哥還給牛頓寫了最出名的墓志銘之一:“自然和自然律隱沒在黑暗中;上帝說,讓牛頓去吧!遂一片光明?!?/p>

      • C++: (如果你有一定的編程基礎(chǔ)),在24小時之內(nèi),能學(xué)會一些C++的語法,但是,僅此而已了。如果你以前是個Basic語言的程序員,你可以寫一些語法是C++,但是風(fēng)格是Basic的程序,但是,24小時之內(nèi),C++語言的精華或糟粕,你都學(xué)不到。重點(diǎn)是什么?(首界圖靈獎得主)Alan Perlis曾說過:“不能影響你編程思維方式的語言,是不值得學(xué)習(xí)的。”一個更加可能的場景是,在工作中,你不得不學(xué)習(xí)C++(或者JavaScript,Processing之類)的一小部分,來調(diào)用一些原有的接口,完成某個特定的任務(wù)。這種情況下,表面上說是在學(xué)習(xí)如何編程,其實(shí)只是在應(yīng)付一下手上的活。

      • 24小時內(nèi):很不幸,24小時太少了,原因下面告訴你。

      十年學(xué)會編程

      研究表明,想在任何領(lǐng)域成為專家,大概需要10年的時間,這些領(lǐng)域包括下棋,作曲,發(fā)電報(bào),彈鋼琴,游泳,打網(wǎng)球,研究神經(jīng)心理學(xué)和拓?fù)鋵W(xué)。

      關(guān)鍵在于有針對性的訓(xùn)練,而不是漫無目的重復(fù),訓(xùn)練的內(nèi)容要剛好超過你現(xiàn)有的水平,練習(xí)以后要分析你的表現(xiàn),改正發(fā)現(xiàn)的錯誤,然后重復(fù),再重復(fù)。

      沒有什么捷徑可走,即使是Mozart,一個4歲就能彈琴的音樂天才,也是用了13年的時間,才真正的寫出世界級的音樂作品。在流行音樂上,Beatles好像是在1964年訪美期間一夜成名的。實(shí)際上,他們從1957年就已經(jīng)開始在利物浦和漢堡的小酒館里唱歌了,他們組建樂隊(duì)的時間就更早了,他們第一張取得巨大成功的專輯《佩帕軍士》,是在1967年發(fā)行的。

      馬爾科姆·格拉德威爾讓這個理論廣為人知,雖然他說的是另一個說法,10000個小時而不是10年(這本書有中文翻譯版《異類 : 不一樣的成功啟示錄》)。

      法國現(xiàn)實(shí)主義攝影大師亨利·卡蒂埃-布列松有另外一個標(biāo)準(zhǔn),他說你的前10000張照片是你最差的。(當(dāng)然,這個攝影大師沒有意識到數(shù)碼相機(jī)的出現(xiàn),很多人能在一周內(nèi)就可以拍10,000張照片)

      真正的大師要用一生來完成,英國作家,文學(xué)評論家和詩人塞繆爾·約翰遜說過:“在任何領(lǐng)域取得卓越的成就都要用一生的努力,不要妄想可以投機(jī)取巧?!庇脑娙藛疼乓苍?jīng)說過:”吾生也有涯 而知也無涯?!?/p>

      同樣,公元前400年的希波克拉底也表達(dá)過類似的意思,他也認(rèn)為藝術(shù)沒有止境,生命卻有盡頭。他說的這句話有個更長的版本,翻譯成英語的意思是:“生命有盡頭,藝術(shù)無止境,機(jī)遇轉(zhuǎn)瞬即逝,練功走火入魔,決定優(yōu)柔寡斷?!?/p>

      當(dāng)然,不會有一個確定的答案告訴你需要多長時間,畢竟,假設(shè)掌握所有的技能(比如編程,下棋,跳棋和音樂)需要相同的時間也不合適,不同的人也會用不同的時間。

      K.Anders Ericsson教授說過:“值得注意的是,在大多數(shù)領(lǐng)域,即使你是個天才,要達(dá)到專家級別的高水平仍然需要時間。10000個小時只是給你一個概念,一個天才,如果每周練習(xí)10到20個小時的時間,仍然需要數(shù)年時間才能達(dá)到專家級別的水平?!?/p>

      所以你想成為一個程序員

      這是我編程成功的秘笈:

      要對編程感興趣,要從中能獲得快樂。保證編程足夠有趣,這樣才能讓你花10年的時間或者10,000個小時在上面也不覺得枯燥無味。

      動手編程。最好的學(xué)習(xí)方法是邊學(xué)邊做。常言道:“人的最高功力并不能通過做一天和尚撞一天鐘這樣的重復(fù)經(jīng)驗(yàn)獲得,但是,最高的功力可以通過有針對性的日復(fù)一日年復(fù)一年的訓(xùn)練來獲得?!辈⑶遥白钣行Ч膶W(xué)習(xí)需要有針對性的任務(wù),這些任務(wù)的難度還要因人而異,并且有合理的反饋渠道,并能夠根據(jù)這些反饋?zhàn)鞒鱿鄳?yīng)的改進(jìn)。”這些觀點(diǎn)引用自《Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life》這本書里。

      和其他的程序員交流,閱讀別人的代碼。這比看書或者參加培訓(xùn)課程要重要。

      如果你愿意,在大學(xué)里花上四年時間(或者再讀個研)。這能讓你獲得一些工作機(jī)會,也能讓你在這個領(lǐng)域有更深入的了解。但是,如果你一上學(xué)就頭痛,直接去工作也能獲得相同的經(jīng)驗(yàn)。無論是什么情況,讀死書肯定是不行的。計(jì)算機(jī)科學(xué)不會讓你成為編程專家,就像學(xué)習(xí)畫筆和顏料不可能讓你成為畫家一樣。這是Eric Raymond說的,他是New Hacker’s Dictionary字典的作者。我雇傭過的最好的程序員是個高中畢業(yè)的學(xué)生,他創(chuàng)造了偉大的軟件,Mozilla,他擁有自己的新聞組,賺到了足夠多的錢買了自己的酒吧。

      和其他的程序員一起參與一些項(xiàng)目。在一些項(xiàng)目中成為最出色的程序員;在另一些項(xiàng)目中當(dāng)最差勁的程序員。在當(dāng)最出色的程序員的時候,要測試你領(lǐng)導(dǎo)項(xiàng)目的能力,用你的視野來啟發(fā)別人。如果你是項(xiàng)目中最差的那個,要學(xué)習(xí)牛人們在做什么,如果他們不喜歡做的,你要拿來做。

      接手并推進(jìn)別人的項(xiàng)目。理解其他人寫的代碼。如果有別人沒有考慮到的問題,你能理解并修復(fù)它們。思考并設(shè)計(jì)你的軟件,讓這些軟件也容易被他人維護(hù)。

      學(xué)習(xí)至少6種(我不太清楚英語中的half dozen是什么意思,是虛指還是就是6種)編程語言。這6種語言中,包括一種支持抽象類的(例如Java或者C++),一種支持函數(shù)的(Lisp, ML或者Haskell),一種支持語義抽象的(Lisp),一種支持聲明規(guī)范的(Prolog或者C++模板),還有一種支持并發(fā)的(Clojure或Go)。

      記住,在“計(jì)算機(jī)科學(xué)”中在“計(jì)算機(jī)”這個詞語。理解執(zhí)行一條指令要花多長時間,從內(nèi)存中取一個字(要考慮緩存有沒有命中的情況)要多久,從硬盤中連續(xù)讀字節(jié)要多久,在硬盤中尋址定位要多久?

      參加語言的標(biāo)準(zhǔn)化工作。這可能是有關(guān) ANSI C++ 委員會,也可能是縮進(jìn)的風(fēng)格是兩格縮進(jìn)或四格縮進(jìn)。無論如何,你能從中學(xué)到其他人對語言的喜好,也能了解到他們熱愛的程度,甚至也許能知道一點(diǎn)他們?yōu)槭裁此麄儠@樣認(rèn)為?

      知道何時能從標(biāo)準(zhǔn)化語言的工作中脫身,越快越好。

      很難說能從書本中學(xué)到多少東西。我第一個小孩出生的時候,我讀了所有的“如何做”系列的書,但是,沒有什么頭緒。30個月以后,當(dāng)我的第二個孩子出生,我還要重溫一下那些書么?當(dāng)然不用了!我都已經(jīng)是老司機(jī)了,我完全靠我自己的經(jīng)驗(yàn),事實(shí)也證明我自己的經(jīng)驗(yàn)要勝過那些專家們寫的上千頁的書。

      弗雷德·布魯克斯在他的書《沒有銀彈》中給出了三條建議:

      • 盡早地系統(tǒng)地識別出頂級設(shè)計(jì)師

      • 每個人給分配一個職業(yè)規(guī)劃的導(dǎo)師

      • 讓成長中的設(shè)計(jì)師有機(jī)會互相切磋武藝

      此處的假設(shè)是有一些人天生有成為偉大設(shè)計(jì)師的潛質(zhì),然后,就是正確的去引導(dǎo)他們。艾倫·佩里斯一針見血地說:”假如每個人都可以學(xué)會雕刻,那就得教米開朗基羅哪些事不要去做。對于偉大程序員,也是如此?!?/p>

      Perlis認(rèn)為,偉大的人有一種內(nèi)在的特質(zhì),這種特質(zhì)往往比接受訓(xùn)練更重要。但是,這些特質(zhì)是從哪里來的呢?與生俱來的?還是通過后天勤奮而來的?

      正如動畫片《料理鼠王》里的幻象大廚Auguste Gusteau說的那樣:“誰都能做飯,但只有那些無所畏懼的人才能成為大廚!”我認(rèn)為“把你生命中的大部分時間花在有針對性的練習(xí)上”這種精神,看作一種自愿奉獻(xiàn)的精神!但或許“無所畏懼”才是體現(xiàn)這種精神的真諦?;蛘?,就像是《料理鼠王》里那個與 Gusteau 作對的刻薄的美食評論家 Anton Ego 說的那樣:“不是任何人都能成為偉大的藝術(shù)家,不過,偉大的藝術(shù)家可以來自任何地方。”

      所以,盡管買本 Java/Ruby/Javascript/PHP 的書吧。你可能會從中學(xué)到點(diǎn)兒有用的東西。但作為一個程序員,在 21 天內(nèi)或 24 小時內(nèi)改變你的人生,或者提高你實(shí)際的編程水平,這是不可能的。你嘗試過連續(xù) 24 個月不間斷的努力提高自己么?好吧,好吧,你該上路了……

      特別提醒: 本文還有中英文對照版

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多