“21天教你學(xué)會(huì)C++”

“21天教你學(xué)會(huì)C++”

2010年3月30日陳皓發(fā)表評(píng)論閱讀評(píng)論146,753 人閱讀

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

看完上面這個(gè)圖片食茎,我在想晶姊,我學(xué)習(xí)C++有12年了童番,好像C++也沒(méi)有學(xué)得特別懂,看到STL和泛型恕齐,還是很頭大乞娄。不過(guò),我應(yīng)該去考慮研究量子物理和生物化學(xué),這樣仪或,我才能重返98年殺掉還在大學(xué)的我确镊,然后達(dá)到21天搞定C++的目標(biāo)。另外溶其,得要特別提醒剛剛開(kāi)始學(xué)習(xí)C++的朋友骚腥,第21天的時(shí)候敦间,小心被人殺害瓶逃。呵呵。

當(dāng)然廓块,上面只是一個(gè)惡搞此類(lèi)圖片厢绝,學(xué)習(xí)一門(mén)技術(shù),需要你很長(zhǎng)的時(shí)間带猴,正如圖片中的第三圖和第四圖所示昔汉,你需要用十年的時(shí)間去不斷在嘗試,并在錯(cuò)誤中總結(jié)經(jīng)驗(yàn)教訓(xùn)拴清,以及在項(xiàng)目開(kāi)發(fā)中通過(guò)與別人相互溝通互相學(xué)習(xí)來(lái)歷練自己靶病。你才能算得上是真正學(xué)會(huì)。

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

用十年來(lái)學(xué)編程

Peter Norvig

為什么每個(gè)人都急不可耐沪停?

走進(jìn)任何一家書(shū)店煤辨,你會(huì)看見(jiàn)《Teach Yourself Java in 7 Days》(7天Java無(wú)師自通)的旁邊是一長(zhǎng)排看不到盡頭的類(lèi)似書(shū)籍,它們要教會(huì)你Visual Basic木张、Windows众辨、Internet等等,而只需要幾天甚至幾小時(shí)舷礼。我在Amazon.com上進(jìn)行了如下搜索

pubdate: after 1992 and title: days and (title: learn or title: teach yourself)

(出版日期:1992年后 and 書(shū)名:天 and (書(shū)名:學(xué)會(huì) or 書(shū)名:無(wú)師自通))

我一共得到了248個(gè)搜索結(jié)果鹃彻。前面的78個(gè)是計(jì)算機(jī)書(shū)籍(第79個(gè)是《Learn Bengali in 30 days》,30天學(xué)會(huì)孟加拉語(yǔ))妻献。我把關(guān)鍵詞“days”換成“hours”浮声,得到了非常相似的結(jié)果:這次有253本書(shū),頭77本是計(jì)算機(jī)書(shū)籍旋奢,第78本是《Teach Yourself Grammar and Style in 24 Hours》(24小時(shí)學(xué)會(huì)文法和文體)泳挥。頭200本書(shū)中,有96%是計(jì)算機(jī)書(shū)籍至朗。

結(jié)論是屉符,要么是人們非常急于學(xué)會(huì)計(jì)算機(jī),要么就是不知道為什么計(jì)算機(jī)驚人地簡(jiǎn)單,比任何東西都容易學(xué)會(huì)矗钟。沒(méi)有一本書(shū)是要在幾天里教會(huì)人們欣賞貝多芬或者量子物理學(xué)唆香,甚至怎樣給狗打扮。在《How to Design Programs》這本書(shū)里說(shuō)“Bad programming is easy. Idiots can learn it in 21 days, even if they are dummies.”(壞的程序是很容易的吨艇,就算他們是笨蛋白癡都可以在21天內(nèi)學(xué)會(huì)躬它。)

讓我們來(lái)分析一下像《Learn C++ in Three Days》(3天學(xué)會(huì)C++)這樣的題目到底是什么意思:

