Bjarne Stroustrup 這哥們在劍橋讀博的時候,需要實現一個分散式的作業系統。仔細一想,自己在丹麥讀大學的時候就用過 Simula,記得它的「型別表達」、「編譯排錯」能力以及「類」和「協程」特性還挺好用,於是選擇 Simula 語言作為工具。
結果他實現的系統慢得飛起,好急。為了能按時畢業,他只好用 BCPL 重寫了那個程式,好氣。於是這哥們暗下決心,之後要是沒有牛逼的工具,他再也不會去處理這種坑爹的問題。這個工具應該:
- 具有 Simula 這種對程式組織的支援——某種形式的類分層結構,對併發的某種支援以及基於類的靜態檢查。
- 執行得像 BCPL 一樣快
- 支援高度可移植實現
畢業之後,牛逼的他來到了牛逼的貝爾實驗室。到了公司後,發現有一個需求是要去分析 Unix 核心,然後把它部署在一個區域網上。這時候他面臨了兩個問題:
- 如何分析因為核心分佈造成的網路流量
- 怎麼將核心模組化
於是,相信大家也能猜到,偉大的時刻來臨了,C++ 要誕生啦(撒花 (^o^)/~)。於是牛逼的他說『我有一個夢想,我的夢想是有一種語言,它帶有 「Simula 類」的「Algol 68」』。但他也說,如果要構造以及實際工具,C 還是稍微比 Algol 68 要屌一些。因為在當時:
- C 是靈活的,可以用到當時幾乎所有領域
- C 是高效的,程式設計師可以用 C 語言有效地利用硬體資源
- C 是可用的,當時已有可用的 C 編譯系統和標準庫,以及一些相關的工具
- C 是可移植的
BS 為了可以像使用 Simula 一樣使用 C,讓程式設計師去描述型別。於是採用了 Simula 中的術語 Class 來讓 C++ 支援定義型別。