天天看點

四款後起語言能否挑戰 Python 的王者地位

四款後起語言能否挑戰 Python 的王者地位

swift、go、julia與r已經成為現任便捷性與功能性王者python的潛在競争對手。

王權沒有永恒,程式設計語言自然也不例外。作為目前雄踞各大語言人氣榜冠軍的python,其似乎也面臨着同樣的挑戰。不過各類後起之秀也都憑借着自身設計證明,python所擁有的程式設計便捷性、強大的數學與科學運算能力以及龐大的第三方庫正是一款優秀語言所必須具備的特質,而并非“加分項”。

以下是python與這四位潛在挑戰者間的比拼,python要如何繼續保持住其在程式設計語言中的優勢?

swift

作為蘋果原本為ios開發設計的新興語言,swift已經走向開源并引起了伺服器端開發者們的廣泛興趣。

在swift中編寫代碼相當舒适,其類似于一種腳本語言而非作為前代方案的objective-c那種編譯語言。swift的決定性優勢在于執行速度——其采用與llvm編譯器架構一緻的方式進行機器碼編譯,是以能夠多線程支援,能力上超越python。

如果開發者認為開發速度比執行速度更重要,那麼python略有優勢,不過swift也通過xcode ide提供相當便捷的“playground”模式。

相較于python,swift仍然比較年輕,是以我們的老牌王者在群衆基礎上顯然更好。swift目前尚無法運作在windows平台上,是以在落地方面不及python那麼便利。

go

谷歌公司打造的“直覺、簡潔、幹淨、高效”語言,目前已經得到諸多主流技術廠商的廣泛支援。

與swift類似,go同樣可編譯為平台原生二進制代碼,是以在某些任務中擁有優于python的運作速度,而且無需設定目标即可完成跨平台開發。go語言的編譯速度也非常出色,從開發速度角度看,其更像是一種解釋型語言而非采用編譯機制。

雖然go的曆史比swift稍長一些,但其群體基礎仍然無法同python相比。另外,go的文法與錯誤處理方案對目前python使用者來說可能不太友好。是以,其并不适合已經掌握了python的程式員朋友。而pyinstaller等工具的出現則讓python應用的綁定工作變得非常便捷,更不用提在大多數linux系統中,python運作時已經被設為預置項目了。

julia

釋出于2012年的julia專門用于技術類應用,例如資料分析與線性代數計算。

python的一類主要用例在于數學與科學應用,這主要歸功于numpy等庫與互動ipython筆記本格式。julia瞄準了同一使用者群體,但在核心速度上要超過python。另外,其還提供愈發豐富的軟體包資源,不僅能夠實作數學與科學應用,同時也能像python那樣實作面向雲環境下資料源的連接配接性。

julia雖然發展速度很快,但python的開發者社群也不會坐以待斃——圍繞python進行的核心語言與環境開發一直未曾停歇。而且盡管python的運作速度不及julia,但大家仍然可以利用合适的庫來搞定合适的工作。

另外julia的反對者也大有人在。舉例來說,julia的數組為1索引而非0索引,這一點與幾乎所有現有語言都有所差別。

r

這是一個同時包含語言與開發環境的統計計算項目。

r相較于python擁有多項優勢,例如豐富的第三方軟體生态系統。另外,r在設計中考慮到了統計計算需求。雖然python也很重視數學及統計處理,但r可謂在開發當中自上而下将二者進行了貫穿。

r還吸引到了衆多大牌廠商的支援。微軟就進行了一系列收購旨在利用r建構自己的雲資料服務。惠普方面則開發了distributed r,能夠一次性運作在多個節點之上。随着各相關技術成果的不斷演進,r完全有可能在統計計算領域将python拉下馬。

不過有時候通用型語言的優勢還是值得強調。r雖然針對性更強,但也更具局限性——我們很難在r應用中實作互動性。另外,python還能夠更好地與其它語言對接,使用rpy2等軟體包即可同時享受python與r帶來的便利。

最後,盡管微軟确實對r給予了高度關注,但别忘了軟體巨頭同時也向python伸出了援助之手,并計算将其運作在azure當中。