學(xué)會(huì):在3天時(shí)間里,你不夠時(shí)間寫(xiě)一些有意義的程序东涡,并從它們的失敗與成功中學(xué)習(xí)冯吓。你不夠時(shí)間跟一些有經(jīng)驗(yàn)的程序員一起工作,你不會(huì)知道在C++那樣的環(huán)境中是什么滋味疮跑。簡(jiǎn)而言之组贺,沒(méi)有足夠的時(shí)間讓你學(xué)到很多東西。所以這些書(shū)談?wù)摰闹皇潜砻嫔系木ㄗ婺铮巧钊氲睦斫馐Ъ狻H鏏lexander Pope(英國(guó)詩(shī)人、作家渐苏,1688-1744)所言掀潮,一知半解是危險(xiǎn)的(a little learning is a dangerous thing)

C++:在3天時(shí)間里你可以學(xué)會(huì)C++的語(yǔ)法(如果你已經(jīng)會(huì)一門(mén)類(lèi)似的語(yǔ)言),但你無(wú)法學(xué)到多少如何運(yùn)用這些語(yǔ)法琼富。簡(jiǎn)而言之仪吧,如果你是,比如說(shuō)一個(gè)Basic程序員公黑,你可以學(xué)會(huì)用C++語(yǔ)法寫(xiě)出Basic風(fēng)格的程序邑商,但你學(xué)不到C++真正的優(yōu)點(diǎn)(和缺點(diǎn))。那關(guān)鍵在哪里凡蚜?Alan Perlis(ACM第一任主席人断,圖靈獎(jiǎng)得主,1922-1990)曾經(jīng)說(shuō)過(guò):“如果一門(mén)語(yǔ)言不能影響你對(duì)編程的想法朝蜘,那它就不值得去學(xué)”恶迈。另一種觀點(diǎn)是,有時(shí)候你不得不學(xué)一點(diǎn)C++(更可能是javascript和Flash Flex之類(lèi))的皮毛谱醇,因?yàn)槟阈枰佑|現(xiàn)有的工具暇仲,用來(lái)完成特定的任務(wù)。但此時(shí)你不是在學(xué)習(xí)如何編程副渴,你是在學(xué)習(xí)如何完成任務(wù)奈附。

3天:不幸的是,這是不夠的煮剧,正如下一節(jié)所言斥滤。

10年學(xué)編程

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

在這三個(gè)小組中的每一個(gè)人基本上都是從相同的時(shí)間開(kāi)始練習(xí)的(在五歲的時(shí)候)奄妨。在開(kāi)始的幾年里,每個(gè)人都是每周練習(xí)2-3個(gè)小時(shí)苹祟。但是在八歲的時(shí)候砸抛,練習(xí)的強(qiáng)度開(kāi)始顯現(xiàn)差異。在這個(gè)班中水平最牛的人開(kāi)始比別人練習(xí)得更多——在九歲的時(shí)候每周練習(xí)6個(gè)小時(shí)树枫,十二歲的時(shí)候直焙,每周8個(gè)小時(shí),十四歲的時(shí)候每周16個(gè)小時(shí)砂轻,并在成長(zhǎng)過(guò)程中練習(xí)得越來(lái)越多奔誓,到20歲的時(shí)候,其每周練習(xí)可超過(guò)30個(gè)小時(shí)搔涝。到了20歲厨喂,這些優(yōu)秀者在其生命中練習(xí)音樂(lè)總共超過(guò) 10,000 小時(shí)。與之對(duì)比庄呈,其它人只平均有8,000小時(shí)蜕煌,而未來(lái)只能留校當(dāng)老師的人僅僅是4,000 小時(shí)。

所以诬留,這也許需要10,000 小時(shí)斜纪,并不是十年颁褂,但這是一個(gè)magic number。Samuel Johnson(英國(guó)詩(shī)人)認(rèn)為10 年還是不夠的:“任何領(lǐng)域的卓越成就都只能通過(guò)一生的努力來(lái)獲得傀广;稍低一點(diǎn)的代價(jià)也換不來(lái)颁独。”(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,英國(guó)詩(shī)人伪冰,1340-1400)也抱怨說(shuō):“生命如此短暫誓酒,掌握技藝卻要如此長(zhǎng)久。”(the lyf so short, the craft so long to lerne.)

下面是我在編程這個(gè)行當(dāng)里獲得成功的處方:

對(duì)編程感興趣贮聂,因?yàn)闃?lè)趣而去編程靠柑。確定始終都能保持足夠的樂(lè)趣,以致你能夠?qū)?0年時(shí)間投入其中吓懈。

