【新智元導讀】人工智能(AI)已經成為一個熱門話題,也是一個大的研究領域,每個巨頭科技公司以及創業公司都在其中努力。這是一個非常廣泛的話題,從基本的計算器、自我導航技術到能夠徹底改變未來的具有自我意識的機器人。開發相當于或超過人類智能的系統是AI的關鍵。Rankred 網站發布了該網站評出的2017年7大最好的人工智能編程語言。
7. Haskell
Haskell 是1990年開發的強靜態類型,非限定性編程語言。由于Haskell開發人員不多,小公司很少嘗試Haskell。
Haskell 做得很好的是抽象(抽象數學,而不是Java OOP)。它允許具有表達性的、高效的庫表達AI算法。例如,HLearn使用常見的代數結構(模塊,單群等)來表達和提高簡單機器學習算法速度。
雖然你可以用任何語言編寫這些算法,但Haskell相比其他語言更具表現力,同時保持不錯的性能。例如,Haskell寫的faster cover trees 。
Haskell支持領域特定語言(embedded domain-specific languages),這是一個著名的編程語言研究領域,適用于包括人工智能在內的許多領域。具體來說,它對概率編程來說很好,并能幫助開發人員在編譯時發現錯誤。
該語言具有CUDA綁定,并被編譯為字節碼(bytecode)。由于函數編程和靜態,代碼可以輕松地在云上的不同CPU上執行。行業采用方面,Facebook使用Haskell打擊垃圾郵件。
6. Java
Java 是一種高級、面向對象的直譯語言,主要用于使網頁交互和創建在線程序,包括游戲。
在Java中,學習對話模型并不重要。學習服務器端的數據,然后通過Ajax調用學習者進行預測。 Java有很多好用的庫,我們總結其中3個:
ConventJS:實現深度學習的庫——在瀏覽器中訓練卷積神經網絡。它支持完全連接的層以及非線性神經網絡模塊,分類和回歸成本函數。
Synaptic:一個用于node.js.的神經網絡庫。 其通用算法是無架構的,可以用于開發和訓練幾乎所有類型的一階和二階神經網絡架構。
Mind:它使用矩陣實現來處理訓練數據。你可以完全自定義網絡拓撲和上傳/下載已學習的minds。
簡而言之,你不必重新造輪子,只需確定AI要做什么類型的“learning”。
5. Prolog
Prolog是一種與計算語言和人工智能相關的邏輯編程語言和語義推理引擎。它具有靈活而且強大的框架,被廣泛應用于定理證明,非數字編程,自然語言處理和AI。
Prolog 是一種具有形式邏輯的聲明語言。AI開發者重視其預設計的搜索機制,非確定性,回溯機制,遞歸性質,高級抽象和模式匹配。
Prolog非常適合涉及結構化對象及其關系的問題。例如,在Prolog中,更容易表達對象之間的空間關系,比如表達“綠色的三角形在藍色的后面”。說明一般規則也很簡單,例如表達“對象A比對象B更靠近人,而B比C更近,則A應該比C更近”。
Prolog的性質使得實現事實(facts)和規則(rules)變得簡單直接。實際上,Prolog中的一切都是事實或規則。它允許你查詢數據庫,即使你已具有上述這些事實和規則。
Prolog支持開發圖形用戶界面,管理和網絡應用程序。它非常適合語音控制系統等項目。
4. Java
在Java中編程AI的好處:很好地支持大型項目,更好的用戶交互,調試易用性,便于可視化以及Swing和Standard Widget Toolkit的并入。
其主要優點是通用性——如果你是初學者,互聯網上可提供上千種有用的教程(免費),使你的學習更輕松,更高效。
Java開發的一些著名應用程序:
WEKA 機器學習套件:專門用于機器學習和數據挖掘
JOONE:用于設計,訓練和測試神經網絡
ALICE(artificial linguistic internet computer entity的縮寫):自然語言處理chatbot
Robocode:一個用于學習Java編程原理的開源游戲
3. Lisp
Lisp是最早的(1958年開發的)編程語言之一,由John MaCarthy博士創造,John MaCarthy也是創造“人工智能”這個術語的人。雖然近年來Lisp沒有被很多人使用,但該語言既靈活又具有可擴展性。
Lisp最初是針對Lambda演算開發的,誕生以來發生了很多演變。該語言在計算機科學中引入了許多想法,如遞歸,動態類型,高級函數,自動內存管理,自主(self hosting)編譯器和樹結構(tree data structure)。
Lisp用于開發人工智能軟件,因為它支持使用符號計算的程序的實現。符號表達和計算是Lisp擅長的。
此外,Lisp由一個宏系統,可以生成高效代碼的開發良好的編譯器,以及一組集合類型,包括哈希表和動態大小列表組成。
Lisp開發的有數以千計的AI應用程序,包括:
美國運通的授權人助理,用于檢查交易(信用卡)
METAL,一種自然語言翻譯系統
Macsyma,第一個大型計算機代數系統
ACL2,AMD使用的定理證明程序
2. C++
C ++比其他語言更快——它在硬件層進行通信的能力允許你改進代碼執行時間。這對在意耗時的人工智能項目非常有用。它可以用于統計AI方法,如神經網絡中的。
由于執行時間和OOP原則更快,C ++本身就是AI程序的好選擇。事實上,大部分機器學習和深度學習庫都是用C / C ++編寫的,并提供相同語言的API和為其他編程語言提供封裝。
如果你想控制運行時間和性能,C ++顯然是一個很好的選擇。 模板(template)使用更安全,它們提供了更好的推廣API的方法。雖然模板是一種強大的技術,可以簡化很多事情,但需要更多的時間和經驗來決定何時使用它們。
該語言覆蓋了3D游戲的復雜性,優化資源管理,并通過網絡促進多人游戲。一個真實的例子是科幻游戲Doom 3,它使用C ++和虛擬引擎,一套游戲開發工具(用C ++編寫)。Microsoft Windows,Mac OS,Adobe Photoshop,Maya 3D軟件,CAD,Mozilla Firefox等都是使用C ++的著名應用程序。
1. Python
Python專注于DRY(don’t repeat yourself)和RAD(rapid application development)。Python開發于20世紀90年代初,由于其可擴展性,適應性和易于學習而成為增長最快的編程語言之一。
Python有數百個庫可以使任何類型的項目成為可能,無論是移動應用程序,Web應用程序,數據科學還是人工智能。例如,用于科學計算的“Numpy”,用于機器學習的“Pybrain”,用于高級計算的“Scipy”和用于人工智能的“AIMA”。
Python的整體語言設計,低級和高級編程的平衡,模塊化編程和測試框架使其不同于其他語言。Python的另一個優勢是快速原型設計。在Python中,幾乎所有的想法都可以通過30-40行代碼快速驗證。
如有問題請聯系我們,我們7*24小時竭誠為您服務