C++/C/JAVA/Python之間的區別?

之前C和C++還有JAVA都接觸過一些皮毛(上學時),現在就在學python。但是我不太清楚這四者之間的區別,以及在什麼情況下選擇使用哪種語言比較好?


這四者都是通用編程語言:

python: 快速開發應用程序

java: 健壯的大型軟體

C++: 需求效率的軟體

C: 操作系統及驅動

python比較容易學習,語法很簡單,融入了很多現代編程語言的特性。python的庫非常豐富,可以迅速地開發程序,無論是網站還是小遊戲都非常方便。不過,python的腳本的運行效率較低,不適合對運行效率要求較高的程序。

Java的語法比較規則,採用嚴格的面向對象編程方法,同時有很多大型的開發框架,比較適合企業級應用。Java的學習曲線較長,不僅要學習語言相關的特性,還要面向對象的軟體構造方法,在此之後要學習一些框架的使用方法。

C++不僅是C和java特點的結合。實際上C++是多範式編程語言。它不僅支持傳統的面向過程編程,也支持面向對象編程,最初C++發明的時候就叫做C with class (帶類的C),隨著時間推移,C++又接受了泛形編程的思想,像STL庫就是一個例子。C++的語法風格不一而同,大部分人在寫C++的時候還是當作帶類的C來使用,其實C++可以寫出像python一樣現代的風格。C++運行效率較高,同時能夠比較容易地建立大型軟體,適合對效率要求高的軟體,比如機器學習中的神經網路,大型遊戲編程等等。C++的內容非常複雜,同時語言經過了幾十年的演化,所以學習起來難度較大,開發效率較低。

C是幾種語言中最古老的。C是C++的子集。C的最初出現是為了代替運行效率高但是開發效率低下的彙編語言。C語言現在多應用於操作系統編程,或者驅動開發。比如著名的Linux系統就是使用C語言開發的。C++也可以開發操作系統但是太過於笨重。像python 或者java這樣的語言不適合這樣低級的開發。


如圖


如果你是一位計算機方面零基礎的小白,在日常工作和生活中,希望能夠自己編寫程序來完成一些事情。那麼,比較各種語言之間的異同,實際上是為了選擇適合自己的學習和使用的。下面就為大家分別介紹一下目前比較主流的編程語言之間的異同點。

首先,C++、Java和Python都是面向對象的編程語言。其中C++和Java都是強類型語言,而Python是一種弱類型語言。

C++更接近於底層,方便直接操作內存。C++不僅擁有計算機高效運行的實用性特徵,同時還致力於提高大規模程序的編程質量與程序設計語言的問題描述能力。

來源於C,C是一種面向過程的語言。由於C++源於C,它良好的兼容了C功能,完全支持C,因此既可以面向對象、也可以面向過程。近幾年又在此基礎上發展出C#,C#使用起來更類似於Java。

C++和C中都有指針的概念,C++還可以使用智能指針,boost庫。指針可以理解為一個地址,可以由程序員使用指針直接拿到該地址的數據,但是由於指針在使用的過程中,如果沒有處理好,容易出現空指針和野指針,帶來一些麻煩,因此Java去掉了指針的功能,規避了指針使用中可能存在的混亂情況。Java在C++的基礎上又做了更高級的封裝,具有良好的平台間的可移植性。C++一次編寫到處編譯,而Java一次編譯到處運行。Java中的功能C++都能夠實現,只是相對來說在編程方面會比較複雜一些。

C++ 編譯成本地機器碼, 可以由操作系統直接運行,運行效率較高。

Java 編譯成位元組碼,需由Java虛擬機讀取運行, 所以效率偏低,但可通過JIT提高運行效率。

垃圾回收方面,C++需要程序員自己回收,對內存進行良好的管理,而Java則不需要程序員自己完成這個工作,有自己的垃圾回收機制。

各種語言的基本語法都是相似的,比如int、float、double、bool等基本數據類型。

但是實現起來肯定是不同,比如C++把聲明和實現分別放在頭文件和源文件中,而Java則不使用頭文件。C++引用其他內容時需要include,而Java則用package和import。這些都是細節的差別,但都是最基礎的內容。