跟其他程序員交談歼冰;閱讀其他程序。這比任何書(shū)籍或訓(xùn)練課程都更重要耻警。

編程隔嫡。最好的學(xué)習(xí)是從實(shí)踐中學(xué)習(xí)。用更加技術(shù)性的語(yǔ)言來(lái)講甘穿,“個(gè)體在特定領(lǐng)域最高水平的表現(xiàn)不是作為長(zhǎng)期的經(jīng)驗(yàn)的結(jié)果而自動(dòng)獲得的腮恩,但即使是非常富有經(jīng)驗(yàn)的個(gè)體也可以通過(guò)刻意的努力而提高其表現(xiàn)水平∥录妫”(p. 366)秸滴,而且“最有效的學(xué)習(xí)要求為特定個(gè)體制定適當(dāng)難度的任務(wù),有意義的反饋募判,以及重復(fù)及改正錯(cuò)誤的機(jī)會(huì)荡含。”(p. 20-21)《Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life》(在實(shí)踐中認(rèn)知:心智届垫、數(shù)學(xué)和日常生活的文化)是關(guān)于這個(gè)觀點(diǎn)的一本有趣的參考書(shū)释液。

如果你愿意,在大學(xué)里花上4年時(shí)間(或者再花幾年讀研究生)敦腔。這能讓你獲得一些工作的入門(mén)資格均澳,還能讓你對(duì)此領(lǐng)域有更深入的理解,但如果你不喜歡進(jìn)學(xué)校符衔,(作出一點(diǎn)犧牲)你在工作中也同樣能獲得類(lèi)似的經(jīng)驗(yàn)找前。在任何情況下,單從書(shū)本上學(xué)習(xí)都是不夠的判族√墒ⅲ“計(jì)算機(jī)科學(xué)的教育不會(huì)讓任何人成為內(nèi)行的程序員,正如研究畫(huà)筆和顏料不會(huì)讓任何人成為內(nèi)行的畫(huà)家”, Eric Raymond形帮,《The New Hacker’s Dictionary》(新黑客字典)的作者如是說(shuō)槽惫。我曾經(jīng)雇用過(guò)的最優(yōu)秀的程序員之一僅有高中學(xué)歷周叮;但他創(chuàng)造出了許多偉大的軟件(XEmacs,Mozilla),甚至有討論他本人的新聞組界斜,而且股票期權(quán)讓他達(dá)到我無(wú)法企及的富有程度(譯注:指Jamie Zawinski仿耽,Xemacs和Netscape的作者)。

跟別的程序員一起完成項(xiàng)目各薇。在一些項(xiàng)目中成為最好的程序員项贺;在其他一些項(xiàng)目中當(dāng)最差的一個(gè)。當(dāng)你是最好的程序員時(shí)峭判,你要測(cè)試自己領(lǐng)導(dǎo)項(xiàng)目的能力开缎,并通過(guò)你的洞見(jiàn)鼓舞其他人。當(dāng)你是最差的時(shí)候林螃,你學(xué)習(xí)高手們?cè)谧鲂┦裁崔壬荆约八麄儾幌矚g做什么(因?yàn)樗麄冏屇銕退麄冏瞿切┦拢?/p>

接手別的程序員完成項(xiàng)目。用心理解別人編寫(xiě)的程序疗认⊥瓴校看看在沒(méi)有最初的程序員在場(chǎng)的時(shí)候理解和修改程序需要些什么。想一想怎樣設(shè)計(jì)你的程序才能讓別人接手維護(hù)你的程序時(shí)更容易一些侮邀。

學(xué)會(huì)至少半打編程語(yǔ)言坏怪。包括一門(mén)支持類(lèi)抽象(class abstraction)的語(yǔ)言(如Java或C++)贝润,一門(mén)支持函數(shù)抽象(functional abstraction)的語(yǔ)言(如Lisp或ML)绊茧,一門(mén)支持句法抽象(syntactic abstraction)的語(yǔ)言(如Lisp),一門(mén)支持說(shuō)明性規(guī)約(declarative specification)的語(yǔ)言(如Prolog或C++模版)打掘,一門(mén)支持協(xié)程(coroutine)的語(yǔ)言(如Icon或Scheme)华畏,以及一門(mén)支持并行處理(parallelism)的語(yǔ)言(如Sisal)。

