Swift 勢必取代 Python?

源:http://985.so/bqzP

Swift擁有強力的後援

Swift是由Chris Lattner在蘋果工作時創建的。目前,Chris Lattner在Google Brain工作——這是世界上最先進的人工智能研究團隊之一。 Swift語言的創始人如今在研究深度學習的實驗室工作,這個事實說明這是一個重大的項目。

前段時間,Google意識到儘管Python是一種優秀的語言,但它仍有許多難以克服的侷限性。TensorFlow需要一種新語言,經過長時間的考慮後,這個重任落到了Swift肩上。我不打算對此做詳細的介紹,但是你可以自行閱讀這篇文檔(https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md),文中描述了Python的缺點,有關其他語言的考量,以及最終選中了Swift的經過。

Swift 勢必取代 Python?


Swift版的TensorFlow不僅僅是一個代碼庫

Swift版的TensorFlow不僅僅是另一種語言的TensorFlow。

從本質上來說,它是Swift語言的另一個分支(就像在git上創建branch一樣)。這意味著Swift版的TensorFlow並不是一個代碼庫, 它本身就是一種語言,它內置的功能支持TensorFlow所需的所有功能。

例如,Swift版的TensorFlow擁有非常強大的自動微分系統,這是深度學習計算梯度所需的基礎。相比之下,Python的自動微分系統不是語言的核心組成部分。有一些最初為Swift版的TensorFlow開發的功能後來被集成到了Swift語言本身中。

Swift非常快

當第一次得知Swift的運行速度與C代碼一樣快時,我感到非常驚訝。我知道C經過了高度優化,且可以實現非常高的速度,但這需要以微內存管理為代價,因此C不能保證內存的安全。此外,C不是一種非常容易學習的語言。

如今,Swift的數值計算速度與C一樣快,還沒有內存安全的問題,而且更容易學習。Swift背後的LLVM編譯器功能非常強大,並且擁有非常高效的優化功能,可以確保代碼快速地運行。

你可以在Swift中使用Python、C和C++代碼

由於Swift的機器學習才剛剛開始,因此Swift的機器學習庫並不多。然而,你無需擔心,因為Swift可以很好地與Python語言結合。你只需在Swift中導入Python庫,就可以放心使用了。

與此同時,你還可以將C和C++庫導入到Swift中(對於C++,你需要確保頭文件是用純C編寫的,沒有C++的特性)。

總而言之,如果你需要的某個特定的功能尚未在Swift中實現,則可以導入相應的Python、C或C++包。這一點簡直逆天了!

Swift 勢必取代 Python?


Swift還可以深入底層

如果你曾經使用過TensorFlow,那麼很可能是通過Python包來實現的。在底層,Python版的TensorFlow是用C實現的。所以在TensorFlow中調用函數時,你一定會在某個層面上遇到一些C代碼。這意味著在你查看源代碼的時候,會遇到一些限制。例如,你想看看卷積的實現方式,卻發現看不到Python代碼,因為它是用C實現的。

然而,在Swift中情況有所不同。Chris Lattner稱Swift是“LLVM [彙編語言]的語法糖”。這意味著從本質上講,Swift非常靠近硬件,Swift與硬件之間沒有其他用C寫的附加層。這也意味著Swift代碼非常快,如上所述。

因此,開發人員能夠檢查所有的代碼,無論是高層的代碼還是非常底層的代碼,都無需深入C。


分享到:


相關文章: