不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦 > 學(xué)習(xí)方法 > 通用學(xué)習(xí)方法 > 學(xué)習(xí)經(jīng)驗(yàn) > 如何系統(tǒng)有效的學(xué)習(xí)c++編程

如何系統(tǒng)有效的學(xué)習(xí)c++編程

時(shí)間: 欣怡1112 分享

如何系統(tǒng)有效的學(xué)習(xí)c++編程

  這個(gè)世界上最難的編程語(yǔ)言可能非C++莫屬了。你千萬(wàn)不要以為幾天就可以學(xué)好C++,想要學(xué)好C++,總是少不了正確有效的學(xué)習(xí)方法。以下是學(xué)習(xí)啦小編分享給大家的有效學(xué)習(xí)c++編程的方法的資料,希望可以幫到你!

  有效學(xué)習(xí)c++編程的方法

  多問(wèn)“為什么要這樣”的問(wèn)題。學(xué)習(xí)C++一定要多問(wèn)幾個(gè)“為什么是這樣”,“憑什么要這樣”的問(wèn)題。比如:很多人知道C++有拷貝構(gòu)造函數(shù)和初始化列表,但你真的知道為什么要有拷貝構(gòu)造函數(shù)?為什么要有初始化列表嗎?為什么要有template,為什么要有RTTI,為什么不是別的呢?難道就是為了讓一門語(yǔ)言變得Cool一些嗎?完全不是這樣的,C++中的任何一個(gè)feature都有些實(shí)實(shí)在在的原因,你一定要去了解為什么要把C++設(shè)計(jì)成這樣的原因,你才能學(xué)好C++。有空看看《C++演化和設(shè)計(jì)》一書。

  看書,大量的C++書。你可以按如下先后順序閱讀(下面這些書,我花了大約4-5年的時(shí)間,今天我還在隨時(shí)溫習(xí))

  《C++ Primer》,這本初級(jí)讀本可能讓會(huì)你啃得很痛苦,所有的語(yǔ)言的特性和為什么都在里面了,好好讀讀。當(dāng)然由C++之父寫的《C++程序設(shè)計(jì)語(yǔ)言》也不錯(cuò)。兩本看一本就好了(我看的是前者)。

  了解C++的語(yǔ)法僅僅是萬(wàn)里長(zhǎng)征的第一步,你還需要看看《Effective C++》和《More Effective C++》這兩本書并不厚,但我從02年就一直看到現(xiàn)在,每次讀我都有新的體會(huì),這兩本書太經(jīng)典了。如果你對(duì)C語(yǔ)言不熟,這兩本書會(huì)讓你回去補(bǔ)C語(yǔ)言的課。

  Think in C++同樣是另一本經(jīng)典之極的書,學(xué)c++必讀,但是中文版的翻譯的很不好,所以還是去讀英文版的吧。

  《C++沉思錄》同樣非常值得一讀,這里教的不是編程,而是思考的方法,這是相當(dāng)珍貴的。

  《Exceptional C++》和《More Exceptional C++》讓你看看各種問(wèn)題的解決方法和一些常見(jiàn)的經(jīng)典錯(cuò)誤。

  《Advanced C++》和《Modern C++》可以讓你知道C++各種神奇的用法。

  《泛型編程與STL》是把C++實(shí)踐到了極致的東西。很強(qiáng)大。STL——神一樣的模板庫(kù)(容器,算法和函數(shù)對(duì)象),不得不服。《深入探索C++對(duì)象模型》讓你了解編譯器下的C++是什么樣的,讓你了解C++的性能并不差。這個(gè)對(duì)于C++的程序員太關(guān)鍵了。我以前寫過(guò)的《C++虛函數(shù)表解析》還有《C++對(duì)象內(nèi)存布局》屬于這個(gè)范疇。

  和Java語(yǔ)言做對(duì)比。我個(gè)人以為Java對(duì)C++這個(gè)并不成熟的語(yǔ)言做了很多調(diào)整,規(guī)范和限制。所以,對(duì)比一下Java和C++,想一想,為什么一些東西在C++中可以做,但在Java中卻不行。比如:Java的異常是必需要catch的,不然就會(huì)編譯不通過(guò)。為什么Java不提供操作符重載?為什么Java會(huì)引入接口來(lái)做多重繼承?為什么Java沒(méi)有像C++那樣的I/O字符流?為什么Java不支持指針?為什么Java可以做到垃圾回收?等等。Java體現(xiàn)著很多面向?qū)ο笤O(shè)計(jì)的東西,學(xué)習(xí)Java有助于你學(xué)會(huì)怎么更好地使用C++來(lái)編程。

  面向?qū)ο笤O(shè)計(jì) 。雖然面向?qū)ο罂赡苁莻€(gè)騙局。但是我覺(jué)得面向?qū)ο笤O(shè)計(jì)中的一些實(shí)踐非常的不錯(cuò),比如,單一原則,依賴倒置原則,等等,都非常地經(jīng)典。《設(shè)計(jì)模式》必需一讀,《面向?qū)ο蟮姆治龊驮O(shè)計(jì)》可以一讀。但不可以設(shè)計(jì)模式為中心來(lái)編程,而應(yīng)該是用設(shè)計(jì)模式來(lái)解藕。

  類庫(kù)學(xué)習(xí)??纯碝FC是怎么封裝Windows API的,看看ACE是怎么面向?qū)ο蟮模纯碽oost是怎么玩面向?qū)ο蟮模纯碈PPUnit又是怎么設(shè)計(jì)的。當(dāng)然,Java的JDK中有太多的設(shè)計(jì)模式,可以參考。

  有效學(xué)習(xí)c++編程的建議

  1、擺正心態(tài)、心平氣和的學(xué)習(xí)C++,更學(xué)習(xí)C語(yǔ)言、PHP等語(yǔ)言沒(méi)有什么區(qū)別的。

  2、不要放過(guò)任何一個(gè)看上去很簡(jiǎn)單的小編程問(wèn)題——他們往往并不那么簡(jiǎn)單,或者可以引伸出很多知識(shí)點(diǎn)。

  3、會(huì)用Visual C++,并不說(shuō)明你會(huì)C++;Visual C++只不過(guò)是開發(fā)C++程序的一個(gè)工具而已,如果不嫌棄的話,你用系統(tǒng)自帶的記事本寫C++程序也是一樣的。

  4、學(xué)class并不難,template、STL、generic programming也不過(guò)如此——難的是長(zhǎng)期堅(jiān)持實(shí)踐和不遺余力的博覽群書。

  5、如果不是天才的話,想學(xué)編程就不要想玩游戲——你以為你做到了,其實(shí)你的C++水平并沒(méi)有和你通關(guān)的能力一起變高——其實(shí)可以時(shí)刻記?。簩W(xué)C++是為了編游戲的。

  6、看Visual C++的書,是學(xué)不了C++語(yǔ)言的。

  7、C++不僅僅是支持面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。

  8、學(xué)習(xí)編程最好的方法之一就是閱讀源代碼,光閱讀源代碼也不夠,還要自己親自編寫代碼實(shí)踐。

  9、在任何時(shí)刻都不要認(rèn)為自己手中的書已經(jīng)足夠了,也不要在任何時(shí)刻都認(rèn)為自己的C++水平很高了,語(yǔ)言知識(shí)是永遠(yuǎn)也學(xué)不完的。

  有效學(xué)習(xí)c++編程的技巧

  對(duì)編程感興趣,因?yàn)闃?lè)趣而去編程。確定始終都能保持足夠的樂(lè)趣,以致你能夠?qū)?0年時(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)的一本有趣的參考書。

  如果你愿意,在大學(xué)里花上4年時(shí)間(或者再花幾年讀研究生)。這能讓你獲得一些工作的入門資格,還能讓你對(duì)此領(lǐng)域有更深入的理解,但如果你不喜歡進(jìn)學(xué)校,(作出一點(diǎn)犧牲)你在工作中也同樣能獲得類似的經(jīng)驗(yàn)。在任何情況下,單從書本上學(xué)習(xí)都是不夠的。“計(jì)算機(jī)科學(xué)的教育不會(huì)讓任何人成為內(nèi)行的程序員,正如研究畫筆和顏料不會(huì)讓任何人成為內(nèi)行的畫家”, 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è)谧鲂┦裁?,以及他們不喜歡做什么(因?yàn)樗麄冏屇銕退麄冏瞿切┦?。

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

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

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

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

猜你喜歡:

1.c++ 學(xué)習(xí)心得

2.c++實(shí)訓(xùn)心得體會(huì)

3.如何系統(tǒng)有效的學(xué)習(xí)編程知識(shí)

4.軟件工程專業(yè)的職業(yè)規(guī)劃范文

5.初學(xué)者學(xué)習(xí)程序的方法有哪些

3743535