好多初學(xué)編程的小伙伴在問:“Python和Java到底有什么區(qū)別?到底是學(xué)Python還是Java?!?/strong>
一副惆悵的樣子,難以下手。
今天,給大家總結(jié)了關(guān)于兩者的十二點(diǎn)區(qū)別。
Python的核心是可以很方便地使用c語言函數(shù)或c++庫。
可以在運(yùn)行時(shí)自己修改自己的代碼,java只能通過變通方法實(shí)現(xiàn)。
Python的變量是動態(tài)的,而java的變量是靜態(tài)的,需要事先聲明,所以java ide的代碼提示功能優(yōu)于Python ide。
Python的產(chǎn)生幾十年了,幾十年前面向過程是主流,所以用Python有好多程序用的是面向過程設(shè)計(jì)方法,很多概念從c語言過來的,class在Python中是后加入的,而java是為了實(shí)現(xiàn)沒有指針的c++(當(dāng)年com組件用的引用記數(shù),java用的虛擬機(jī)),主要采用面向?qū)ο蟮脑O(shè)計(jì)方法,很多概念是oop的概念。
面向過程,相對簡潔直觀,但容易設(shè)計(jì)出面條程序,面向?qū)ο?,相對抽象?yōu)雅,但容易過度抽象。
但要學(xué)會用Python干活,需要再學(xué)習(xí)Python各種庫,Python的強(qiáng)大在于庫,為什么Python的庫強(qiáng)大,原因是python的庫可以用python,c語言,c++等設(shè)計(jì),再提供給python使用。
所以無論gpu運(yùn)行,神經(jīng)網(wǎng)絡(luò),智能算法,數(shù)據(jù)分析,圖像處理,科學(xué)計(jì)算,各式各樣的庫在等著你用。
而java沒有Python那么多的開源庫,很多庫是商業(yè)公司內(nèi)部使用,或發(fā)布出來只是一個(gè)jar包,看不到原始代碼。
Python虛擬機(jī)因?yàn)榫幾g性沒有java的支持的好(或者說故意這么設(shè)計(jì)的),一般直接使用源碼(linux),或源碼簡單打個(gè)包(如pyexe)。
如cython,Pyston,pypy,jython, IronPython等等,適合用于業(yè)務(wù)語言,或插件語言,或面向領(lǐng)域語言,而java因?yàn)樘摂M機(jī)巨大,很少用于插件語言,發(fā)布也不方便。
如商城系統(tǒng),erp,oa,金融,保險(xiǎn)等傳統(tǒng)數(shù)據(jù)庫事務(wù)領(lǐng)域,通過類似ssh框架事務(wù)代碼,對商業(yè)數(shù)據(jù)庫,如oralce,db2,sql server等支持較好,軟件工程理念較強(qiáng),適合軟件工程師的多人開發(fā)模式。
Python主要用于web數(shù)據(jù)分析,科學(xué)計(jì)算,金融分析,信號分析,圖像算法,數(shù)學(xué)計(jì)算,統(tǒng)計(jì)分析,算法建模,服務(wù)器運(yùn)維,自動化操作,快速開發(fā)理念強(qiáng),適合快速開發(fā)團(tuán)隊(duì)或個(gè)人敏捷模式。
如sap,oracle,ibm等,有商業(yè)化的容器,中間件,企業(yè)框架ejb。python的開源組織支持多,如qt,linux,google,很多開源程序都支持python, 如pyqt,redis,spark等。
Python是膠水,可以把各類不相關(guān)的東西粘在一起用,java是基佬,可以通過軟件工程組成幾百個(gè)人的團(tuán)隊(duì)和你pk,商業(yè)化氣息重。
不過我認(rèn)為還是Python強(qiáng)大,因?yàn)榭梢?strong>方便調(diào)用c或c++的庫,但軟件工程和商業(yè)化運(yùn)作沒有java好,適合快捷開發(fā)。
如果你想寫程序賣軟件用java,可用上ibm服務(wù)器,上oracle數(shù)據(jù)庫,上EMC存儲,價(jià)格高,商業(yè)采購公司喜歡這種高大上。
如果你要直接用程序生成金錢用Python,Python可以實(shí)現(xiàn)寬客金融,數(shù)據(jù)回測,炒股,炒期權(quán),炒黃金,炒比特幣,對沖套利,統(tǒng)計(jì)套利,有很多開源庫,數(shù)據(jù)分析庫,機(jī)器學(xué)習(xí)庫可以參考。
但很多l(xiāng)inux可以原生支持Python,java需要自行安裝。
Java和Python強(qiáng)于c#的原因大于支持linux,支持osx,支持unix,支持arm。java和python比c++受歡迎的原因在于不需要指針。
Python只能通過運(yùn)行庫運(yùn)行于安卓或ios,java原生支持安卓開發(fā),但不能用ios中。
Hadoop用Java開發(fā)的, Spark用Scala開發(fā),Scala基于JVM,F(xiàn)link也是基于Java.大數(shù)據(jù)開發(fā)選Java,Python主要用于大數(shù)據(jù)分析。
關(guān)注小咖編程Gzhong號,領(lǐng)取Python資料