爲了讓小夥伴們在學習過程當中,能收穫更多的知識,達到真正的零基礎入門和深刻了解C++,老九君特意收集了有關C++發展相關的一些資料供你們查閱和學習:編程
C++語言發展大概能夠分爲三個階段:安全
第一階段:從80年代到1995年。這一階段C++語言基本上是傳統類型上的面嚮對象語言,而且憑藉着接近C語言的效率,在工業界使用的開發語言中佔據了至關大份額;
第二階段:從1995年到2000年,這一階段因爲標準模板庫(STL)和後來的Boost等程序庫的出現,泛型程序設計在C++中佔據了愈來愈多的比重性。固然,同時因爲Java、C#等語言出現和硬件價格的大規模降低,C++受到了必定的衝擊;網絡
第三階段:從2000年至今,因爲以Loki、MPL等程序庫爲表明的產生式編程和模板元編程的出現,C++出現了發展歷史上又一個新的高峯,這些新技術的出現以及和原有技術的融合,使C++已經成爲當今主流程序設計語言中最複雜的一員。模塊化
如下是C++發展年代列表:函數
1967 年,Simula 語言中第一次出現了面向對象 (OO) 的概念,但因爲當時軟件規模還不大,技術也還不太成熟,面向對象的優點並未發揮出來。工具
1980 年,Smalltalk-80 出現後,面向對象技術纔開始發揮魅力。學習
1979 年,Bjarne Stroustrup 借鑑 Simula 中 "Class" 的概念,開始研究加強 C 語言,使其支持面向對象的特性。B.Stroustrup 寫了一個轉換程序 "Cfront" 把 C++ 代碼轉換爲普通的 C 代碼,使它在各類各樣的平臺上當即投入使用。1983 年,這種語言被命名爲 C++。spa
1986 年,B.Stroustrup 出版了 《The C++ Programming Language》初版,這時 C++ 已經開始受到關注, B.Stroustrup 被稱爲 C++之父(Creator of C++)。設計
1989 年,負責 C++ 標準化的 ANSI X3J16掛牌成立。對象
1990 年,B.Stroustrup 出版了 《The Annotated C++ Reference Manual》(簡稱 ARM),因爲當時尚未 C++ 標準,ARM 成了事實上的標準。
1990 年, Template(模板) 和 Exception(異常) 加入到了 C++ 中, 使 C++ 具有了泛型編程(Generic Programming)和更好的運行期錯誤處理方式。
1991 年,負責 C++ 語言國際標準化的技術委員會工做組 ISO/IEC JTC1/SC22/WG21 召開了第一次會議,開始進行 C++ 國際標準化的工做。今後,ANSI 和 ISO 的標準化工做保持同步,互相協調。
1993 年,RTTI(運行期類型識別) 和 Namespace(名字空間) 加入到 C++ 中。
1994 年, C++ 標準草案出臺。B.Stroustrup 出版了《The Design and Evolution of C++》(簡稱 D&E)。原本,C++ 標準已接近完工,這時 STL(標準模板庫) 的建議草案被提交到標準委員會,對 STL 標準化的討論又一次推遲了 C++ 標準的出臺。
1998 年,ANSI 和 ISO 終於前後批准 C++ 語言成爲美國國家標準和國際標準。
2000 年,B.Stroustrup 推出了 《The C++ Programming Language》特別版(Special Edition),書中內容根據 C++ 標準進行了更新。
語言的發展是一個逐步遞進的過程,C++ 是直接從 C 語言發展過來的,而 C 語言是從 B 語言發展過來的,B 語言是 BCPL 的一個解釋性後代,BCPL 是 Basic CPL。其中最有趣的是 CPL 中 C 的由來,因爲當時這個語言是劍橋大學和倫敦大學合做開發的,在倫敦的人員加入以前,C 表示劍橋、倫敦人員加入以後,C 表示 Combined 組合。還有一種非正式的說法,C 表示 Christopher,由於 Christopher 是 CPL 背後的主要動力。
最初致使C++誕生的緣由是在Bjarne博士等人試圖去分析UNIX的內核的時候,這項工做開始於1979年4月,當時因爲沒有合適的工具可以有效的分析因爲內核分佈而形成的網絡流量,以及怎樣將內核模塊化。同年10月,Bjarne博士完成了一個能夠運行的預處理程序,稱之爲Cpre,它爲C加上了相似Simula的類機制。在這個過程當中,Bjarne博士開始思考是否是要開發一種新的語言,當時貝爾實驗室對這個想法很感興趣,就讓Bjarne博士等人組成一個開發小組,專門進行研究。
當時不是叫作C++,而是C with class,這是把它看成一種C語言的有效擴充。因爲當時C語言在編程界居於老大的地位,要想發展一種新的語言,最強大的競爭對手就是C語言,因此當時有兩個問題最受關注:C++要在運行時間、代碼緊湊性和數據緊湊性方面可以與C語言相媲美,可是還要儘可能避免在語言應用領域的限制。在這種狀況下,一個很天然的想法就是讓C++從C語言繼承過來,可是咱們的Bjarne博士更具備先見之明,他爲了不受到C語言的侷限性,參考了不少的語言,例如:從Simula繼承了類的概念,從Algol68繼承了運算符重載、引用以及在任何地方聲明變量的能力,從BCPL得到了//註釋,從Ada獲得了模板、名字空間,從Ada、Clu和ML取來了異常。
C++語言既保留了C語言的有效性、靈活性、便於移植等所有精華和特色,又添加了面向對象編程的支持,具備強大的編程功能,可方便地構造出模擬現實問題的實體和操做;編寫出的程序具備結構清晰、易於擴充等優良特性,適合於各類應用軟件、系統軟件的程序設計。用C++編寫的程序可讀性好,生成的代碼質量高,運行效率僅比彙編語言慢10%~20%。
C++語言具備如下特色:
C++是C語言的超集。它既保持了C語言的簡潔、高效和接近彙編語言等特色,又克服了C語言的缺點,其編譯系統能檢查更多的語法錯誤,所以,C++比C語言更安全。
C++保持了與C語言的兼容。絕大多數C語言程序能夠不經修改直接在C++環境中運行,用C語言編寫的衆多庫函數能夠用於C++程序中。
支持面向對象程序設計的特徵。C++既支持面向過程的程序設計,又支持面向對象的程序設計。
1.C++程序在可重用性、可擴充性、可維護性和可靠性等方面都較C語言獲得了提升,使其更適合開發大中型的系統軟件和應用程序。
2.C++設計成靜態類型、和C一樣高效且可移植的多用途程序設計語言。
3.C++設計成直接的和普遍的支援多種程序設計風格(程序化程序設計、資料抽象化、面向對象程序設計、泛型程序設計)。
4.C++設計成給程序設計者更多的選擇,即便可能致使程序設計者選擇錯誤。
5.C++設計成儘量與C兼容,籍此提供一個從C到C++的平滑過渡。
6.C++避免平臺限定或沒有廣泛用途的特性。
7.C++不使用會帶來額外開銷的特性。
8.C++設計成無需複雜的程序設計環境。
出於保證語言的簡潔和運行高效等方面的考慮,C++的不少特性都是以庫(如STL)或其餘的形式提供的,而沒有直接添加到語言自己裏。
老九學堂出品