Java還可以應用到Android開發和JSP開發中。Java可以用來編寫Android的應用程序,C#也可以。JSP則是用Java來做網站的。

Python是一種腳本語言,面向對象的思想個人認為體現的不是很明顯。它更適合用來做演算法。Python簡單易學,對於新手來講是編程入門的好選擇。Python其實也是基於C++創造的,它們的區別主要體現在,C++效率高,編程難;Python效率低,編程簡單。比如同樣的事情,Python程序員可以很快的寫出代碼,但機器運行卻可能需要成倍於C++的時間;反之,C++程序員編程實現的難度比較大,但在機器上的運行效率很高。因此,很多公司在核心的功能、需要大量運行的部分更傾向於選擇C++,而在執行次數不多,但對寫代碼速度要求比較高的部分則更傾向於使用Python。

常用的IDE,C++常用VS,Java常用MyEclipse,Python則是PyCharm。

如果你想了解編程並快速做出點可用的東西學Python,想轉行從事編程工作學Java,想了解計算機底層的執行過程與運行原理就來學C++吧。

當然,如果想做出自己的東西,不僅需要了解編程語言,基本的數據結構、資料庫、操作系統方面的知識都要懂一些。更深一點的還包括計算機網路、計算機組成原理等基礎內容。

最後可能是對大家最實用的部分:

*做信息系統的請用Java和關係型資料庫(可以是MySQL,SQL Server等)

*做網站請用JSP(基於Java的)或者PHP(當然JSP和PHP都是用來實現後台功能的,前台界面請學習HTML5和CSS標準);

*做演算法請用Python;

*做要求高效率的運算請用C++;

*做界面Java和C++都可以,C++請學習Qt(風格類似於Windows操作系統),Java請下載和導入Swing包(輕量級組件)或Awt包(重量級組件,現在已經用的比較少)學習。

溫馨小Tips:

以上都是我學習本專業幾年以及工作一年來自己學習和領悟到的內容,並不全面,因為我的水平也有限,但把我知道的相關內容基本都寫了,其他的過於專業的東西不適合在這裡做更多介紹。

如果大家想了解更多的內容,可以在知乎、百度上搜索,應有盡有。互聯網行業有一個好處就是資源開放透明,如果真的想學,網上的資料非常多。

推薦一個學習論壇,csdn,上面有很多很好的講解和例子,具體的問題都可以在上面查。學會使用搜索引擎和參考別人的代碼、思路為自己服務本身也是一種很重要的技能。

此外,做一名合格的程序員,首先要搞清楚的其實是需求,就是你要完成什麼事情,才能根據需求編碼,否則最後極有可能百忙一場或出現很多問題。


網站開發選python

安卓開發選java

桌面開發選C++ or python

系統, 驅動, 嵌入式C, C++

桌面開發就不要考慮了, 基本上已經處於消亡的狀態中, 至於系統, 驅動, 嵌入式我覺得也不要去搞, 一是現在這樣的工作崗位少, 尤其是國內的, 而是學習困難且成就感低, 易於放棄.

如果從語言層面上而言的話

python最易學, 最易獲得成就感, 沒事可以做個爬蟲玩玩, 例如: 新版用戶排行榜+論數據的價值 - 私宅 - 知乎專欄 可以用python實現一個;

C語言也比較易學, 但很難獲得成就感, 因為你不知道拿來幹什麼;

java最繁瑣, 學起來的感覺跟老奶奶嘮叨一樣(安卓沒接觸過, 不清楚具體怎麼樣), 不過java工作應該是國內最容易找的了;

C++ 基本上是把C的特點擴展了, 再把java的特點擴展了融合到一起(java借鑒並簡化了C++), 反正難點都集中到一起了.

另: C, C++, java因長年不用, 如有錯誤, 謝謝指出


java 格式嚴格,適合初學者


如果是去氣象公司,請問學習哪一個比較好呢?


推薦閱讀:

什麼樣的編程語言會不支持遞歸呢?
學編程是否應該堅持看英文版著作?
在程序開發中,++i 與 i++的區別在哪裡?
為什麼 C 語言對字元串的設計是用零結尾,而不是像 Pascal 一樣在字元串首指明長度?

TAG:編程語言 | Java | Java編程 | C |