C++的歷史

jopen 10年前發布 | 18K 次閱讀 C/C++

C++的歷史可以追溯到1979年,當時Bjarne Stroustrup(譯者注:C++之父)正在準備他的博士畢業論文,他有機會使用一種叫做Simula 的語言。顧名思義,Simula語言的主要作用是仿真。Simula 67是Simula語言的一種變種,被公認是首款支持面向對象的語言。Stroustrup發現面向對象的思想對于軟件開發非常有用,但是因Simula語言執行效率低,其實用性不強。

不久之后,Stroustrup開始著手“C with Classes”的研發工作,“C with Classes”表明這種新語言是在C基礎上研發的,是C語言的超集。C語言以其高可移植性而廣受好評,且程序執行速度以及底層函數的性能不受程序移植的 影響,Stroustrup要做的就是將面向對象的思想引入C語言。新語言的初始版本除了包括C語言的基本特征之外,還具備、簡單繼承內聯機制、函數默認參數以及強類型檢查等特性。

Bjarne Stroustrup的第一款“C with classes”編譯器叫Cfront,這個名字源自一個叫做Cpre的C編譯器。Cfront的機理是把“C with classes”的代碼翻譯成原生C代碼。頗為有趣的一點是Cfront源碼大部分是由“C with Classes”編寫,這使得Cfront成為了一種自足執行的編譯器(可以編譯自身源碼的編譯器)。由于很難整合C++的異常機制,Cfront在1993年退出了歷史的舞臺,但是它對以后C++編譯器以及Unix操作系統的實現都產生了深遠的影響。

1983年,“C with Classes”語言更名為C++。C語言中“++”運算子的作用是對一個變量進行遞增操作,由此我們多少可以知曉Stroustrup對這種新語言的定位。這個時期,許多重要的特性被加入,其中包括虛函數函數重載、引用機制(符號為&)、const關鍵字以及雙斜線的單行注釋(從BCPL語言引入)。

1985年,Stroustrup的C++參考手冊《C++ Programming Language》出版,同年,C++的商業版本問世。由于當時C++并沒有正式的語言規范,因此《C++ Programming Language》成了業界的重要參考。1989年,C++再次版本更新,這次更新引入了多重繼承、保護成員以及靜態成員等語言特性。

1990年,《Annotated C++ Reference Manual》發布,同年,Borland公司的商業版Turbo C++編譯器問世。Turbo C++附帶了大量函數庫,這一舉措對C++開發產生了極為深遠的影響。雖然Turbo C++上一個穩定的版本發布于2006年,但當前該編譯器仍被廣泛使用。

1998年,C++標準委員會發布了C++語言的第一個國際標準—ISO/IEC 14882:1998,該標準即為大名鼎鼎的C++98。C++98的提出,《The Annotated C++ Reference Manual》功不可沒。同時,1979年開始研發的標準模板庫(Standard Template Library,STL)也被納入了該版標準中。2003年,標準委員會針對98版本中存在的諸多問題進行了修訂,修訂后發布了C++03

2005年,C++標準委員會發布了一份技術報告(Technical Report,TR1)詳細說明了計劃引入C++的新特性。這個新標準被非正式地命名為C++0x,因為其預計會在本世紀第一個十年的某個時間發布。諷刺 的是,直到2011年年中該標準才面世,相應的技術文檔也隨之出爐,一些編譯器廠商也開始試驗性地支持這些新特性。

2011年中,新的C++標準C++11)面世。Boost庫對該版本影響很大,一些新的模塊甚至直接衍生于Boost中相應的模塊。一些新的語言特性,包括正則表達式(正則表達式詳情)、完備的隨機數生成函數庫、新的時間相關函數,原子操作支持、標準線程庫(2011之前,C和C++語言均缺少對線程的支持)、一種能夠和某些語言中foreach語句達到相同效果的新的for語法、auto關鍵字、新的容器類、更好的union支持、數組初始化列表的支持以及變參模板的支持等等。

原文鏈接: Albatross   翻譯: 伯樂在線 - honpey
譯文鏈接: http://blog.jobbole.com/64349/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!