天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

十年學會程序設計

  這里分享一篇 Peter Norvig的 《十年學會程序設計》 (Peter Norvig  系Google研究院主任、美國計算機協會(ACM)資深會員(Fellow))。全文如下:

  十年學會程序設計

  Peter Norvig (Copyright 2001)

  原文網址

  為何大家如此匆忙?

  走進任何一家書店,你會看到書架上一排不見盡頭的放著如 <7天自學Java語言> 以及幾天或者幾小時學會Windows,因特網或者Visual Basic 這類書。我在Amazon 網上書店用一下的方式進行高級搜索:

  出版年份: 1992以后 書名包括:“天” 和 “學習” 或 “自學”

  得到了268條搜索結果,其中前78條都是計算機書(第79條是 30天學會孟加拉語)。 我用 “小時” 代替“天” 作為關鍵字,得到了神奇般類似的結果:這次有253本書,前77本是計算機書, 第78本是 24小時自學語法和寫作風格。排名前200的書中有96%是計算機書。

  由此可見,人們要不就是急著想學會計算機,要不就是計算機相比于其他事情太容易學會了。比如說把,沒有書是寫在幾天彈奏貝多芬或幾天學會量子物理,甚至也沒有幾天學會幫小狗打扮這樣的書。

  讓我們分析一下 三天學會Pascal語言 [英文網頁] 這樣的標題表達了什么意思:

  • 學會:在三天內,你沒有時間去寫幾個有意義的程序,或者從成功和失敗中學到東西。你也沒時間跟有經驗的程序員一起工作,所以也無法了解在真正編程是什么樣子。簡短的說,就學會而言,時間顯然不夠。所以這些書只是浮于表面的熟悉,而不是深刻的理解。如同Alexander Pope 所說,一知半解是危險的。
  • Pascal 語言:三天內你可能學會Pasacl語言的語法(如果你已經掌握一個類似的編程語言),但你無法學會如何合理運用這些語法。簡言之,如果你是個Basic 程序員,你可以用Pascal 語言寫出類似Basic風格的程序,但你學不到Pascal語言的優點(還有缺點)到底在哪。重點是什么呢? Alan Perlis 曾說: “如果編程語言不能影響你的編程思維,那就不值得去學.” 另一個可能是,你必須學會一點點Pascal語言(或是像VB語言、Javascript等),因為你需要跟現成的工具組合完成特定的工作。不過這個時候,你實際上學的不是怎么寫程序,而是要學著如何完成工作。
  • 三天:不幸的是三天根本不夠;下面的章節會告訴你為什么

  十年學會程序設計

  研究者 Hayes, Bloom 的研究表明,在幾乎所有的各種領域,大約要十年才能培養出專業技能。這些領域包括下西洋棋、音樂作曲、繪畫、鋼琴、游泳、網球,及神經心理學和數學拓撲學。似乎沒有真正的捷徑--即便是莫扎特在四歲就展露出音樂天才,在他寫出世界級的音樂之前仍然用了超過十三年的時間。

  再看另一種類型的領域。披頭士樂團似乎是在1964年的Ed Sullivan 劇場表演突然地火起來并成為第一樂隊的。但其實他們從 1957 年開始,就在利物浦、漢堡等地的小型俱樂部表演。雖然他們很早就顯現強大的吸引力,但他們決定性的成功作品 Sgt Pepper 也到1967年才發行。Samuel Johnson 則認為或許還不止十年才行,他說:任何領域的卓越成就都必須用一生的努力才能取得;稍微低一點的代價都是換不到的。Chaucer 則感嘆道: “生命如此短促,學習技藝卻要這么地長。”

  以下是我在編程上成功的秘訣:

  • 對編程產生感興趣并因為樂趣而寫程序。確信你自始至終都能樂在其中,這樣你才愿意將十年光陰投入編程事業。
  • 與其他程序員交流;閱讀別人的代碼。這比任何書任何培訓都重要。
  • 不斷地編寫。最好的學習方法是在實踐中學習。從技術角度說,“在特定領域的個人最高效率并不因為經驗夠多就會自動獲得;但若有意識的通過努力去提升經驗,個人效率會變高”(第336頁)而 “高效的學習一般需要明確的任務和因人而異的適當難度,以及及時的反饋和重復或者修正錯誤的機會”(20~21頁)Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life (實踐中認知:心智、數學與日常文化) 是這個觀點的一本有趣參考書籍。
  • 如果你愿意,你可以去讀四年大學(或再讀研究生)。這可以讓你滿足一些工作的學歷要求,同時也可讓你對這個領域有更深的認識。但如你不喜歡上學,你也能(得有犧牲)通過工作獲得類似的經驗。無論如何,只讀書是不夠的。《New Hacker’s Dictionary》的作者Eric Raymond 曾經說過:“計算機的教育無法讓人成為編程的專家,正如研究畫筆與顏料不能讓人成為專業畫家一樣。” 一個在我所有招聘過的人中屬于最優秀之一的程序員只有高中畢業,但他寫出很多很棒程序,他甚至有自己的新聞組。他獲得的股票期權使得他可以擁有自己的午夜酒吧
  • 跟其他程序員一起完成項目。在一些項目中成為最好的程序員;在一些中則充當最差的一個。當你是最佳的,你要測試自己領導項目的能力,并以你的能力鼓勵他人。當你是最差的,要看看高手做些什么,他們不喜歡做什么 (因為他們會叫你去幫他們做)。
  • 接手別的程序員完成項目。全心投入并理解別人的程序。當原作者不在的時候,看看在理解與修改時有什么要注意的。想想如何設計你的程序使得后來維護的人容易上手。
  • 至少學會六門編程語言。一種要支持類/對象(class abstractions)的語言,如Java或C++;一種函數式(functional abstraction)語言,如 LISP 或 ML;一種支持語法抽象(syntactic abstraction) 的語言如 LISP;一種聲明式語言, 如Prolog或 C++模版;一種支持協同式(coroutines)編程,如 Icon 或 Scheme;還有一種支持并行(parallelism)的語言,如 Sisal。
  • 記住在“計算機科學” 中包括”計算機” 這個詞。要知道你的計算機執行一條指令需要多久,到內存中取一個字需要多久(緩存是否擊中),到磁盤讀取連續的字需要多久,而磁盤的定位又需要多久。(解答見文末)
  • 進行語言標準化的工作。可以像是由ANSI C++ 委員會,或由你自己的團隊,來決定你們的編碼風格,譬如說縮排是2或4個空格。不管怎樣,你都能學到別人到底喜歡什么,對語言的感受有多深,甚至能了解到一點他們為什么有這樣的感覺。
  • 并具備良好的判斷力,也別老糾纏在語言標準化上。

  談了上面所有的想法后,我不禁要問究竟能從書上學到多少。在第一個孩子出生前,我讀完了所有的 “怎樣…” 的書,仍覺得自己是個一無所知的(照顧孩子的)菜鳥。30個月后,第二個孩子出世,我要重回這些書好好復習么? 不!取而代之的是,我開始相信自己的個人經驗。這些難得的經驗,比專家寫的幾千頁手冊還要有用,而且讓我重新找到了自信。

  Fred Brooks (譯注: <人月神話>作者) 在他的文章 沒有銀彈 中指出,發掘卓越軟體設計者的三部曲:

  1. 盡早盡可能地以系統化的方式發掘最佳設計人員。
  2. 給有潛力者指派生涯規劃師,并謹慎地規劃他們的職業生涯。
  3. 提供機會給正在成長的程序員,讓他們能相互影響,彼此激勵。

  這里假定了某些人已具備成為卓越設計師的必要潛能;工作只是誘導他們前進。Alan Perlis 說得更簡潔了,你可以教任何人學雕塑,但對米開朗基羅而言,要教他的反倒是有哪些事不要做,卓越的程序員也一樣。

  所以,盡管買那些 Java 書吧!你或許能從中找到點有用的,但是在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 個人計算機為標準:

