• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            子彈 の VISIONS

            NEVER back down ~~

            C++博客 首頁 新隨筆 聯系 聚合 管理
              112 Posts :: 34 Stories :: 99 Comments :: 0 Trackbacks
            轉載自:http://www.javaresearch.org/article/showarticle.jsp?column=451&thread=12568

            10年編程無師自通
            FooSleeper 翻譯? (參與分:81145,專家分:3386)?? 發表:2004-03-08 11:17 ??更新:2005-01-12 10:18 ??版本:1.09 ??閱讀:21868

            原文:Teach?Yourself?Programming?in?Ten?Years
            作者:Peter?Norvig
            翻譯:郭曉剛(foosleeper@163.net
            最后修訂日期:2004-3-19
            2005-01-12增加了新的譯本鏈接。

            本中文譯本得到了Peter?Norvig的許可。


            為什么每個人都急不可耐?


            走進任何一家書店,你會看見《Teach?Yourself?Java?in?7?Days》(7天Java無師自通)的旁邊是一長排看不到盡頭的類似書籍,它們要教會你Visual?Basic、Windows、Internet等等,而只需要幾天甚至幾小時。我在Amazon.com上進行了如下搜索
                pubdate:?after?1992?and?title:?days?and?(title:?learn?or?title:?teach?yourself)
                (出版日期:1992年后?and?書名:天?and?(書名:學會?or?書名:無師自通))
            我一共得到了248個搜索結果。前面的78個是計算機書籍(第79個是《Learn?Bengali?in?30?days》,30天學會孟加拉語)。我把關鍵詞“days”換成“hours”,得到了非常相似的結果:這次有253本書,頭77本是計算機書籍,第78本是《Teach?Yourself?Grammar?and?Style?in?24?Hours》(24小時學會文法和文體)。頭200本書中,有96%是計算機書籍。
            結論是,要么是人們非常急于學會計算機,要么就是不知道為什么計算機驚人地簡單,比任何東西都容易學會。沒有一本書是要在幾天里教會人們欣賞貝多芬或者量子物理學,甚至怎樣給狗打扮。
            讓我們來分析一下像《Learn?Pascal?in?Three?Days》(3天學會Pascal)這樣的題目到底是什么意思:

            • 學會:在3天時間里,你不夠時間寫一些有意義的程序,并從它們的失敗與成功中學習。你不夠時間跟一些有經驗的程序員一起工作,你不會知道在那樣的環境中是什么滋味。簡而言之,沒有足夠的時間讓你學到很多東西。所以這些書談論的只是表面上的精通,而非深入的理解。如Alexander?Pope(譯注:英國詩人、作家,1688-1744)所言,一知半解是危險的(a?little?learning?is?a?dangerous?thing)。
            • Pascal:在3天時間里你可以學會Pascal的語法(如果你已經會一門類似的語言),但你無法學到多少如何運用這些語法。簡而言之,如果你是,比如說一個Basic程序員,你可以學會用Pascal語法寫出Basic風格的程序,但你學不到Pascal真正的優點(和缺點)。那關鍵在哪里?Alan?Perlis(譯注:ACM第一任主席,圖靈獎得主,1922-1990)曾經說過:“如果一門語言不能影響你對編程的想法,那它就不值得去學”。另一種觀點是,有時候你不得不學一點Pascal(更可能是Visual?Basic和JavaScript之類)的皮毛,因為你需要接觸現有的工具,用來完成特定的任務。但此時你不是在學習如何編程,你是在學習如何完成任務。
            • 3天:不幸的是,這是不夠的,正如下一節所言。



            10年編程無師自通


            一些研究者(HayesBloom)的研究表明,在許多領域,都需要大約10?年時間才能培養出專業技能,包括國際象棋、作曲、繪畫、鋼琴、游泳、網球,以及神經心理學和拓撲學的研究。似乎并不存在真正的捷徑:即使是莫扎特,他4?歲就顯露出音樂天才,在他寫出世界級的音樂之前仍然用了超過13年時間。再看另一種音樂類型的代表--披頭士,他們似乎是在1964年的Ed?Sullivan節目中突然冒頭的。但其實他們從1957年就開始表演了,即使他們很早就顯示出了巨大的吸引力,他們第一次真正的成功之作《Sgt.?Peppers》也要到1967年才發行。Samuel?Johnson(譯注:英國詩人)認為10?年還是不夠的:“任何領域的卓越成就都只能通過一生的努力來獲得;稍低一點的代價也換不來。”(Excellence?in?any?department?can?be?attained?only?by?the?labor?of?a?lifetime;?it?is?not?to?be?purchased?at?a?lesser?price.)?喬叟(譯注:Chaucer,英國詩人,1340-1400)也抱怨說:“生命如此短暫,掌握技藝卻要如此長久。”(the?lyf?so?short,?the?craft?so?long?to?lerne.)
            下面是我在編程這個行當里獲得成功的處方:

            • 對編程感興趣,因為樂趣而去編程。確定始終都能保持足夠的樂趣,以致你能夠將10年時間投入其中。
            • 跟其他程序員交談;閱讀其他程序。這比任何書籍或訓練課程都更重要。
            • 編程。最好的學習是從實踐中學習。用更加技術性的語言來講,“個體在特定領域最高水平的表現不是作為長期的經驗的結果而自動獲得的,但即使是非常富有經驗的個體也可以通過刻意的努力而提高其表現水平。”(p.?366),而且“最有效的學習要求為特定個體制定適當難度的任務,有意義的反饋,以及重復及改正錯誤的機會。”(p.?20-21)《Cognition?in?Practice:?Mind,?Mathematics,?and?Culture?in?Everyday?Life》(在實踐中認知:心智、數學和日常生活的文化)是關于這個觀點的一本有趣的參考書。
            • 如果你愿意,在大學里花上4年時間(或者再花幾年讀研究生)。這能讓你獲得一些工作的入門資格,還能讓你對此領域有更深入的理解,但如果你不喜歡進學校,(作出一點犧牲)你在工作中也同樣能獲得類似的經驗。在任何情況下,單從書本上學習都是不夠的。“計算機科學的教育不會讓任何人成為內行的程序員,正如研究畫筆和顏料不會讓任何人成為內行的畫家”,Eric?Raymond,《The?New?Hacker's?Dictionary》(新黑客字典)的作者如是說。我曾經雇用過的最優秀的程序員之一僅有高中學歷;但他創造出了許多偉大的軟件,甚至有討論他本人的新聞組,而且股票期權讓他達到我無法企及的富有程度(譯注:指Jamie?Zawinski,XEmacs和Netscape?Navigator的作者)。
            • 跟別的程序員一起完成項目。在一些項目中成為最好的程序員;在其他一些項目中當最差的一個。當你是最好的程序員時,你要測試自己領導項目的能力,并通過你的洞見鼓舞其他人。當你是最差的時候,你學習高手們在做些什么,以及他們不喜歡做什么(因為他們讓你幫他們做那些事)。
            • 接手別的程序員完成項目。用心理解別人編寫的程序。看看在沒有最初的程序員在場的時候理解和修改程序需要些什么。想一想怎樣設計你的程序才能讓別人接手維護你的程序時更容易一些。
            • 學會至少半打編程語言。包括一門支持類抽象(class?abstraction)的語言(如Java或C++),一門支持函數抽象(functional?abstraction)的語言(如Lisp或ML),一門支持句法抽象(syntactic?abstraction)的語言(如Lisp),一門支持說明性規約(declarative?specification)的語言(如Prolog或C++模版),一門支持協程(coroutine)的語言(如Icon或Scheme),以及一門支持并行處理(parallelism)的語言(如Sisal)。
            • 記住在“計算機科學”這個詞組里包含“計算機”這個詞。了解你的計算機執行一條指令要多長時間,從內存中取一個word要多長時間(包括緩存命中和未命中的情況),從磁盤上讀取連續的數據要多長時間,定位到磁盤上的新位置又要多長時間。(答案在這里。
            • 嘗試參與到一項語言標準化工作中。可以是ANSI?C++委員會,也可以是決定自己團隊的編碼風格到底采用2個空格的縮進還是4個。不論是哪一種,你都可以學到在這門語言中到底人們喜歡些什么,他們有多喜歡,甚至有可能稍微了解為什么他們會有這樣的感覺。
            • 擁有盡快從語言標準化工作中抽身的良好判斷力。

            抱著這些想法,我很懷疑從書上到底能學到多少東西。在我第一個孩子出生前,我讀完了所有“怎樣……”的書,卻仍然感到自己是個茫無頭緒的新手。30個月后,我第二個孩子出生的時候,我重新拿起那些書來復習了嗎?不。相反,我依靠我自己的經驗,結果比專家寫的幾千頁東西更有用更靠得住。
            Fred?Brooks在他的短文《No?Silver?Bullets》(沒有銀彈)中確立了如何發現杰出的軟件設計者的三步規劃:

            1. 盡早系統地識別出最好的設計者群體。
            2. 指派一個事業上的導師負責有潛質的對象的發展,小心地幫他保持職業生涯的履歷。
            3. 讓成長中的設計師們有機會互相影響,互相激勵。

            這實際上是假定了有些人本身就具有成為杰出設計師的必要潛質;要做的只是引導他們前進。Alan?Perlis說得更簡潔:“每個人都可以被教授如何雕塑;而對米開朗基羅來說,能教給他的倒是怎樣能夠不去雕塑。杰出的程序員也一樣”。
            所以盡管去買那些Java書;你很可能會從中找到些用處。但你的生活,或者你作為程序員的真正的專業技術,并不會因此在24小時、24天甚至24個月內發生真正的變化。


            參考文獻


            Bloom,?Benjamin?(ed.)?Developing?Talent?in?Young?People,?Ballantine,?1985.?
            Brooks,?Fred,?No?Silver?Bullets,?IEEE?Computer,?vol.?20,?no.?4,?1987,?p.?10-19.?
            Hayes,?John?R.,?Complete?Problem?Solver,?Lawrence?Erlbaum,?1989.?
            Lave,?Jean,?Cognition?in?Practice:?Mind,?Mathematics,?and?Culture?in?Everyday?Life,?Cambridge?University?Press,?1988.?


            答案


            各種操作的計時,2001年夏天在一臺典型的1GHz?PC上完成:
                執行單條指令            1?納秒?=?(1/1,000,000,000)?秒
                從L1緩存中取一個word        2?納秒
                從主內存中取一個word        10?納秒
                從連續的磁盤位置中取一個word    200?納秒
                從新的磁盤位置中取一個word(尋址) 8,000,000納秒?=?8毫秒


            腳注


            T.?Capey指出Amazon上面《Complete?Problem?Solver》的頁面中,《Teach?Yourself?Bengali?in?21?days》和《Teach?Yourself?Grammar?and?Style》被列在了“購買此書的顧客還買了以下書籍”欄目里面。我猜其中一大部分察看這兩本書的人都是從我這里過去的。


            譯本


            感謝以下作者將本文翻譯成其他語言:
            日文(Yasushi?Murakawa),中文(郭曉剛),繁體中文(Jason?Chen),西班牙文(Carlos?Rueda),德文(Stefan?Ram),法文(P.?E.?Allary),土耳其文(?a??l?Ulu?ahin)。


            Peter?Norvig?(Copyright?2001)
            posted on 2006-06-30 10:58 子彈のVISIONS 閱讀(321) 評論(0)  編輯 收藏 引用
            久久天天躁狠狠躁夜夜2020老熟妇| 色8激情欧美成人久久综合电| 国产精品99久久久精品无码| 色妞色综合久久夜夜| 久久se精品一区二区| 亚洲国产日韩欧美综合久久| 精品午夜久久福利大片| 久久精品18| 伊人色综合久久天天| 久久亚洲精品国产精品| 久久国产精品一区| 国产色综合久久无码有码| 久久综合综合久久狠狠狠97色88 | 一本色道久久88—综合亚洲精品| 无码国产69精品久久久久网站| 欧美精品福利视频一区二区三区久久久精品| 久久这里有精品| 伊人久久大香线蕉精品不卡| 韩国无遮挡三级久久| 亚洲精品乱码久久久久66| 久久99精品久久久久久野外| 亚洲国产成人久久精品动漫| 日韩精品久久无码中文字幕| 亚洲另类欧美综合久久图片区| 亚洲国产精品久久久久久| 2021少妇久久久久久久久久| 久久本道伊人久久| 色偷偷偷久久伊人大杳蕉| 精品久久久无码人妻中文字幕 | 久久综合综合久久狠狠狠97色88| 欧洲人妻丰满av无码久久不卡 | 久久精品国产亚洲AV香蕉| 久久精品午夜一区二区福利| 久久人人爽人人爽人人片AV东京热| 欧美午夜A∨大片久久| 亚洲精品tv久久久久| 久久综合久久鬼色| 一本色道久久88综合日韩精品| 久久影院亚洲一区| 国产69精品久久久久观看软件| 香蕉久久夜色精品国产2020|