性夜影院午夜看片,无码精品久久一区二区三区,婷婷成人丁香五月综合激情,校园春色 qvod,性调教室高h学校

兩大幸存者:Java與Python誰(shuí)更勝一籌?

程序員在編程語(yǔ)言的選擇上或多或少都猶豫過(guò),選擇時(shí)也會(huì)不自主地將客觀事實(shí)與主觀偏好相結(jié)合。過(guò)去十年,可供選擇的語(yǔ)言層出不窮,本文將重點(diǎn)縮小到20世紀(jì)90年代編程語(yǔ)言的兩大幸存者身上:Java和Python。

Java與Python

Python起源于一種腳本語(yǔ)言,它的語(yǔ)法體現(xiàn)了一種可讀性的理念,具有簡(jiǎn)單而規(guī)則的界限,鼓勵(lì)簡(jiǎn)潔和一致的代碼布局。Python的動(dòng)態(tài)類型有助于代碼簡(jiǎn)化和組合,是許多平臺(tái)的解釋性語(yǔ)言,成為眾多程序員編程首選的便攜式選項(xiàng)。

Python的參考實(shí)現(xiàn)(以C編寫,被稱為CPython)在許多平臺(tái)上可用,并且是眾多實(shí)現(xiàn)中最常用的。其他實(shí)現(xiàn)例如IronPython,是使用C#編寫的,并提供與.NET運(yùn)行時(shí)的緊密集成。

Python是圍繞可擴(kuò)展對(duì)象模型構(gòu)建的通用語(yǔ)言。其面向?qū)ο蟮暮诵牟⒉灰馕吨鴮?duì)象定向是開發(fā)人員在用Python編程時(shí)最常用的方式。它支持程序化編程,模塊化編程和部分函數(shù)式編程。

Java是一種面向?qū)ο笳Z(yǔ)言,具有許多程序員熟悉的類似于C / C ++的語(yǔ)法。其吸引力和價(jià)值所在是其具有的可移植性和相對(duì)效率。Java作為一種編譯語(yǔ)言,執(zhí)行模式與解釋性語(yǔ)言(比如Python和Perl)相比更加以機(jī)器為中心。Java不僅僅是一種語(yǔ)言和庫(kù):它也是一個(gè)虛擬機(jī),一個(gè)生態(tài)系統(tǒng)。Java虛擬機(jī)(JVM)是運(yùn)行Java代碼的理想化和便攜式平臺(tái)。程序員不必?fù)?dān)心硬件細(xì)節(jié),并且不必將代碼移植到新平臺(tái),Java承諾“一次寫入,到處編譯(WORA)”。同時(shí),JVM語(yǔ)言有很多,比如Groovy、Clojure、Scala、Python或者Jython。

  那么這兩種語(yǔ)言相比,哪一種更勝一籌呢?

  1、速度

雖然軟件中的性能并不總是一個(gè)問(wèn)題,但它始終是一個(gè)考量因素。在網(wǎng)絡(luò)I / O成本或數(shù)據(jù)庫(kù)訪問(wèn)占主導(dǎo)地位的情況下,語(yǔ)言的具體效率不如技術(shù)選擇和設(shè)計(jì)方面的整體效率重要。

Java和Python都不適合高性能計(jì)算,但在性能上,Java還是略勝一籌。雖然一些Python實(shí)現(xiàn)(如PyPy)可以針對(duì)性能進(jìn)行微調(diào),但原始的便攜式性能Python不占優(yōu)勢(shì)。

Java的效率優(yōu)勢(shì)體現(xiàn)在虛擬機(jī)執(zhí)行。程序執(zhí)行時(shí),JVM可以將字節(jié)碼轉(zhuǎn)換為本地機(jī)器碼。這種即時(shí)(JIT)編譯讓Java的性能略勝Python。依靠JIT是一個(gè)相當(dāng)便攜的假設(shè),HotSpot是默認(rèn)的Oracle JVM。

Java從其第一個(gè)公開版本起就支持并發(fā),而Python則是按序執(zhí)行。在當(dāng)前多核處理的趨勢(shì)下,Java代碼更易實(shí)現(xiàn)。