執行單一指令1 納秒
從L1 高速緩存取一個字2 納秒
從內存取一個字10 納秒
從磁盤取連續存放的一個字200 納秒
磁盤尋址并取字8 毫秒

________________________________

it知識庫十年學會程序設計,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 夜色视频社区 | 国产色综合色产在线视频 | 老阿姨才是最有V味的直播 牢记永久免费网址 | 午夜色情影院色a国产 | 浴室里强摁做开腿呻吟的漫画 | 久热在线这里只有精品7 | 色屁屁影院 | 99精产国品一二产区在线 | 嗯 用力啊 嗯 c我 啊哈老师 | 幺妹视频福利视频 | 国产乱码一区二区三区 | 光棍天堂在线a | 九九久久久2 | 永久午夜福利视频一区在线观看 | 蜜芽国产在线精品欧美 | 無码一区中文字幕少妇熟女H | 国产偷国产偷亚州清高APP | 高h辣h双处全是肉一对一 | 囯产精品久久久久免费蜜桃 | 边做边爱免费视频播放 | 国产精品卡1卡2卡三卡四 | 国产Av男人的天堂精品良久 | 亚洲国产中文在线视频免费 | 嗨嗨快播电影 | 老师机影院 | 国产午夜伦鲁鲁 | 尤物国产在线精品三区 | 在线视频免费观看 | 国产成人女人在线视频观看 | 亚洲欧美国产综合在线 | 国产精品久久久久久无码专区 | 黄色三级图片 | 99热久久这里只精品国产WWW | 免费毛片a在线观看67194 | 久久久久九九 | 在线不卡日本v二区到六区 在线不卡日本v二区 | 亚洲成人国产 | 免费又黄又硬又爽大片 | 99久久免费国产精精品 | 花蝴蝶在线高清视频观看免费播放 | 亚洲精品无码成人AAA片 |