C++之父評論C++與Java

如 果人們非要拿C++和Java來做比較,我建議他們去閱讀The Design and Evolution of C++,看看C++爲何是今天這個樣子,用我在設計C++時聽從的原則來檢驗這兩種語言。這些原則與SUN的Java開發小組所持的理念顯然是不一樣的。 除了表面語法的類似性以外,C++與Java是大相徑庭的語言。在不少方面,Java更像Smalltalk。(Sun的培訓教材清楚地寫道:Java在設計上採用了與C++類似的語法,與Smalltalk類似的語義。因此能夠說Java與C++是貌合神離,與Smalltalk纔是心有靈犀。)Java 語言相對簡單,這部分是一種錯覺,部分是由於這種語言還不完整。隨着時間的推移,Java在體積和複雜程度上都會大大增加。在體積上它會增加兩到三倍,而 且會出現一些實現相關的擴展或者庫。這是一條每一個成功的商業語言都必須走過的發展之路。隨便分析一種你認爲在很大範圍內取得了成功的語言,我知道確定是無 有例外者,並且實際上這很是有道理。

  上邊這段話是在Java 1.1推出以前寫 的。我確信Java須要相似模板的機制,而且須要加強對於固有類型的支持。簡單地說,就是爲了基本的完整性也應該作這些工做。另外還須要作不少小的改動, 大部分是擴展。1998年秋,我從James Gosling(Java語言的創始人)那裏獲得一份建議書,說是要在Java中增長固有類型、操做符重載以及數學計算支持。

  還有一篇論文,是數學分析領域的世界級大師,伯克利大學的W. Kahan教授所寫的How Java's Floating-Point Hurts Everyone Everywhere(且看Java的浮點運算如何危害了普天下的芸芸衆生,點擊超連接進入詳情),揭露了Java的一些祕密。我發如今電視和出版物中關於Java的鼓吹是不許確的,並且氣勢洶洶,讓人討厭大肆叫囂凡是非Java的代碼都是垃圾,這是對程序員的侮辱建議把全部的保留代碼都用Java重寫,這是喪心病狂,既不現實也不負責任。Sun和他的追隨者彷佛以爲爲了對付微軟罪惡的「帝國時代」,就必須如此自吹自擂。可是侮辱和欺詐只會把那些喜歡使用不一樣編程語言的程序員逼到微軟陣營裏去。

  Java並不是平臺無關,它自己就是平臺。跟Windows同樣,它也是一個專有的商業平臺。也就是說,你能夠爲Windows/Intel編寫代碼,也能夠爲Java/JVM編寫代碼,在任何一種狀況下,你都是在爲一個屬於某個公司的平臺寫代碼,這些代碼都是與該公司的商業利益扯在一塊兒的。固然你可使用任何一種語言,結合操做系統的機制來編寫可供JVM執行的程序,可是JVM之類的東西是強烈地偏向於Java語言的。它一點也不像是通用的、公平的、語言中立的VM/OS。私下裏,我會堅持使用可移植的C++做大部分工做,用不一樣的語言做餘下的工做。

  「Java is not platform-independent, it is the platform」,B. S (Bjarne Stroustrup)的這句評語對於C++用戶有着很大的影響,有些C++高手甚至把這句話做爲本身的簽名檔,以代表對Java的態度和誓死捍衛C++的決心。 html

相關文章
相關標籤/搜索