這一輪,Java勝!

  2、歷史遺留問(wèn)題

歷史遺留問(wèn)題在其技術(shù)上具有慣性。當(dāng)企業(yè)選擇了一種編程語(yǔ)言,就很難再次更換。例如,更多的企業(yè)項(xiàng)目后端可能會(huì)使用Java代碼來(lái)擴(kuò)展其功能,也許可以遷移到更新版本的語(yǔ)言,或者通過(guò)其他JVM語(yǔ)言(如Scala和Groovy)添加新功能。Java在企業(yè)中的歷史比Python更久,這也是招聘Java程序員的企業(yè)比招Python更多的原因。

這一輪,Java勝!

  3、實(shí)用敏捷性

漫長(zhǎng)的發(fā)展中,Java和Python都受益匪淺。Java通常被認(rèn)為與敏捷開發(fā)及其社區(qū)有更密切的聯(lián)系。Python在敏捷領(lǐng)域一直存在,并且受到諸多原因的影響而更加普及,包括DevOps運(yùn)動(dòng)的興起。

Java比Python具備更一致的重構(gòu)支持,一方面,它的靜態(tài)類型使自動(dòng)化重構(gòu)更可預(yù)測(cè)和可靠,另一方面是Java開發(fā)中IDE(例如IntelliJ,Eclipse和NetBeans)的普及。Python的動(dòng)態(tài)類型在代碼中鼓勵(lì)使用不同類型的敏捷性,其重點(diǎn)在于簡(jiǎn)潔和流動(dòng)。然而,Pythonic文化傾向于多種編輯器,而不是基于IDE,這意味著對(duì)強(qiáng)自動(dòng)重構(gòu)的支持較低。

JUnit的早期知名度及其與測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的關(guān)聯(lián)意味著,在所有語(yǔ)言中,Java可能是唯一一個(gè)單元測(cè)試受到程序員一致歡迎的語(yǔ)言。在IDE中自動(dòng)包含JUnit已經(jīng)在很大程度上對(duì)此有所幫助了。

Python的腳本起源和在其標(biāo)準(zhǔn)庫(kù)中包含測(cè)試功能意味著Python對(duì)現(xiàn)代開發(fā)中自動(dòng)化測(cè)試相當(dāng)重視,盡管它更有可能是集成而不是單元測(cè)試。在Java世界中,傳統(tǒng)Java代碼庫(kù)可以通過(guò)采用另一種JVM語(yǔ)言來(lái)加以改善,例如使用Groovy或Clojure進(jìn)行自動(dòng)化測(cè)試,或者完全跨越Java Universe,例如使用Python來(lái)處理系統(tǒng)方面操作 。

這一輪,平局!

  4、市場(chǎng)普及度

Java和Python都是TIOBE編程語(yǔ)言排行榜上的前十名,并且是穩(wěn)穩(wěn)地占據(jù)前十名。 但Java一直比Python更受歡迎,但是Python的受歡迎程度已經(jīng)超過(guò)了兩種編程語(yǔ)言:Perl和Ruby。

此外,兩種語(yǔ)言在教育中都具有強(qiáng)大的立足點(diǎn),但Java比Python更常用于大學(xué)課程中。

這一輪,Java勝!

  5、架構(gòu)

圍繞Python Web框架構(gòu)思的軟件體系架構(gòu)與Java的不會(huì)相差甚遠(yuǎn)。Java和Python都有各自的開源社區(qū),并有很多程序員一直在源源不斷的貢獻(xiàn)源代碼,這些代碼已經(jīng)解決了常見(jiàn)或者不常見(jiàn)的問(wèn)題,事實(shí)上,這兩種語(yǔ)言都因開源社區(qū)而受益匪淺。

這一輪,主要取決于公司具體要求!

  結(jié)論

Java和Python都是富有活力的編程語(yǔ)言,這兩種語(yǔ)言與開放性相關(guān)聯(lián),所以公司,團(tuán)隊(duì)和程序員在做出決定時(shí)最好保持開放的態(tài)度。至于,程序員到底該選擇哪種編程語(yǔ)言,可以結(jié)合上述五點(diǎn)自行比較,但更多的程序員似乎更傾向于Java。

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!