2019-02-26 10:27:56分類:行業資訊4574
AI(人工智能)為應用程序開發人員打開了一個充滿可能性的世界。 通過利用機器學習或深度學習,您可以生成更好的用戶畫像、個性特征和適當推薦,或者包含更智能的搜索、語音接口或智能輔助,或者以其他方式改進您的應用程序。 您甚至可以構建能看、會聽并響應的應用程序。
你應該學習哪種編程語言來探究AI的深度? 當然,您需要一種具有許多良好機器學習和深度學習庫的語言。 它還應具有良好的運行時性能、良好的工具支持、大型??程序員社區以及健康的支持包生態系統。 這仍然能留下很多好的選擇。
以下是我對人工智能開發的五種最佳編程語言的選擇,以及三項榮譽提及。 其中一些語言正在崛起,而其他語言似乎正在下滑。 幾個月后回來,沒準你可能會發現這些排名發生了變化。
那么,應該選擇哪種編程語言進行機器學習或深度學習項目? 給你推薦五種最佳的編程語言選擇。
一、AI編程首選
1.Python
排名第一的是Python。 怎么可能是別的,真的嗎? 雖然有一些關于Python的令人抓狂的事情 ——空格、Python 2.x和Python 3.x之間的重大分裂、五種不同的打包系統,它們都將不是問題——如果你正在進行AI工作,你幾乎肯定會 在某些時候使用Python。
Python中提供的庫在其他語言中幾乎是無與倫比的。 NumPy已經變得如此普遍,它幾乎是張量操作的標準API,而Pandas將R強大而靈活的數據幀帶入Python。 對于自然語言處理(NLP),您擁有令人尊敬的NLTK和極其快速的SpaCy。 對于機器學習,有經過實戰考驗的Scikit-learn。 當涉及到深度學習時,所有當前的庫(TensorFlow,PyTorch,Chainer,Apache MXNet,Theano等)都是有效的Python優先項目。
如果您正在閱讀關于arXiv的尖端深度學習研究,那么幾乎可以肯定您會在Python中找到源代碼。 然后是Python生態系統的其他部分。雖然IPython已成為Jupyter Notebook,而不是以Python為中心,但您仍會發現大多數Jupyter Notebook用戶以及大多數在線共享的筆記本都使用Python。
沒法繞過它。 Python是人工智能研究的最前沿語言,是你能找到最多的機器學習和深度學習框架的語言,也是AI世界中幾乎所有人都會說的。 出于這些原因,Python是人工智能編程語言中的第一個,盡管你的編碼作者每天至少會詛咒一次空白問題。
2.Java和他的朋友
JVM家族系列語言(Java,Scala,Kotlin,Clojure等)也是AI應用程序開發的絕佳選擇。 無論是自然語言處理(CoreNLP)、張量操作(ND4J)還是完整的GPU加速深度學習堆棧(DL4J),您都可以使用豐富的庫來管理所有部分。此外,您還可以輕松訪問Apache Spark和Apache Hadoop等大數據平臺。
Java是大多數企業的通用語言,Java 8和Java 9中提供了新的語言結構,編寫Java代碼并不是我們許多人記憶中的可憎體驗。 用Java編寫AI應用程序可能會讓人覺得無聊,但它可以完成工作 - 您可以使用所有現有的Java基礎架構進行開發、部署和監視。
3.C/C++
在開發AI應用程序時,C/C++不太可能是您的首選,但如果您在嵌入式環境中工作,并且無法負擔Java虛擬機或Python解釋器的開銷,那么C/C++就是解決之道。當你需要從系統中獲取最后一點性能時,你需要回到可怕的指針世界。
值得慶幸的是,現代的C/C++寫起來還是很愉快的(誠實之言!)。 具體方法你是有的選擇的——您可以深入了解堆棧底部,使用CUDA等庫來編寫直接在GPU上運行的代碼,也可以使用TensorFlow或Caffe來訪問靈活的高級API。 后者還允許您導入數據科學家可能使用Python構建的模型,然后以C/C++提供的所有速度在生產中運行它們。
請留意Rust在未來一年中在這個領域所做的事情。 結合C/C++的速度與類型和數據安全性,Rust是實現生產性能的絕佳選擇,而不會產生安全問題。 并且對Rust來說,TensorFlow綁定已經可用了。
4.JavaScript
JavaScript? 到底幾個意思? 淡定,聽我說說——Google最近發布了TensorFlow.js,這是一個WebGL加速庫,允許您在Web瀏覽器中訓練和運行機器學習模型。 它還包括Keras API以及加載和使用在常規TensorFlow中訓練的模型的能力。 這可能會吸引大量開發人員涌入AI領域。 雖然JavaScript目前沒有與此處列出的其他語言相同的機器學習庫訪問權限,但很快開發人員將在他們的網頁中添加神經網絡,與添加React組件或CSS屬性幾乎相同。真是即賦予權力有讓人震恐。
TensorFlow.js仍處于早期階段。 目前它在瀏覽器中有用,但在Node.js中不起作用。 它還沒有實現完整的TensorFlow API。 但是,我預計這兩個問題將在2018年底之前得到解決,此后不久JavaScript將對人工智能進行入侵。
5.R
R進入前五名的底部,并且趨勢向下。 R是數據科學家喜愛的語言。 但是,由于其以數據幀為中心的方法,其他程序員在第一次遇到R時會發現R有點混亂。 如果你有一個專門的R開發人員小組,那么使用與TensorFlow,Keras或H2O的集成進行研究,原型設計和實驗是有意義的,但由于性能和操作問題,我不愿意推薦R用于生產用途 。 雖然您可以編寫可以部署在生產服務器上的高性能R代碼,但是使用該R原型并使用Java或Python重新編寫它幾乎肯定會更容易。
二、其它AI編程
當然,Python,Java,C/C++,JavaScript和R并不是唯一可用于AI編程的語言。 讓我們來看看其它三種編程語言,這些語言并沒有完全進入我們的前五——二上升,一下降。
1.Lua
幾年前,Lua在人工智能領域處于領先地位。 使用Torch框架,Lua是最流行的深度學習開發語言之一,你仍然會在GitHub上遇到很多歷史深度學習工作,用Lua/Torch定義模型。 我認為,為了研究和查看人們以前的工作,熟悉Lua是個好主意。 但隨著TensorFlow和PyTorch這樣的框架的到來,Lua的使用已大幅減少。
2.Julia
Julia是一種高性能的編程語言,專注于數值計算,這使得它非常適合“數學繁重”的AI世界。 雖然現在不是那種流行的語言選擇,但像TensorFlow.jl和Mocha(受Caffe影響很大)這樣的包裝器提供了良好的深度學習支持。 如果你不介意那里還沒有一個龐大的生態系統,但是希望從其專注于使高性能計算變得容易和迅速的過程中獲益,這是個不錯的選擇。
3.Swift
正如我們要推出的那樣,LLVM編譯器和Swift編程語言的創建者Chris Lattner宣布推出Swift for TensorFlow,該項目承諾將Python提供的易用性與速度和靜態類型檢查相結合的編譯型語言。 作為獎勵,Swift for TensorFlow還允許您導入Python庫(如NumPy)并在Swift代碼中使用它們,就像使用任何其他庫一樣。
現在,Swift for Tensorflow目前處于開發的早期階段,但是能夠編寫現代編程結構并獲得速度和安全性的編譯時保證,確實是一個誘人的前景。 即使你還沒出去學習Swift,我也建議你留意這個項目。