如何正確使用C++語言進(jìn)行編程
自從C++語言出來時,就給了C語言帶來巨大的壓力,前些時間看了據(jù)說是微軟操作系統(tǒng)源代碼的東東,其中很多還是關(guān)于C++語言,看完本文后對您一定會大有幫助。。。
所以撇開我個人對C++的偏愛,我想為你樹立起學(xué)習(xí)C++的信心和興趣。當(dāng)初我對自己學(xué)習(xí)C++的第一個忠告就是:不能半途而廢!起初是興趣驅(qū)動,后來則是生計所需,最后還是回歸到了興趣。
畢竟我從中得到了樂趣,這就足夠了。在學(xué)一個新東西前,解決動機(jī)問題很重要。就如同殺人一樣,如果只是突然興起,那么等嘗試了以后,是沒有成就感的。革命先烈們?yōu)槲覀冏鞒隽撕芎玫陌駱?,就算我們在學(xué)習(xí)C++的道路上遇到了太多困惑和痛苦,但是我們畢竟為自己的信念做了努力,我們知道自己在做什么,知道自己在追求什么。
C++語言是一門廣泛用于工業(yè)軟件研發(fā)的大型語言。具有很高的復(fù)雜性和解決問題的能力。C++不僅在開發(fā)上極具價值,同時在學(xué)術(shù)界也就有很高的價值。有關(guān)C++的文章應(yīng)該可以用浩如煙海來形容了吧。
C++的世界級經(jīng)典書籍也是數(shù)不勝數(shù)。然而,目前開發(fā)語言是如此地繁榮,就連微軟也在推出了新的開發(fā)語言C#。一個不可否認(rèn)的現(xiàn)實(shí)是,在低階程序設(shè)計領(lǐng)域,C++擠壓著C同時也在承受著C的強(qiáng)烈反彈,前段時間看了據(jù)說是微軟操作系統(tǒng)源代碼的東東,其中很多還是C語言。而在高階程序設(shè)計領(lǐng)域,Java和C#正在不斷蠶食著C++的地盤。
也許Java和C#的狂潮終將迫使C++回歸本位— 回到它有著根本性優(yōu)勢的開發(fā)領(lǐng)域:低級系統(tǒng)程序設(shè)計、高級大規(guī)模高性能應(yīng)用設(shè)計、嵌入式程序設(shè)計、通用程序設(shè)計以及數(shù)值科學(xué)計算等。果真如此,我認(rèn)為這未嘗不是一件好事。電力系統(tǒng)軟件所要求的高性能和大規(guī)模數(shù)值計算正是C++所擅長的。就我所接觸的南瑞和魯能,很多涉及到電力系統(tǒng)計算的軟件如PAS等,都是用C++來開發(fā)的。
在電力系統(tǒng)軟件開發(fā)這塊陣地,C++語言大有用武之地。C++吸引如此之多的智力投入,以至于這個領(lǐng)域的優(yōu)秀作品,包括重量級的軟件產(chǎn)品、程序庫以及書籍等,數(shù)不勝數(shù)。在C++之父Bjarne Stroustrup的個人主頁上,有一頁列出了一些(全部或大部分)使用C++編寫的系統(tǒng)、應(yīng)用程序和庫。
很多新手特別容易會對自己所學(xué)習(xí)的東東產(chǎn)生疑惑、迷茫。覺得自己學(xué)這個東西,花了這么多時間有沒有用,會不會過時?這種思想很普遍。在一些論壇上經(jīng)常會看到一些各語言的優(yōu)劣比較,知道自己所學(xué)語言的優(yōu)劣也好,但是如果一味停留在這個層面就沒有用了。
任何語言都只是工具而已。重要的是使用工具的人!就我個人的經(jīng)驗(yàn)來講,真正處于業(yè)界搞開發(fā)的人都愿意使用成熟的、為自己所熟知的技術(shù)來完成工作。而新手都喜歡用一些比較新的技術(shù)來做開發(fā),而且喜歡追求新奇(從界面很容易看出來,花花綠綠的界面多半出自新手)。其實(shí),安于用一些效率可能低下、擴(kuò)展性和維護(hù)性差的方法來解決問題并不是開發(fā)人員的錯。
他們只是在完成工作而已。但是作為一個真正有上進(jìn)心的開發(fā)人員,我們應(yīng)該使用更優(yōu)雅和高效的編程技術(shù),這才是我們逐漸變成編程“大?!钡暮昧?xí)慣。老是停留在原地,很容易被淘汰的。在軟件開發(fā)這個行當(dāng),尤其如此。無論是對學(xué)生,還是一線開發(fā)人員,我覺得都不應(yīng)該產(chǎn)生“書讀夠了”的感嘆!我有時候喜歡將以前看過的書翻出來再看,每次總能體會到一些新東西。
有關(guān)C++語言的書籍更是如此,而且我覺得我所起的題目不是很好。為什么?因?yàn)槲矣X得學(xué)習(xí)語言還只是新手跨入軟件開發(fā)“地獄”的第一步,單單學(xué)習(xí)語言本身是遠(yuǎn)遠(yuǎn)不夠的,還要學(xué)習(xí)相關(guān)的程序庫(C++當(dāng)然首選是先學(xué)習(xí)C++標(biāo)準(zhǔn)程序庫)、相關(guān)的平臺技術(shù)(如。NET),說得更遠(yuǎn)一點(diǎn),還要鍛煉對目標(biāo)問題的分析、歸納能力等等。工作之前,技術(shù)路線自己作主,工作之后,絕大多數(shù)程序員將被公司技術(shù)路線左右。
眾所周知的一個事實(shí)是,從最表層講,C++的最嚴(yán)重問題是在語言學(xué)習(xí)階段占用了學(xué)習(xí)者的太多時間。翻一翻你的C++書架或者電子書目錄,絕大多數(shù)的C++“經(jīng)典”都是在講語言。
在我們通常的意義上,要“入門”C++,在語言上需要耗的時間一般要兩三年。而要“精通”C++,則搞不好需要耗上十年八年的。(這跟Peter Norvig說的“十年學(xué)習(xí)編程”其實(shí)不是一回事,人家那是說一般意義上的編程技能,不是叫你當(dāng)語言律師。)
那為什么我說“C++的復(fù)雜性是根本原因”是個有漏洞的推理呢?因?yàn)?,要讓人們在使用一門語言去做事情之前耗上大量時間去學(xué)習(xí)語言中各種復(fù)雜性,除了語言本身的復(fù)雜性的事實(shí)之外,還有一個重要的事實(shí),那就是學(xué)習(xí)者的態(tài)度和(更重要的)方法。
而目前大多數(shù)C++學(xué)習(xí)者的態(tài)度和方法是什么呢?——在真正用C++之前看上一摞語言書(日常編程八輩子都未必用得到)。而為什么會存在這樣的學(xué)習(xí)態(tài)度呢?這就是真正需要解釋的問題。實(shí)際上,有兩方面的原因。
【編輯推薦】