求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

C++檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋

C++是一種被廣泛使用的計算機程序設計語言。它是一種通用程序設計語言,支持多重編程模式,例如過程化程序設計、數據抽象、面向對象程序設計、泛型程序設計和設計模式等[1]

比雅尼·斯特勞斯特魯普博士在貝爾實驗室工作期間在20世紀80年代發明並實現了C++。起初,這種語言被稱作「C with Classes」(「包含『類』的C語言」),作為C語言的增強版出現。隨後,C++不斷增加新特性。虛函數(virtual function)、運算符重載(operator overloading)、多繼承(multiple inheritance)、標準模板庫(standard template library, STL)、異常處理(exception)、運行時類型信息(runtime type information)、名字空間(namespace)等概念逐漸納入標準。1998年,國際標準組織(ISO)頒布了C++程序設計語言的第一個國際標準ISO/IEC 14882:1998,目前最新標準為ISO/IEC 14882:2017。根據《C++編程思想》(Thinking in C++)一書,C++與C的代碼執行效率往往相差在±5%之間。

發展歷史

C++語言發展大概可以分為三個階段:第一階段從80年代到1995年。這一階段C++語言基本上是傳統類型上的面向對象語言,並且憑藉着接近C語言的效率,在工業界使用的開發語言中占據了相當大份額;第二階段從1995年到2000年,這一階段由於標準模板庫(STL)和後來的Boost等程序庫的出現,泛型程序設計在C++中占據了越來越多的比重。當然,同時由於Java、C#等語言的出現和硬件價格的大規模下降,C++受到了一定的衝擊;第三階段從2000年至今,由於以Loki、MPL(Boost)等程序庫為代表的產生式編程和模板元編程的出現,C++出現了發展歷史上又一個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最複雜的一員。

比雅尼·斯特勞斯特魯普(Stroustrup)工作起於1979年的C with Classes。這個構思起源於斯特勞斯特魯普做博士論文時的一些程序撰寫經驗。他發現Simula具備很利於大型軟件開發的特點,但Simula的運行速度太慢,無法對現實需求發揮功效;BCPL雖快得多,但它過於低端的特性,使其不適於大型軟件的開發。當斯特勞斯特魯普開始在貝爾實驗室工作時,他有分析UNIX核心關於分布式計算的問題。回想起他的博士論文經驗,斯特勞斯特魯普開始為C語言增強一些類似Simula的特點。之所以選擇C,是因為它適於各種用途、快速和可移植性。除了C和Simula之外,同時也從其它語言中獲取靈感,如ALGOL 68、Ada、CLU以及ML。

剛開始時,類別、派生類、存儲類型檢查、內聯和缺省參數特性,都是透過Cfront引入C語言之中。

1983年,C with Classes改命名為C++(++是C語言中的增值操作符)。加入了新的特性,其中包括虛函數函數名和運算符重載、參考常量、用戶可控制的自由空間存儲區控制、改良的類型檢查,以及新的雙斜線(//)單行註解風格。

1985年,發布第一版《C++程序設計語言》,提供一個重點的語言參考,至此還不是官方標準。1985年10月出現了第一個商業化發布。

1989年,發布了Release 2.0。引入了多重繼承、抽象類別、靜態成員函數、常量成員函數,以及成員保護。1990年,出版了The Annotated C++ Reference Manual。這本書後來成為標準化的基礎。稍後還引入了模板、異常處理、名字空間、新的強制類型轉換,以及布爾類型。

隨着C++語言的演變,也逐漸演化出相應的標準程序庫。最先加進C++標準庫的是流I/O程序庫,其用以取代傳統的C函數,如printf和scanf。隨後所引入的程序庫中最重要的便是標準模板庫,簡稱STL。

多年後,一個聯合的ANSI-ISO委員會於1998年對C++標準化(ISO/IEC 14882:1998)。在官方發布1998標準的若干年後,委員會處理缺陷報告,並於2003年發布一個C++標準的修正版本。2005年,一份名為Library Technical Report 1(簡稱TR1)的技術報告發布。雖然還不是官方標準的一部分,不過它所提供的幾個擴展可望成為下一版C++標準的一部分。幾乎所有目前仍在維護的C++編譯器皆已支持TR1。

目前最新的C++標準是2017年12月發布的ISO/IEC 14882:2017,又稱C++17或C++1z[2]

雖然C++免專利,但標準文件本身並不是免費的,儘管標準文檔不是免費的,但是很容易從網絡中獲取,最簡單的就是C++標準文檔之前的最後一次草稿版本,它與標準的差別幾乎只在於排版上。

C++名字的由來

C++這個名字是Rick Mascitti於1983年中所建議的,並於1983年12月首次使用。更早以前,尚在研究階段的發展中語言曾被稱為「new C」,之後是「C with Classes」。在計算機科學中,C++仍被稱為C語言的上層結構。它最後得名於C語言中的「++」運算符(其對變量的值進行遞增)。而且在共同的命名約定中,使用「+」以表示增強的程序。斯特勞斯特魯普說:「這個名字象徵着源自於C語言變化的自然演進」。C+是一個和C/C++無關的早期編程語言。

Rick Mascitti在1992年被非正式地問起名字的由來,他表示這是在半開玩笑中說出的。他從沒想過C++會成為這門語言的正式名字。

有一個關於C++名字的笑話是,當你使用後綴++時,附加只發生在運算之後(因此,它應該是++C,而不是C++,這個笑話是說時下某些程序員還在以使用C的方式使用C++,這通常被一些權威著作認為是不正確的)。

視頻

C++ 相關視頻

C加加基礎教程第1節:C加加知識點全概括
C加加基礎教程第2節:一段簡單的輸出程序

參考文獻