來源 | CSDN(ID:CSDNnews)譯者 | 蘇本如,責編 | 伍杏玲作者 | Claire D
本文講述用於人工智能編程的頂級編程語言,AI工程師和相關從業者可從中選擇適合他們項目所需要的語言,你Pick哪個呢?
以下為譯文:
人工智能已成為我們日常生活不可或缺的一部分,它被廣泛地應用到幾百種實際場景中,極大地便利人們的工作和生活。
隨著近年來的發展,人工智能促進企業的發展,這該歸功於底層編程語言核心的改進。
隨著人工智能的蓬勃發展和編程語言的持續改進,對高效、熟練的程序員和工程師的需求激增。雖然有很多編程語言可以讓你在人工智能開發領域上輕鬆起步,但是沒有一種編程語言可以成為人工智能編程的“一站式”解決方案,因為每種編程語言都有自己的獨特之處。目的不同,對語言的要求也會不同。
接下來,我將列出一些最受歡迎的人工智能編程語言,一起看下:
1、Python
Python是有史以來最強大的編程語言。——Pau Dubois
Python誕生於1991年。據一項民意調查顯示,超過57%的開發人員更願意選擇Python,而不是C++作為開發人工智能解決方案的編程語言。Python易於學習,為程序員和數據科學家們提供了一個更輕鬆地進入人工智能開發世界的入口。
Python是一個關於程序員需要多少自由的實驗。太多的自由,會導致沒有人能讀懂別人的代碼;太少的自由,會傷害到語言的表現力。——Guido van Rossum
使用Python,你不僅可以獲得優秀的社區支持和大量的庫,還可以享受編程語言提供的靈活性。Python最有可能讓你受益的一些特性是:平臺獨立性和可以用於深度學習和機器學習的廣泛框架。
使用Python編程的樂趣應該是看到簡潔、可讀性強的類,這些類使用簡潔而清晰的代碼(而不是一堆無聊至死的瑣碎代碼)完成了大量的操作。——Guido van Rossum
下面是一段Python代碼的示例:
Python代碼示例片斷
Python的一些最受歡迎的庫,列表如下:
- TensorFlow,用於解決機器學習的工作負載和使用數據集問題。
- scikit-learn,用於培訓機器學習模型。
- PyTorch ,用於計算機視覺和自然語言處理。
- Keras,作為高度複雜的數學計算和操作的代碼接口。
- SparkMLlib,類似於Apache Spark的機器學習庫,使用算法和實用程序等工具使得機器學習對每個人都可以很輕鬆。
- MXNet,作為Apache的另一個庫,用於簡化深度學習工作流。
- Theano,作為定義、優化和評估數學表達式的庫。
- Pybrain,用於強大的機器學習算法。
此外,對GitHub存儲庫貢獻的分析結果顯示,Python已經超越Java,成為第二大最受歡迎的編程語言。實際上,Stack Overflow認為它是“增長最快”的主流編程語言。
圖源:Octoverse
適合初學者的Python課程:
- 3個供初學者學習的免費Python課程:2020版https://hackernoon.com/3-free-python-courses-for-beginners-2020-edition-j7c23y3u
hackernoon.com網站提供的最好的免費Python課程,如果你想擴展你的Python知識,那麼請來這裡。
- Python訓練營:學習Python語言和編碼的培訓營https://www.udemy.com/course/complete-python-bootcamp/?LSNPUBID=JVFxdTr9V80&ranEAID=JVFxdTr9V80&ranMID=39197&ranSiteID=JVFxdTr9V80-lB6TwxSdouentAk36.qjmw
這是Udemy上學習Python編程語言的最全面、最直接的課程!
2、Java
一次編寫,到處運行。
Java被認為是世界上最好的編程語言之一,過去20年大夥的使用證明了這一點。
Java編程語言具有高度的用戶友好性、靈活性和平臺獨立性,它已經以各種方式被用於人工智能的開發當中,以下是一些例子供你瞭解:
- TensorFlow
TensorFlow支持的編程語言列表也包括帶有API的Java。它對Java的支持不像其他完全支持的語言那樣功能豐富,但它已經存在,並且正在以很快的速度得到改進。
- Deep Java Library
由Amazon構建,使用Java來創建和部署深度學習能力。
- Kubeflow
Kubeflow用於在Kubernetes上輕鬆部署和管理機器學習堆棧,提供現成的機器學習解決方案。
- OpenNLP
Apache的OpenNLP是一個用於自然語言處理的機器學習工具。
- Java機器學習庫
Java ML為開發人員提供了幾種機器學習算法。
- Neuroph
在Neuroph GUI的幫助下,Neuroph使得使用Java開源框架設計神經網絡成為可能。
如果Java有真正的垃圾回收,那麼大多數程序在執行完後都會把自己從內存中刪除。——Robert Sewell
Java代碼的示例片斷如下:
Java代碼的示例片斷
適合初學者的Java課程:
- 供初學者在線學習的五個最好的Java編程課程https://javarevisited.blogspot.com/2018/05/top-5-java-courses-for-beginners-to-learn-online.html
如果你是一名計算機學科的畢業生,或者是想學習Java並尋找一些很棒的資源的人,那麼請來這裡吧。
3、R語言
R語言是由Ross Ihaka和Robert Gentleman開發,1995年推出第一個版本。目前它由R開發核心團隊維護。R語言是S編程語言(以統計和繪圖為目的)的一種實現,它被用來輔助開發統計軟件和數據分析。
R語言被開發人員大量地用於人工智能編程,主要是因為它具有以下兩個特點:
- R語言擅長處理大量數據的基本特性,相比帶有未經優化的NumPy包的Python語言來說,更有優勢。
- 使用R語言,你可以以各種編程模式工作,如函數式編程、矢量計算和麵向對象編程。
R語言可供使用的一些AI編程包有:
- Gmodels,提供了用於模型擬合的多個工具的集合。
- Tm,作為一種文本挖掘應用的框架。
- RODBC,作為R語言的ODBC接口。
- OneR,用於實現One Rule機器學習分類算法,適用於機器學習模型。
R語言因其如下特點/功能,在數據挖掘人員和統計人員中被廣泛採用:
- 各種各樣的庫和包,以擴展其功能。
- 積極支持的社區。
- 能夠與C、C++和FORTRAN一起工作
- 多個軟件包幫助功能擴展。
- 支持生成高質量的圖形
一個有趣的R語言應用例子:
使用R語言製作2019新冠肺炎(Covid-19)交互式地圖:
https://www.r-bloggers.com/covid-19-interactive-map-using-r-with-shiny-leaflet-and-dplyr/
使用R語言製作2019新冠肺炎(Covid-19)交互式地圖
4、Prolog
Prolog是Programming in Logic(邏輯編程)的簡稱,Prolog語言最初出現於1972年。它為人工智能開發,特別是自然語言處理提供了一個令人興奮的工具。Prolog語言最適合創建聊天機器人,ELIZA是用Prolog創建的第一個聊天機器人。
第一個成功的聊天機器人,圖源medium
要理解Prolog,你必須熟悉指導它工作的一些基本術語:
- Facts(事實)定義了真實的聲明。
- Rules(規則)定義了有附加條件的聲明。
- Goals(目標)定義了根據知識庫確定的報表提交的位置。
- Queries(查詢)定義如何使你的聲明真實,以及如何對事實和規則進行最終分析。
Prolog提供了兩種實現人工智能的方法,這兩種方法已經在實踐中使用很長時間了,並且在數據科學家和研究人員中廣為人知:
- 符號方法(Symbolic Approach):包括基於規則的專家系統、定理證明、基於約束的方法。
- 統計方法(Statistical approach):包括神經網絡、數據挖掘、機器學習等。
5、Lisp
用來創建一個有著N維輸入和M個輸出單元的單層感知器的Lisp代碼
Lisp是List Processing的簡稱,它是僅次於Fortran的第二古老的編程語言。Lisp被稱為人工智能的創始之父之一,由約翰·麥卡錫(John McCarthy)於1958年創建。
Lisp是一種語言,它能讓你做到別人告訴你不可能做到的事情。——Kent Pitman
Lisp作為一種實用的面向數學符號處理的編程語言,它很快成為開發人員的人工智能編程語言的選擇。Lisp如下的一些特性,使其成為機器學習人工智能項目的最佳選擇之一:
- 快速原型創建
- 動態對象創建
- 垃圾回收
- 靈活性
隨著其他與之競爭的編程語言的重大改進,Lisp特有的一些特性也應用到其他語言中。採用了Lisp開發的一些著名項目包括Reddit和HackerNews。
就Lisp而言,你知道它是世界上最美麗的語言,至少在Haskell出現之前是這樣。——Larry Wall
6、Haskell
Haskell發佈於1990年,以著名數學家Haskell Brooks Curry的名字命名,它是一種純函數式和強靜態類型的編程語言,經常和延遲計算和較短的代碼搭配使用。
Haskell被認為是一種非常安全的編程語言,與其他編程語言相比,它在錯誤處理方面提供了更大的靈活性。在Haskell中很少發生錯誤。即使它們確實發生了,大多數非語法錯誤都是在編譯階段,而不是運行時捕獲的。Haskell提供的一些功能包括:
- 強大的抽象能力
- 內置的內存管理
- 代碼可重用性
- 易於理解
SQL、Lisp和Haskell是我見過的僅有的編程語言,在這些語言中,人們花在思考上的時間比寫代碼的時間要多。
- Philip Greenspun
Haskell的特性有助於提高開發人員的工作效率。Haskell與其他編程語言非常相似,只是由一個小眾的開發團隊使用。拋開這些挑戰不談,Haskell可以證明它與其他競爭語言一樣適合人工智能開發,並且越來越多地被開發社區採用。
7、Julia
Julia是一種高性能、通用的動態編程語言,適合創建幾乎任何應用程序,尤其非常適合數據分析和計算科學。能夠與Julia一起工作的各種工具包括:
- 流行的編輯器,如Vim和Emacs。
- 集成開發工具,如Juno和Visual Studio。
Julia源代碼的目錄結構
Julia提供的下列特性,使其在人工智能編程、機器學習、統計和數據建模中成為一個不可或缺的選項:
- 動態類型系統
- 內置的包管理器
- 能夠進行並行和分佈式計算
- 宏和元編程能力
- 支持多個調度
- 對C語言函數的直接支持
Julia是為消除其他編程語言的弱點而構建的,它可以與TensorFlow.jl、MLBase.jl、MXNet.jl等工具集成,用於開發機器學習應用程序,這些工具充分利用了Julia提供的可伸縮性。
Google Trend – Julia的用戶數隨時間變化圖:
圖源:Google trends
2019Julia開發大會的介紹視頻:https://www.youtube.com/user/JuliaLanguage
有了以上幾種人工智能編程語言可供選擇,人工智能工程師和科學家們可以選擇適合他們項目需要的語言。每一種人工智能編程語言都有各自的優缺點。
隨著這些語言的不斷改進,很快人工智能的開發就會變得比現在更加輕鬆和高效,更多人就可以加入到這股創新浪潮中來。好的社區支持使得新人們的生活更加美好,社區對擴展計劃的貢獻使每個人的編程工作生活更加輕鬆。
原文:https://towardsdatascience.com/top-programming-languages-for-ai-engineers-in-2020-33a9f16a80b0