Python的四個(gè)挑戰(zhàn)者:Swift、Go、Julia、R
沒(méi)什么是永恒的——包括編程語(yǔ)言。很多看起來(lái)可能是將來(lái)的佼佼者,到頭來(lái)可能被人們遺忘。無(wú)論是因?yàn)椴豢煽咕艿脑?,還是因?yàn)樽陨戆l(fā)展的原因。
Python時(shí)下正在“最熱門(mén)的編程語(yǔ)言榜”上春風(fēng)得意,看起來(lái)將會(huì)成為一門(mén)不朽的語(yǔ)言。但是現(xiàn)在,很多其他語(yǔ)言也逐漸顯現(xiàn)出Python的一些優(yōu)點(diǎn):編程方便,對(duì)數(shù)學(xué)和科學(xué)計(jì)算擁有強(qiáng)大的處理能力,龐大的第三方庫(kù)。
下面是Python的一些潛在的挑戰(zhàn)者,并討論了Python是如何保住它***的席位的。
Swift
它是什么:蘋(píng)果公司的一種編程語(yǔ)言,主要用于原生的iOS開(kāi)發(fā),但是現(xiàn)在已經(jīng)開(kāi)源,并有向服務(wù)器端發(fā)展的傾向。
它的優(yōu)點(diǎn):使用Swift編程是一種毫無(wú)障礙的體驗(yàn)!用起來(lái)相比于編譯型語(yǔ)言(比如,它間接的前任Objective-C)更像是一種腳本語(yǔ)言(比如Python)。Swift的決定性的優(yōu)點(diǎn)是它的速度——它是由LLVM編譯框架編譯成機(jī)器碼的,所以它具備真正的多線程。Python還在這方面掙扎。
如果說(shuō)開(kāi)發(fā)速度要比執(zhí)行速度重要的話,Python在方面更有優(yōu)勢(shì)。但是Swift有XCode IDE的“Playground”模式。
Python的優(yōu)點(diǎn):一方面,相比于Python來(lái)說(shuō),Swift是一門(mén)新型的編程語(yǔ)言,Python有所有成熟的語(yǔ)言所具備的優(yōu)點(diǎn)——大量的用戶基礎(chǔ),大量的庫(kù),成熟的多平臺(tái)支持。Swift現(xiàn)在甚至還不能支持Windows(如果不算上第三方庫(kù)的話),雖然這是將來(lái)必定會(huì)實(shí)現(xiàn)的特性。Swift還會(huì)產(chǎn)生對(duì)蘋(píng)果工具鏈的依賴(比如Xcode),而Python的依賴就少的很。
Go
它是什么:**Google的“表現(xiàn)力強(qiáng)、簡(jiǎn)潔、干凈、高效”的語(yǔ)言,從Docker及其相關(guān)項(xiàng)目到InfluxDB數(shù)據(jù)庫(kù),Ethereum壞鏈系統(tǒng)和Canonical的Snappy包管理工具都是用Go寫(xiě)成的。
它的優(yōu)勢(shì):和Swift一樣,Go語(yǔ)言也會(huì)編譯成平臺(tái)相關(guān)的機(jī)器碼,所以它不僅可以在多任務(wù)方面比Python快很多,還還可以在運(yùn)行時(shí)不像Python那樣生成額外的目標(biāo)。Go代碼編譯速度非???,開(kāi)發(fā)速度也很快,所以它更像一門(mén)解釋性的語(yǔ)言。
Python的優(yōu)勢(shì):雖然Go不像Swift那么新——它在2009年發(fā)布——Python在用戶和庫(kù)的數(shù)量方面還是占有優(yōu)勢(shì)。此外,Go的語(yǔ)法和錯(cuò)誤處理方式和Python相去甚遠(yuǎn)。所以,現(xiàn)在Python用戶很難轉(zhuǎn)移到Go,但是不會(huì)阻止新用戶選擇這樣一門(mén)語(yǔ)言?,F(xiàn)階段,Python的安裝器讓使用和構(gòu)建Python應(yīng)用非常簡(jiǎn)單——更不必說(shuō)像Linux這樣的系統(tǒng),Python已經(jīng)成為了標(biāo)準(zhǔn)。
Julia
它是什么:在2012年發(fā)布,是面向技術(shù)應(yīng)用的一門(mén)編程語(yǔ)言,例如數(shù)據(jù)分析和線性代數(shù)。
它的優(yōu)點(diǎn): Python一個(gè)很大的用處是數(shù)學(xué)和科學(xué)應(yīng)用——多虧了Numpy這樣的庫(kù)和交互式的IPython編輯程序。Julia的目標(biāo)用戶也是同樣的群體,和Go、Swift一樣,它也比Python快。它還有一個(gè)正在不斷擴(kuò)展的包,不僅僅包括科學(xué)和數(shù)學(xué)計(jì)算的應(yīng)用,還有很多Python的功能,比如從云端提供商那里取得數(shù)據(jù)。
Python的優(yōu)點(diǎn): Julia有和Python類(lèi)似的庫(kù),但是Python并不滿足現(xiàn)狀,還在馬不停蹄地優(yōu)化語(yǔ)言的核心和開(kāi)發(fā)環(huán)境。Python的速度并非一定不及Julia(或者其他Python的競(jìng)爭(zhēng)者),只要針對(duì)不同的工作選擇恰當(dāng)?shù)膸?kù)完成,速度還是客觀的。
Julia語(yǔ)言本身還存在一些爭(zhēng)議。比如,Julia的數(shù)組下標(biāo)是從1開(kāi)始的,而不是0——這不僅和Python比是一個(gè)缺點(diǎn),很其他語(yǔ)言比起來(lái)也是。(很多第三方的包索引也是從1開(kāi)始,但是仍讓人很不習(xí)慣。)
R
它是什么:無(wú)論是就開(kāi)發(fā)環(huán)境還是語(yǔ)言本身來(lái)說(shuō),這都是一個(gè)很老的語(yǔ)言了。它專(zhuān)為統(tǒng)計(jì)學(xué)設(shè)計(jì)。
它的優(yōu)點(diǎn): R有很多Python的優(yōu)點(diǎn),比如有豐富的第三方庫(kù)等。但是R是專(zhuān)門(mén)為統(tǒng)計(jì)學(xué)而生的,并且在后面的發(fā)展中依然專(zhuān)注于此。Python也可以做數(shù)學(xué)和統(tǒng)計(jì)學(xué)方面的計(jì)算,但是在這方面被R語(yǔ)言完全碾壓。
R語(yǔ)言還引起了很多大公司的注意,微軟收購(gòu)了一個(gè)R語(yǔ)言標(biāo)準(zhǔn)實(shí)現(xiàn)的開(kāi)發(fā)商開(kāi)服務(wù)它的云端數(shù)據(jù)。Hewlett-Packard開(kāi)發(fā)了一種分布式的R語(yǔ)言計(jì)算產(chǎn)品,可以同時(shí)跨多個(gè)節(jié)點(diǎn)運(yùn)行。這個(gè)產(chǎn)品在將來(lái)可以把Python完全擠出這個(gè)領(lǐng)域。
Python的優(yōu)點(diǎn):有時(shí)候,作為一個(gè)多用途的語(yǔ)言也有它的好處。R語(yǔ)言的功能局限在統(tǒng)計(jì)學(xué)計(jì)算方面。由于開(kāi)發(fā)環(huán)境的限制,構(gòu)建R語(yǔ)言應(yīng)用也很麻煩,使用Python創(chuàng)建應(yīng)用就很簡(jiǎn)單。而且通過(guò)像RPy2這樣的包可以輕松地將R語(yǔ)言和Python聯(lián)合起來(lái)。
微軟對(duì)R語(yǔ)言的投入很多,但是同時(shí)微軟也對(duì)Python提供了很多支持,所以這兩種語(yǔ)言都能在Azure上工作的很好。















 
 
 



 
 
 
 