智者的眼光
——《C++語言的設計和演化》讀書筆記(2)
我不得不佩服Stroustrup充滿睿智的頭腦:在80年代初,就設計出了那麼多現代C++中所具備的特徵:
● 類——目前幾乎所有流行物件導向語言都有的元素,甚至關鍵字都差不多。
● 衍生類別(繼承的體現,哪一個物件導向語言不具備繼承的性質呢?)
● 公用/私用的存取控制(目前流行物件導向語言都具備的特徵)
● 建構函式和解構函式(也是目前流行物件導向語言都具備的特徵)
● 友員、內聯、運算子多載(C++中不是經常遇到嗎?別的語言不知道)
這些特徵,在現在看起來是那麼的平常,在任何一本介紹C++物件導向的書中都能查到,但在當時,我想是沒有什麼現成的可以參考的,有的可能就是早期的那些語言,也許有隻言片語可以借鑒,但更多的是透過Stroustrup那富有靈氣的頭腦通過反覆地實踐探索出來的。他的設計是如此富有遠見以至於到現在,我們所使用的語言中,處處都透著當年設計的氣息。
Stroustrup的眼光還在於準確的把握了市場的需求,使得帶類的C以及後來的C++能夠比較快的被人們接受,廣泛流傳。首先,他知道拉攏甚至極力討好C使用者,因為當時有很多人用C,而且由於C的許多特性如C的靈活性、高效性、可用性以及可移植性使得Stroustrup決定在C的基礎上加以擴充。這樣,不僅C使用者會比較容易接受,其他使用者看到即有C的優點,又結合如Simula、Smalltalk等其他語言的優勢後,也會轉向使用帶類的C的隊伍中來。其次,他沒有忘記在開拓語言優勢的同時,保留原來一些語言的優點,只有這樣,才有可能說服原來用慣了高效靈活的C的使用者轉而投奔到帶類的C以及C++的懷抱中來。他沒有把C++設計成一個完美的語言,而是盡量是語言貼近實際的應用,以完成實際項目為目的。
ps:第一章看起來還比較舒服,可第二章看起來怎麼那麼不順呢?似乎裘老師翻譯的某些關鍵字的適用性還有待商榷,比如inline(翻譯成'線上')、constructor(翻譯成'建構函數')等。