C++的歷史

jobbole發表於2014-04-18

  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

相關文章