自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Yes or No:21天教你學(xué)會C++

開發(fā) 后端 前端
下面是一個《Teach Yourself C++ in 21 Days》的流程圖,請各位程序員同仁認(rèn)真領(lǐng)會。如果有必要,你可以查看這個圖書以作參照:http://www.china-pub.com/27043

下面是一個《Teach Yourself  C++ in 21 Days》的流程圖,請各位程序員同仁認(rèn)真領(lǐng)會。如果有必要,你可以查看這個圖書以作參照:http://www.china-pub.com/27043

看完上面這個圖片,我在想,我學(xué)習(xí)C++有12年了,好像C++也沒有學(xué)得特別懂,看到STL和泛型,還是很頭大。不過,我應(yīng)該去考慮研究量子物理 和生物化學(xué),這樣,我才能重返98年殺掉還在大學(xué)的我,然后達到21天搞定C++的目標(biāo)。另外,得要特別提醒剛剛開始學(xué)習(xí)C++的朋友,第21天的時候, 小心被人殺害。呵呵。

當(dāng)然,上面只是一個惡搞此類圖片,學(xué)習(xí)一門技術(shù),需要你很長的時間,正如圖片中的第三圖和第四圖所示,你需要用十年的時間去不斷在嘗試,并在錯誤中總結(jié)經(jīng)驗教訓(xùn),以及在項目開發(fā)中通過與別人相互溝通互相學(xué)習(xí)來歷練自己。你才能算得上是真正學(xué)會。

這里有篇文章叫《Teach Yourself Programming in Ten Years》,網(wǎng)上有人翻譯了一下,不過原文已被更新了,我把網(wǎng)上的譯文轉(zhuǎn)載并更新如下:

 

用十年來學(xué)編程
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 (書名:學(xué)會 or 書名:無師自通))
我一共得到了248個搜索結(jié)果。前面的78個是計算機書籍(第79個是《Learn Bengali in 30 days》,30天學(xué)會孟加拉語)。我把關(guān)鍵詞“days”換成“hours”,得到了非常相似的結(jié)果:這次有253本書,頭77本是計算機書籍,第78本是《Teach Yourself Grammar and Style in 24 Hours》(24小時學(xué)會文法和文體)。頭200本書中,有96%是計算機書籍。
結(jié)論是,要么是人們非常急于學(xué)會計算機,要么就是不知道為什么計算機驚人地簡單,比任何東西都容易學(xué)會。沒有一本書是要在幾天里教會人們欣賞貝多芬或者量子物理學(xué),甚至怎樣給狗打扮。在《How to Design Programs》這本書里說“Bad programming is easy. Idiots can learn it in 21 days, even if they are dummies.” (壞的程序是很容易的,就算他們是笨蛋白癡都可以在21天內(nèi)學(xué)會。)
讓我們來分析一下像《Learn C++ in Three Days》(3天學(xué)會C++)這樣的題目到底是什么意思:
  • 學(xué)會:在3天時間里,你不夠時間寫一些有意義的程序,并從它們的失敗與成功中學(xué)習(xí)。你不夠時間跟一些有經(jīng)驗的 程序員一起工作,你不會知道在C++那樣的環(huán)境中是什么滋味。簡而言之,沒有足夠的時間讓你學(xué)到很多東西。所以這些書談?wù)摰闹皇潜砻嫔系木ǎ巧钊氲?理解。如Alexander Pope(英國詩人、作家,1688-1744)所言,一知半解是危險的(a little learning is a dangerous thing)
  • C++:在3天時間里你可以學(xué)會C++的語法(如果你已經(jīng)會一門類似的語言),但你無法學(xué)到多少如何運用這些 語法。簡而言之,如果你是,比如說一個Basic程序員,你可以學(xué)會用C++語法寫出Basic風(fēng)格的程序,但你學(xué)不到C++真正的優(yōu)點(和缺點)。那關(guān) 鍵在哪里?Alan Perlis(ACM第一任主席,圖靈獎得主,1922-1990)曾經(jīng)說過:“如果一門語言不能影響你對編程的想法,那它就不值得去學(xué)”。另一種觀點是,有時候你不得不學(xué)一點C++(更可能是javascript和Flash Flex之類)的皮毛,因為你需要接觸現(xiàn)有的工具,用來完成特定的任務(wù)。但此時你不是在學(xué)習(xí)如何編程,你是在學(xué)習(xí)如何完成任務(wù)。
  • 3天:不幸的是,這是不夠的,正如下一節(jié)所言。

10年學(xué)編程

