四款后起編程語言能否成功挑戰(zhàn)Python的王者地位
譯文Swift、Go、Julia與R已經(jīng)成為現(xiàn)任便捷性與功能性王者Python的潛在競(jìng)爭(zhēng)對(duì)手。
王權(quán)沒有永恒,編程語言自然也不例外。作為當(dāng)前雄踞各大語言人氣榜冠軍的Python,其似乎也面臨著同樣的挑戰(zhàn)。不過各類后起之秀也都憑借著自身設(shè)計(jì)證明,Python所擁有的編程便捷性、強(qiáng)大的數(shù)學(xué)與科學(xué)運(yùn)算能力以及龐大的第三方庫正是一款優(yōu)秀語言所必須具備的特質(zhì),而并非“加分項(xiàng)”。
以下是Python與這四位潛在挑戰(zhàn)者間的比拼,Python要如何繼續(xù)保持住其在編程語言中的優(yōu)勢(shì)?
Swift
作為蘋果原本為iOS開發(fā)設(shè)計(jì)的新興語言,Swift已經(jīng)走向開源并引起了服務(wù)器端開發(fā)者們的廣泛興趣。
在Swift中編寫代碼相當(dāng)舒適,其類似于一種腳本語言而非作為前代方案的Objective-C那種編譯語言。Swift的決定性優(yōu)勢(shì)在于執(zhí)行速度——其采用與LLVM編譯器框架一致的方式進(jìn)行機(jī)器碼編譯,因此能夠多線程支持,能力上超越Python。
如果開發(fā)者認(rèn)為開發(fā)速度比執(zhí)行速度更重要,那么Python略有優(yōu)勢(shì),不過Swift也通過Xcode IDE提供相當(dāng)便捷的“Playground”模式。
相較于Python,Swift仍然比較年輕,因此我們的老牌王者在群眾基礎(chǔ)上顯然更好。Swift目前尚無法運(yùn)行在Windows平臺(tái)上,因此在落地方面不及Python那么便利。
Go
谷歌公司打造的“直觀、簡(jiǎn)潔、干凈、高效”語言,目前已經(jīng)得到諸多主流技術(shù)廠商的廣泛支持。
與Swift類似,Go同樣可編譯為平臺(tái)原生二進(jìn)制代碼,因此在某些任務(wù)中擁有優(yōu)于Python的運(yùn)行速度,而且無需設(shè)定目標(biāo)即可完成跨平臺(tái)開發(fā)。Go語言的編譯速度也非常出色,從開發(fā)速度角度看,其更像是一種解釋型語言而非采用編譯機(jī)制。
雖然Go的歷史比Swift稍長(zhǎng)一些,但其群體基礎(chǔ)仍然無法同Python相比。另外,Go的語法與錯(cuò)誤處理方案對(duì)當(dāng)前Python用戶來說可能不太友好。因此,其并不適合已經(jīng)掌握了Python的程序員朋友。而Pyinstaller等工具的出現(xiàn)則讓Python應(yīng)用的綁定工作變得非常便捷,更不用提在大多數(shù)Linux系統(tǒng)中,Python運(yùn)行時(shí)已經(jīng)被設(shè)為預(yù)置項(xiàng)目了。
Julia
發(fā)布于2012年的Julia專門用于技術(shù)類應(yīng)用,例如數(shù)據(jù)分析與線性代數(shù)計(jì)算。
Python的一類主要用例在于數(shù)學(xué)與科學(xué)應(yīng)用,這主要?dú)w功于Numpy等庫與交互IPython筆記本格式。Julia瞄準(zhǔn)了同一用戶群體,但在核心速度上要超過Python。另外,其還提供愈發(fā)豐富的軟件包資源,不僅能夠?qū)崿F(xiàn)數(shù)學(xué)與科學(xué)應(yīng)用,同時(shí)也能像Python那樣實(shí)現(xiàn)面向云環(huán)境下數(shù)據(jù)源的連接性。
Julia雖然發(fā)展速度很快,但Python的開發(fā)者社區(qū)也不會(huì)坐以待斃——圍繞Python進(jìn)行的核心語言與環(huán)境開發(fā)一直未曾停歇。而且盡管Python的運(yùn)行速度不及Julia,但大家仍然可以利用合適的庫來搞定合適的工作。
另外Julia的反對(duì)者也大有人在。舉例來說,Julia的數(shù)組為1索引而非0索引,這一點(diǎn)與幾乎所有現(xiàn)有語言都有所區(qū)別。
R
這是一個(gè)同時(shí)包含語言與開發(fā)環(huán)境的統(tǒng)計(jì)計(jì)算項(xiàng)目。
R相較于Python擁有多項(xiàng)優(yōu)勢(shì),例如豐富的第三方軟件生態(tài)系統(tǒng)。另外,R在設(shè)計(jì)中考慮到了統(tǒng)計(jì)計(jì)算需求。雖然Python也很重視數(shù)學(xué)及統(tǒng)計(jì)處理,但R可謂在開發(fā)當(dāng)中自上而下將二者進(jìn)行了貫穿。
R還吸引到了眾多大牌廠商的支持。微軟就進(jìn)行了一系列收購旨在利用R構(gòu)建自己的云數(shù)據(jù)服務(wù)。惠普方面則開發(fā)了Distributed R,能夠一次性運(yùn)行在多個(gè)節(jié)點(diǎn)之上。隨著各相關(guān)技術(shù)成果的不斷演進(jìn),R完全有可能在統(tǒng)計(jì)計(jì)算領(lǐng)域?qū)ython拉下馬。
不過有時(shí)候通用型語言的優(yōu)勢(shì)還是值得強(qiáng)調(diào)。R雖然針對(duì)性更強(qiáng),但也更具局限性——我們很難在R應(yīng)用中實(shí)現(xiàn)交互性。另外,Python還能夠更好地與其它語言對(duì)接,使用RPy2等軟件包即可同時(shí)享受Python與R帶來的便利。
***,盡管微軟確實(shí)對(duì)R給予了高度關(guān)注,但別忘了軟件巨頭同時(shí)也向Python伸出了援助之手,并計(jì)算將其運(yùn)行在Azure當(dāng)中。
原文標(biāo)題:4 languages poised to out-Python Python