1. 程式人生 > >C語言與C++、C++與JAVA 的區別總結

C語言與C++、C++與JAVA 的區別總結

C 和 C++ 的區別

C語言面向過程,重點在於演算法和資料結構。。C程式的設計首先考慮的是如 何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控 制)。

當軟體變得越來越複雜,程式碼越來越長,一個人的腦力有限,往往寫到後面,就忘了前面是如何做的。而且複雜的軟體需要很多人協同一起完成,這時面向過程的方法就不太實用。因此一種面向物件的軟體開發方法應運而生。

C++語言是面向物件語言,首先考慮的是如何構造一個物件模型,讓這個模型能夠契合與之對應的 問題域,這樣就可以通過獲取物件的狀態資訊得到輸出或實現過程(事務)控制。 它在C的基礎上添加了面向物件、模板等現在程式設計語言的特性。拓展了面向物件設計的內容,如類、繼承、虛擬函式、模板和容器類等等,使之更加符合現代程式設計的需要。

看似C++比C多了很多優點和特性,那為什麼我們還要學習C語言?

因為C++並不是所有場合都適用,很多嵌入式開發系統,都只提供了C語言的開發環境,而沒有提供C++的開發環境。很多C++語言不願意乾的髒活累活,C語言幹起來快活得很。例如某些對效能要求極高的大型系統,諸如搜尋引擎演算法、銀行金融系統等等,只有勤快的C語言能夠出色地完成這些任務,而C++因為過於複雜,在這方面就稍遜一籌了。

應用場景:

隨著當今世界嵌入式開發的發展、大型演算法應用,特別是搜尋引擎、雲端計算的興起,C語言的用武之地不但沒有萎縮,反而有逐漸擴充套件的趨勢。

C++則非常適合寫一些基礎架構級軟體的,比如編譯器,GUI庫等等。

C++ 和 JAVA 的區別

1、解釋對編譯:Java是一種解釋性語言,意味著其在執行時會被“翻譯”為二進位制形式,也就是java跑得時候必須有人(jvm)去解釋它(現在的Java語言,其執行方式已經不僅僅是解釋執行方式了,即時編譯器(JITC、just-in-time compiler)技術和原型編譯技術的出現大大提高了JAVA的執行效率)。而C++則是編譯語言,意味著程式只能在特定作業系統上編譯並在特定系統上執行,也就是說C++一步到位成機器語言的。

2、記憶體安全:Java是一種記憶體安全型語言,意味著大家可以為給定陣列分配任意引數,即使超出範圍也只會返回錯誤提示。C++更為靈活,但代價是一旦分配的引數超出資源範圍,則會引起錯誤甚至嚴重崩潰。

3、效能:Java人氣極高,但其程式碼由於需要在執行前進行解釋因此效能表現更差。C++會被編譯為二進位制形式,因此其能夠立即執行且速度更快。如果你寫一個c++的程式和做同樣事情的java程式,可能你感覺兩者速度差不多。但如果這兩個程式都足夠大、而且c++的程式碼經過過優化,兩者的速度差就會變得很顯著甚至很驚人,C++會比java快很多。

4、指標:指標是一種C++結構,允許您直接在記憶體空間中進行值管理。Java不支援指標,因此您可能使用值引用的方式進行值傳遞。

5、過載:過載是指對某種方法或者運算子的功能進行“重新定義”。Java允許方法過載,而C++則允許進行運算子過載。

應用場景:

java側重於大型企業級應用開發,C++側重於底層應用開發。Java是Android開發領域的王者,因此移動開發者無疑應該選擇它作為專案基礎。另外,Java也常見於Web及桌面應用乃至伺服器端應用。

C++更接近機器語言,因此其軟體執行速度更快且能夠直接與計算機記憶體、磁碟、CPU或者其它裝置進行協作。另外,C++也能為遊戲提供良好的執行效能。