程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 技術人員對於C++語言編程技巧說明

技術人員對於C++語言編程技巧說明

編輯:C++入門知識

C++是一門廣泛用於工業軟件研發的大型語言。它自身的復雜性和解決現實問題的能力,使其極具學術研究價值和工業價值。和C++語言一樣,C++已經在許多重要的領域大獲成功。 

C++吸引如此之多的智力投入,以至於這個領域的優秀作品,包括重量級的軟件產品、程序庫以及書籍等,數不勝數。文題“C++程序設計之四書五經”一個不太嚴格的含義是:C++程序設計之四書五經。是的,在本文及其下篇)中,我將分門別類推薦20多本C++好書,你可以根據自己的需要選讀。

TCPL和D&E

TCPL和D&E分別是《The C++ Programming Language》和《TheDesign and Evolution of C++》的簡稱,均出自Bjarne Stroustrup之手。我將它們單列出來,首先是因為Bjarne是C++語言的創建者,然後是因為比“首先”那個原因更重要的原因:這兩本書是C++領域毋庸置疑的傑作。說它們是C++語言聖經,並不為過。

迄今為止,TCPL是除了C++標准文獻之外最權威的C++參考手冊。和大多數人的看法不大一樣,我認為Bjarne的文字語言並不遜色於他所創建的程序語言,至少我喜歡這種學院氣息濃厚的作品。

  • 圖示說明C++應用程序存在的幾大重要元素
  • 深度剖析C++編譯器怎樣實現異常處理
  • 大概講述C++編譯模式說明介紹
  • 更好的設計面向對象的C++語言
  • 最大程度講述C++編譯語言種種特點

本書對C++語言的描述輪廓鮮明、直截了當。它從C++語言創建者的角度來觀察C++,這是任何別的作者和書籍做不到的— 沒有任何人比Bjarne自己更清楚該怎麼來使用C++。這是一本嚴肅的著作,以中、高級C++開發人員為目標讀者。如果你是一名有經驗的C++程序員,需要了解更加本質的C++知識,本書正是為你而寫。

它不是那種讓你看了會不斷竊喜的小書,需要用心體會,反復咀嚼。在閱讀過程中,請特別留心Bjarne先生強調了什麼,又對什麼一語帶過。我個人比較喜歡這本書的第四部分“使用C++做設計”,這樣的內容在類似的程序設計語言書籍中很難看到— 我甚至認為Bjarne應該將這部分獨立出來單獨寫一本書。

首先重復一句Bjarne的話:“我們的系統已經是極度復雜的了,為了避開C++的復雜性而干脆不用C++Linus的做法),無異於因噎廢食。”在所有可用C和C++的領域,C++都是比C更好的語言。當我說“更好的”時候。

  • 圖示說明C++應用程序存在的幾大重要元素
  • 深度剖析C++編譯器怎樣實現異常處理
  • 大概講述C++編譯模式說明介紹
  • 更好的設計面向對象的C++語言
  • 最大程度講述C++編譯語言種種特點

我說的是C++擁有比C更安全的類型檢查、更好的抽象機制、更優秀的庫。當然,凡事都有例外,如果你做的項目1)不大。2)編碼中用不到什麼抽象機制,甚至ADT抽象數據類型,例如std::complex這種不含多態和繼承的)也用不到,RAII也用不到,異常也用不到。3)你連基礎庫如,簡化資源管理的智能指針、智能容器)都用不著。那麼也許你用C的確沒問題;所以如果你的情況如此,不用和我爭論,因為我無法反駁你。我們這裡說的領域大致是Bjarne在“C++應用列表”裡面列出來的那些地方。

底線是:如果把C++中的諸多不必要的復雜性去掉,留下那些本質的,重要的語言特性,簡化語言模型,消除歷史包袱。即便是C++的反對者也許也很難找到理由說“我還是不用C++”。在我看來,一個真正從實踐意義上理性反對使用C++的人只有一個理由:C++的復雜性帶來的混亂抵消乃至超過了C++的抽象機制和庫在他的特定項目中)帶來的好處。

值得注意的是,這裡需要避免一個陷阱,就是一旦人們認定了“C++不好”,那麼這個理由就會“長出自己的腳來”,即,就算我們拿掉C++的復雜性,他們可能也會堅持還是不用C++,並為之找一堆理由。我假定你不是這樣的人。

不過,也許最可能的是他會說:“問題是我們今天用的C++並非如此簡潔),你的假設不成立。”是的,我的假設不成立。但雖然我們無法消除復雜性,我們實際上是可以容易地避開復雜性,避短揚長的。這也是本文的要點,容我後面再詳述。

當然,到現在你可能還是會說。我還是不用C++語言,因為我可以用D;或者如果你本來做的項目就不需要C++,你則可能會說,我用Python。首先,如果你的項目能用Java/Python乃至Ruby做,那麼用C++是自討苦吃。因為能用那些語言代表你的項目在效率上本身要求就不高。

那麼用一門效率上討不到太大好處,復雜性上卻綽綽有余的語言,有什麼價值呢?其次,如果你的項目效率是很重要的,你可能會說可以用D。然而現實是D在工業界尤其是國內被運用得非常少,幾乎沒有。

C++語言卻有大量的既有代碼,已經使用C++去做他們的產品的公司,在很長一段時間之內幾乎是不可能用別的語言重寫代碼的,正如Joel所說,決定重寫一個非平凡的代碼基==自殺。所以,我們至少要注意以下兩個明顯的事實

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved