1. 程式人生 > >C++相比於其他語言的優勢

C++相比於其他語言的優勢

傳統上認為,C++相對於目前一些新潮的語言,如Java、C#,優勢在於程式的執行效能。這種觀念並不完全。如果一個人深信這一點,那麼說明他並沒有充分了解和理解C++和那個某某語言。同時,持有這種觀念的人,通常也是受到了某種誤導(罪魁禍首當然就是那些財大氣粗的公司)。對於這些公司而言,他們隱藏了C++同某某語言間的核心差別,而把現在多數程式設計師不太關心的差別,也就是效能,加以強化。因為隨著CPU效能的快速提升,效能問題已不為人們所關心。這叫“李代桃僵”。很多涉世不深的程式設計師,也就相信了他們。於是,大公司們的陰謀也就得逞了。
  一般認為,使用Java或C#的開發成本比C++低。但是,如果你能夠充分分析C++和這些語言的差別,會發現這句話的成立是有條件的。這個條件就是:軟體規模和複雜度都比較小。如果不超過3萬行有效程式碼(不包括生成器產生的程式碼),這句話基本上還能成立。否則,隨著程式碼量和複雜度的增加,C++的優勢將會越來越明顯。造成這種差別的就是C++的軟體工程性。在Java和C#大談軟體工程的時候,C++實際上已經悄悄地將軟體工程性提升到一個前所未有的高度。這一點被多數人忽視,並且被大公司竭力掩蓋。
  語言在軟體工程上的好壞,依賴於語言的抽象能力。從面向過程到面向物件,語言的抽象能力有了一個質的飛躍。但在實踐中,人們發現面向物件無法解決所有軟體工程中的問題。於是,精英們逐步引入、並拓展泛型程式設計,解決更高層次的軟體工程問題。(實際上,面向物件和泛型程式設計的起源都可以追溯到1967年,但由於泛型程式設計更抽象,所以應用遠遠落後於面向物件)