當前位置:編程學習大全網 - 編程語言 - 妳真的懂C++嗎

妳真的懂C++嗎

壹年前寫的東西,整理了壹下,貼出來。 大學時期我眼中的C++和C語言壹樣壹樣的,因為課時不夠老師講C++的時候只講了前半部分語法(相當於C語言學了兩遍),關於面向對象部分的東西還沒講到課程就結束了,秉著混日子的學習態度後邊的也沒看。這也造成了我為期四五年的天真無知的認為我懂C++,直到近期翻看《STL源碼剖析》《Boost文檔庫》才老臉壹紅有了自知之明。現在想來即使老師把後半部分面向對象講了也不算真正的懂C++(那破教材應該扔了,而且大學C++的課程時長應該翻三倍),C++的水太深了。

站在程序員的角度來說,壹門成熟的編程語言應該具備以下壹些東西:簡潔易懂標準統壹的語法語義,功能齊全的類庫,工業級的代碼規範和指導文檔。從這方面看C++還處於生長期,而漫長的C++標準制定期給它的成長帶來了很多羈絆(例如缺乏規範造成編譯器各自不兼容),而在它緩慢的成長的同時,壹些新的編程語言後來者居上並帶來C++不具備的新特性,使得它為了追求兼容這些新特性而陷入更加痛苦漫長的標準制定期。它概念上的架構早已經確立,為了兼容新特性而產生的技巧上的東西對其本身沒有太大的影響。概念上,真正的C++包括了過程化C子語言,面向對象部分,泛型編程。後面兩者才是C++的靈魂所在。STL是這三部分的壹個具體實現,壹個類庫,類似於C#對.net。而關於模板元編程這個新特性,更傾向於把它歸結於壹種編程技法,而很難提升到概念這壹層。畢竟把運行期的工作提到編譯器這種做法在程序設計的時候並沒有通用的解(有壹定的局限性,並不是所有的情況都可以這麽幹)。 單純於語言來說,學習語言很簡單,掌握了語法就算掌握了壹門語言,但是如何把這門語言說的漂亮,這才是作家(大師)與讀者(普通程序員)的區別。無論編程語言還是自然語言,每種語言都有自己獨特的魅力,“妳好”“吃了嗎”這些司空見慣的語句凸顯不出語言的魅力,適當的技法應用才能讓語言生輝。通過近距離接觸大師級作品(源碼),妳會發現語言獨特且強大的魅力。對於編程語言來說,每種設計思想和技術都相當於壹種全新的文體或者修辭手法,而類庫相當於壹些名著名言,是托生於些文體或修辭產生的名著名言,供後人引用調用。 STL是壹個C++類庫,提供壹些常用容器和算法,STL的設計師們設計這套類庫時創造了壹些獨特的技術和設計理念,類似叠代器,仿函數等等,這些獨創的技術和理念才是STL的基石與靈魂,是STL最本質的東西。C++是壹個仍在成長的語言(大批配套的類庫和先進的語言特性需要完善,C++的生態系統正在形成中),大批優秀的編程大師們用自己天才般的智慧推動它的穩步成長,而通過研究源碼了解它每壹次成長的源動力會讓自己更加觸及它和它的創造者的靈魂,這對於壹個孜孜追求進步的程序員來說是壹個捷徑。從不質疑C#,Java之類語言的優越性,但壹個苦心孤詣的程序員如果只是滿足於使用便捷的語言,那他永遠是個不入流的程序員。C++才是編程語言世界裏那顆最耀眼的明星。 就針對STL架構而言,從功能上分包括以下幾個部分:容器,叠代器,算法,函數對象,適配器,Utility和Allocator。STL主要關乎容器和算法,其目標是容器和算法分離,而叠代器,函數對象等等都是為了實現這壹目標而抽象出來的概念或者編程技法。單從應用上講,妳只需要找壹個工具書去了解壹下容器和算法即可以很方便的在編程時調用。但是閱讀STL源碼可以讓妳明白其實現細節以及編程技法,學習這些技法有助於提升妳的編程技巧。boost做為壹個標準庫的後備庫,是C++標準化進程的發動機之壹,不折不扣的“準”標準庫。它提供了專家級的實驗性質C++源碼,如果感覺自己在C++領域已經到了壹個瓶頸或者高處孤寒了,可以去閱讀壹下STL和Boost的源碼。 學習壹個語言歸根到底是為了工程實踐。雖然工程實踐更加重視設計,架構,性能,等等,與選擇的語言相關性不太大,但是畢竟再大的工程也是又語言壹磚壹瓦構建起來的。人們會從壹個又壹個工程實踐中總結出來各種各樣的經驗,包括軟件開發模式,設計模式,軟件測試理論,等等,這也就是軟件工程這門課存在的理由。工程實踐還有壹個非常重要的經驗總結--對於特定語言在工程實踐中的總結,比如怎樣在工程中更加有效的使用特定語言,常見的錯誤,針對特定語言更加合理的設計架構等等。Scot Meyer的《effective C++》就是這樣壹本好書。。《effective C++》的種種條款或是提醒也好或是建議也好總結了大部分人都會犯的普遍性的錯誤,總結的很有條理性,而且挖掘定位的很精確。看完了這本書再去翻妳保存的自認為很經典的源碼妳會發現它們是如此薄弱,隨便拿出壹條條款去檢測都能摟出壹堆潛在的bug。雖然看了這本書妳依然會犯錯,但至少當妳意識到自己犯錯的時候能夠很快明白自己錯在哪了。對於壹個經常與C++打交道的程序員這應該是壹本枕邊書,隨時都應該拿來看看。

  • 上一篇:2012山東青島中考初中信息技術學業水平考試監考須知及守則
  • 下一篇:20萬級別合資SUV怎麽選?這些車市的“常青樹”,閉著眼睛都能買到。
  • copyright 2024編程學習大全網