1. 程式人生 > >[email protected]@C 比較

[email protected]@C 比較

對所有的程式語言,他們的最後的目的其實就是兩種:提高硬體的執行效率和提高程式設計師的開發效率。

遺憾的是,這兩點是不可能並存的!你只能選一樣。在提高硬體的執行效率這一方面,C語言沒有競爭者!舉個簡單的例子,實現一個列表,C語言用陣列int a[3],經過編譯以後變成了(基地址+偏移量)的方式。對於計算機來說,沒有運算比加法更快,沒有任何一種方法比(基地址+偏移量)的存取方法更快。

 

C語言已經把硬體的執行效率壓縮到了極致。這種設計思想帶來的問題就是易用性和安全性的缺失。例如,你不能在陣列中混合儲存不同的型別,否則編譯器沒有辦法計算正確的偏移量。同時C語言對於錯誤的偏移量也不聞不問,這就是C語言中臭名昭著的越界問題。

 

 

Java也是這樣,突出網路,易用,安全,跨平臺。無論是Java, c#還是python, 他們都有意避開提高硬體的執行效率這個問題,因為這個問題上沒辦法和C競爭,也無法撼動Linux, Unix,GNU tool這些已有C程式碼的位置。剩下的就只是提高程式設計師的開發效率上大作文章。這對C語言是好事,把自己不善長的東西去掉,讓自己跑的更快!

Python挺適合入門的,看起來很簡單,適合創業團隊,可以快速開發,快速上線,快速迭代。適合特種部隊的突襲。等到發展到一定規模,動態語言的劣勢就會體現出來,維護/重構難度高,特別是我覺得動態語言寫的程式碼腐化速度要比靜態的Java要快一些。  


Java呢,語法相對Python囉嗦,表達力要弱一些,開發起來一板一眼,有很多規範,適合集團軍的大規模協同作戰;有很多著名的框架和類庫,效能不錯,系統穩定而成熟,是開發大型系統的極好選擇。 

 

所以我猜測,最後Java會穩定在對跨平臺有嚴格要求的,大型非實時應用上。