記住在“計(jì)算機(jī)科學(xué)”這個(gè)詞組里包含“計(jì)算機(jī)”這個(gè)詞尊蚁。了解你的計(jì)算機(jī)執(zhí)行一條指令要多長(zhǎng)時(shí)間亡笑,從內(nèi)存中取一個(gè)word要多長(zhǎng)時(shí)間(包括緩存命中和未命中的情況),從磁盤(pán)上讀取連續(xù)的數(shù)據(jù)要多長(zhǎng)時(shí)間横朋,定位到磁盤(pán)上的新位置又要多長(zhǎng)時(shí)間仑乌。(答案在這里

嘗試參與到一項(xiàng)語(yǔ)言標(biāo)準(zhǔn)化工作中∏俣В可以是ANSI C++委員會(huì)晰甚,也可以是決定自己團(tuán)隊(duì)的編碼風(fēng)格到底采用2個(gè)空格的縮進(jìn)還是4個(gè)。不論是哪一種决帖,你都可以學(xué)到在這門(mén)語(yǔ)言中到底人們喜歡些什么厕九,他們有多喜歡,甚至有可能稍微了解為什么他們會(huì)有這樣的感覺(jué)地回。

擁有盡快從語(yǔ)言標(biāo)準(zhǔn)化工作中抽身的良好判斷力扁远。

抱著這些想法俊鱼,我很懷疑從書(shū)上到底能學(xué)到多少東西。在我第一個(gè)孩子出生前畅买,我讀完了所有“怎樣……”的書(shū)并闲,卻仍然感到自己是個(gè)茫無(wú)頭緒的新手。30個(gè)月后谷羞,我第二個(gè)孩子出生的時(shí)候焙蚓,我重新拿起那些書(shū)來(lái)復(fù)習(xí)了嗎?不洒宝。相反购公,我依靠我自己的經(jīng)驗(yàn),結(jié)果比專(zhuān)家寫(xiě)的幾千頁(yè)東西更有用更靠得住雁歌。

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

盡早系統(tǒng)地識(shí)別出最好的設(shè)計(jì)者群體宏浩。

指派一個(gè)事業(yè)上的導(dǎo)師負(fù)責(zé)有潛質(zhì)的對(duì)象的發(fā)展,小心地幫他保持職業(yè)生涯的履歷靠瞎。

讓成長(zhǎng)中的設(shè)計(jì)師們有機(jī)會(huì)互相影響比庄,互相激勵(lì)。

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

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

(全文完)

(轉(zhuǎn)載本站文章請(qǐng)注明作者和出處酷 殼 – CoolShell.cn黔酥,請(qǐng)勿用于任何商業(yè)用途)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末藻三,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子跪者,更是在濱河造成了極大的恐慌棵帽,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坑夯,死亡現(xiàn)場(chǎng)離奇詭異岖寞,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)柜蜈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)仗谆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)指巡,“玉大人,你說(shuō)我怎么就攤上這事隶垮≡逖” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵狸吞,是天一觀的道長(zhǎng)勉耀。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蹋偏,這世上最難降的妖魔是什么便斥? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮威始,結(jié)果婚禮上枢纠,老公的妹妹穿的比我還像新娘。我一直安慰自己黎棠,他們只是感情好晋渺,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著脓斩,像睡著了一般木西。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上随静,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天八千,我揣著相機(jī)與錄音,去河邊找鬼挪挤。 笑死叼丑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扛门。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纵寝,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼论寨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起爽茴,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤葬凳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后室奏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體火焰,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年胧沫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昌简。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片占业。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖纯赎,靈堂內(nèi)的尸體忽然破棺而出谦疾,到底是詐尸還是另有隱情,我是刑警寧澤犬金,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布念恍,位于F島的核電站,受9級(jí)特大地震影響晚顷,放射性物質(zhì)發(fā)生泄漏峰伙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一该默、第九天 我趴在偏房一處隱蔽的房頂上張望词爬。 院中可真熱鬧,春花似錦权均、人聲如沸顿膨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)恋沃。三九已至,卻和暖如春必指,著一層夾襖步出監(jiān)牢的瞬間囊咏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工塔橡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梅割,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓葛家,卻偏偏與公主長(zhǎng)得像户辞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子癞谒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容