我所認識的C++

來源:互聯網
上載者:User

我是C++程式員,不適合評論其他語言如何如何。如果你是Java或C#的高手,聽我偶爾提到幾句Java、C#的言論,對的地方,請肯定一下;不對的地方,就當笑話好了。我肯定不是Java或C#高手,也不想成為。我的關注清單點,永遠是C++。因此,Java或C#是好是壞,讓精通的人說吧。我就再提提C++,以及我所認識的電腦語言。

為什麼要有電腦語言?有人說是為了編程,有人說是為了與電腦溝通,也有人說這是電腦文化的一部分。在我看來,這些都對。不管觀點是什麼,本身是沒有高下之分的。譬如“我”是一個資料分析員,在我的面前有一個資料庫,它儲存了我需要的資料。那麼我使用SQL語言去查詢,或者編寫預存程序去做資料採礦。無論如何,我的目的都是資料分析。那麼,即便我如何偏愛SQL語言,如何精通它,我也只是將SQL當成一種工具,它並不比我以前使用的算盤、計算機等更特殊——“一種工具”,如此而已。所以啊,即使有人說SQL語言如何如何好,對我而言,無所謂吧;如果有新工具,用起來更方便、更合適,那我就把SQL淘汰吧,就象之前淘汰算盤一樣啦。同樣地,也有人把C++當成一種工具的;對於這些人,沒必要宣傳C++有多好吧;因為,對於說SQL語言如何如何好的人,我也只是給他一個善意的微笑而已。客戶與同行,很本質的差別呢。

當我不再僅僅是C++客戶的時候,我便不滿足一種工具的定義了。C++是什麼呢?很難回答這個問題的,只有深入地去接觸她。深入地去接觸,單單使用是不行的,使用只是客戶的行為而已。就象你用三個月編了一個軟體,給你的客戶使用。如果你的軟體品質高的話,他可能會用很多年。但是他的理解會超過你嗎?不可想象(除非他是駭客,呵呵)。所以,我還要進一步去認識C++——去讀她的曆史,去解析她的內涵,去領會隱藏在她下面的“道”。漸漸地,我把握到了C++的核心——編譯器!是的,就是編譯器。電腦語言是什嗎?就是編譯器啊。這就好比有人問:軟體是什嗎?就是代碼啊。編譯器是語言的實現,沒有編譯器,語言就沒有實現,因而就不能稱為語言了。C++的曆史,就是從第一個CFront開始的。當然時代變化得很快,當我們再提軟體、再提軟體工程的時候,漸漸地不把代碼當成最關鍵的東西了。“設計第一”、“測試驅動”再到“軟體工程就是需求工程”——呵呵,一切都是市場經濟,程式員要沒飯吃了。但是,我要說,在電腦語言領域,至少是在C++語言領域,編譯器是占決定地位的。C++為什麼沒能建立一套形式化的數學體系?編譯器做不到(要做到就要損失很多靈活性以及許多已提供得特性了);C++為什麼沒有提供自動垃圾清理?編譯器做不到(要做到就會變得笨重並損失效率了);C++為什麼沒有支援完全的物件導向?編譯器做不到(要做到就不能支援其他的編程範型了)……編譯器做不到,所以C++也做不到。可是為什麼編譯器做不到呢?寫C++編譯器的人不會比其他人差吧,象LISP、象Java、象Smalltalk,它們都做到了,C++卻做不到嗎?是的,任何一項都很容易做到,正應如此,任何一項都做不到!C++太強大了,因此她也太弱小了!她的能力,因為她所支援的東西,而達到了極限!這是編譯器的極限,是程式員的極限。C++,就是“一種極限”!!在C++誕生之日起,她就想成為對程式員而言,最有用的語言。因此,她就一直身處探索能力極限(電腦的,和人的)的最前沿上。“做不到因而不做”,其潛台詞其實是——“能做到的都做到了”。所以,C++提供了最大的靈活性、最可能的效率、最多的編程範型……她的目標,從來不是滿足一個特定的需求,而是滿足所有的需求。因為這個目標,所以她達到了,只屬於C++的極限!這也是她很吸引我的重要原因吧——每每都有新的發現,每每都似接受指導。如果想在編程領域所有成就,C++語言就是最好的路標——因為,當你能和她並駕齊驅時,你已站在了時代的顛峰之上!

當然,C++不是唯一的電腦語言,C++群體,也不包含所有的程式員。C++所達到的,也只是所有C++程式員所能達到的極限吧。所以我說“時代的顛峰”,一定會有人出來駁斥的。但是沒關係,我不會去說C++群體佔多少多少比例,我不會去說C++群體中有如何如何優秀的人。這些都不重要。真正重要的是:C++,為什麼能夠成為“一種極限”?很難回答的問題,但是卻很好明白:看看吧,看看C++的締造者是怎樣寫CFront的(不是指寫CFront代碼,而是指定義並實現C++語言的過程)!看看吧,看看C++的前驅者是怎樣寫Boost、ACE和STL的!看看吧,看看C++的愛好者又是怎樣使用、理解並研究C++的(比如研究C++與軟體工程的關係)!如果這些你都看到了,你就不難理解,C++能夠達到她的極限,因為她是“一種理想”,是所有C++群體所共有、所分享的一種理想——將C++做到最好,同時也將自己做到最好!!!因為有這種理念的存在,那麼即使現在C++的顛峰不是時代的顛峰,那麼將來的某個時候,一定會是的。

因為我沒有深入接觸過其他的電腦語言,所以我不清楚是否有比C++更好的語言。我只能說,如果你有和C++類似的理想,那麼請加入C++群體,她不會讓你失望的;或者你想挑戰一下個人的極限,那麼也請嘗試一下C++,她可以滿足你的願望;再或者,你只是在某方面需要用到一門電腦語言,那麼不妨就用C++吧,雖然可能有更合適的,但C++不會差到哪裡去。呵呵,我不是喋喋不休的推銷員,我只是試圖讓你知道C++,從而多一種選擇而已。

PS:還有要說一句的是,如果想開發真正的中國人的電腦語言,那麼一定要學習一下C++。我們的理想可以超越C++的理想,我們的語言也可以超越C++。但是我們不能自大,自大到藐視對手的程度。如果真正的中國人的電腦語言一開始就以超越C++為目標,並且努力的去做,那麼我願意支援她,哪怕她在一定時期裡還達不到;否則就沒什麼可說的了,在我眼裡還配不上“真正的中國人的”這個偉大的稱謂。總不能閉關鎖國落後於時代吧,呵呵。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.