一些研究者(Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) 的研究表明,在許多領(lǐng)域,都需要大約10 年時間才能培養(yǎng)出專業(yè)技能,包括國際象棋、作曲、繪畫、鋼琴、游泳、網(wǎng)球,以及神經(jīng)心理學(xué)和拓?fù)鋵W(xué)的研究。似乎并不存在真正的捷徑:即使是莫扎特,他4 歲就顯露出音樂天才,在他寫出世界級的音樂之前仍然用了超過13年時間。再看另一種音樂類型的披頭士,他們似乎是在1964年的Ed Sullivan節(jié)目中突然冒頭的。但其實他們從1957年就開始表演了,即使他們很早就顯示出了巨大的吸引力,他們第一次真正的成功——Sgt. Peppers——也要到1967年才發(fā)行。Malcolm Gladwell 研究報告稱,把在伯林音樂學(xué)院學(xué)生一個班的學(xué)生按水平分成高中低,然后問他們對音樂練習(xí)花了多少工夫:

在這三個小組中的每一個人基本上都是從相同的時間開始練習(xí)的(在五歲的時候)。在開始的幾年里,每個人都是每周練習(xí)2-3 個小時。但是在八歲的時候,練習(xí)的強度開始顯現(xiàn)差異。在這個班中水平最牛的人開始比別人練習(xí)得更多——在九歲的時候每周練習(xí)6個小時,十二歲的時候,每周 8個小時,十四歲的時候每周16個小時,并在成長過程中練習(xí)得越來越多,到20歲的時候,其每周練習(xí)可超過30個小時。到了20歲,這些優(yōu)秀者在其生命中 練習(xí)音樂總共超過 10,000 小時。與之對比,其它人只平均有8,000小時,而未來只能留校當(dāng)老師的人僅僅是4,000 小時。

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

抱著這些想法,我很懷疑從書上到底能學(xué)到多少東西。在我第一個孩子出生前,我讀完了所有“怎樣……”的書,卻仍然感到自己是個茫無頭緒的新手。30 個月后,我第二個孩子出生的時候,我重新拿起那些書來復(fù)習(xí)了嗎?不。相反,我依靠我自己的經(jīng)驗,結(jié)果比專家寫的幾千頁東西更有用更靠得住。

Fred Brooks在他的短文《No Silver Bullets》(沒有銀彈)中確立了如何發(fā)現(xiàn)杰出的軟件設(shè)計者的三步規(guī)劃:

  • 盡早系統(tǒng)地識別出最好的設(shè)計者群體。
  • 指派一個事業(yè)上的導(dǎo)師負(fù)責(zé)有潛質(zhì)的對象的發(fā)展,小心地幫他保持職業(yè)生涯的履歷。
  • 讓成長中的設(shè)計師們有機會互相影響,互相激勵。

這實際上是假定了有些人本身就具有成為杰出設(shè)計師的必要潛質(zhì);要做的只是引導(dǎo)他們前進。Alan Perlis說得更簡潔:“每個人都可以被教授如何雕塑;而對米開朗基羅來說,能教給他的倒是怎樣能夠不去雕塑。杰出的程序員也一樣”。

所以盡管去買那些Java書;你很可能會從中找到些用處。但你的生活,或者你作為程序員的真正的專業(yè)技術(shù),并不會因此在24小時、24天甚至24個月內(nèi)發(fā)生真正的變化。

原文鏈接:http://coolshell.cn/articles/2250.html

責(zé)任編輯:陳四芳 來源: 酷殼網(wǎng)
相關(guān)推薦

2011-03-31 09:30:07

CC++聲明

2009-12-03 18:48:02

Suse Telnet

2021-01-27 09:34:51

Visual C++Dev C++codelite

2011-05-11 10:12:22

2011-05-11 10:01:22

2009-12-01 15:02:24

SuSE 10安裝VM

2010-01-20 10:31:18

C++編程技術(shù)

2009-12-02 13:39:34

Suse啟動cron

2009-12-03 16:24:09

WinXP搭建PHP開

2009-12-02 15:25:31

Linux郵件服務(wù)器

2009-12-02 18:25:19

Suse Linux

2017-09-05 08:52:37

Git程序員命令

2020-07-07 15:50:42

戴爾

2011-07-14 17:45:06

CC++

2010-01-21 14:07:14

CC++聲明

2009-07-03 17:15:31

jsp上傳文件

2011-04-01 10:09:21

SQL Server記錄輪班

2023-12-27 07:40:43

HTTP服務(wù)器負(fù)載均衡

2010-08-09 09:25:23

SQL Server鏡

2018-01-02 09:44:37

點贊
收藏

51CTO技術(shù)棧公眾號