AI的最新编程语言?[关闭]


15

几十年来,用于AI的编程语言选择是PrologLISP,还有其他一些不太知名的语言。它们大多数是在70年代之前设计的。

在其他许多领域特定的语言上发生的变化很多,但是在AI领域却没有Web特定语言或脚本等出现那么多。

是否有最新的编程语言旨在改变AI中的游戏并从以前的语言中学习不足?


1
如果您对该AI分支感兴趣,则Octave是机器学习的一种好语言。
setzamora 2012年

还考虑元编程方法(即生成程序)。查看J.Pitrat的博客。然后,你可能会产生不有很多inportance的语言,它甚至可以是C.
巴西莱Starynkevitch

Answers:


23

我在斯坦福大学(Stanford)教授的在线参与的AI课程建议将Python用于作业。我相信佐治亚理工学院仍然使用LISP。

这里的谬论是“新”就是“好”。人工智能研究是最古老的计算机研究学科之一。当人们意识到它的技术可以在其他地方使用时,它会不断地减少子领域。语言处理,机器学习和数据挖掘都是使用大量语言的“实际”应用程序的示例。

因此,主要领域的变化要少得多,而要精炼成大量相关学科。这就像说“科学计算”,并期望它只是意味着要求解线性方程组一样。

您提到的语言在过去20或30年中已经发展了很多。Lisp生成Common Lisp和Clojure。Prolog生成了Visual Prolog(它具有对象...)和Mercury(采用Haskell和Prolog,将它们锁定在一个房间中...站得很远,可以开始运行)。

鉴于AI研究更具理论性,因此将重点放在理论(数学)而不是实用性(语言)上是有道理的。

话虽如此,我敢打赌,最大的人工智能技术创新者是谷歌。他们倾向于偏爱Python(以及Go和Dart,但这不重要)。因此,我想说Python是“最近的选择语言”,但您也可以使用Haskell或OCaml或F#或C#甚至Java。


+1提及水星。
Guy Coder 2012年

8

您可能会在德国AI期刊KI-KünstlicheIntelligenz的最新特刊“ Sprachen der KI”(“ AI语言”)中找到问题的答案,该书由Springer出版,第26卷,第1期,2012年2月。我是其中讨论文件一部分的共同作者:“您使用哪种语言创建AI程序以及为什么?”这是该文件的预印本:http : //ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf

总而言之,一些AI研究人员仍然对经典的AI语言Lisp和Prolog发誓。其他人则使用主流语言,例如C ++,Java或Python。还有一些人喜欢探索新的深奥的编程语言。

我相信AI没有什么特别的东西需要特殊的编程语言。研究人员通常想要的是允许快速原型制作的编程语言。这是旧的AI语言(Lisp,Prolog)和更新的“脚本”语言(Perl,Python,Ruby或最新的JVM语言,例如Clojure)非常适合的。

一些研究人员希望超越原型设计,或者他们有特殊要求(例如大数据),并且一旦探索性编程阶段结束并且拥有了一个更好地解决问题。有人会说,在这一点上(当问题得到充分理解时),您将不再使用AI。

回到您的最后一个问题,我所知道的所有新AI语言的重大发展都受到基于约束的编程的启发。一些人进入了Prolog的实现,例如SICStus和SWI,另一些则产生了类似Prolog的语言,例如Mercury和Mozart / Oz。当然,可能会有一些我不知道的重大新进展。


2

尽管大多数答案都集中在“语言”一词上,因为您在问题中使用了它,但我不认为您在思考AI时应该考虑一种特定的语言。

我已经使用这种技术多年,目前正在使用Proof Assistants,并将一些代码从OCaml转换为F#。实现AI的不是语言,而是以该语言实现的特定算法。对于PROLOG来说,这是一个基于统一推理引擎。现在,如果您从统一开始,看看多年来如何进行定制和改进,我想您会发现您所追求的进步。不要专注于语言,而是专注于算法。

例如,功能语言中的类型推断使用基于统一的Hindley-Milner

证明助手的另一个特定示例在此处,请注意prolog.ml。用于序言的推理引擎在OCaml中实现,并转换为F#。因此,虽然OCaml和F#通常不是AI语言,但它们完全能够实现AI算法。


我必须说这正是我对这个问题的看法:算法比您用来编写它们的语言更重要,这就是为什么我阅读的每本AI书都坚持为算法提供伪代码的原因。
JJP

1

我会说这取决于您对AI的理解。总体而言,机器学习已经看到了工具的快速发展,因此在Python,C#,Ruby,OCaml和Java,仅举几例。

如果您要对数据进行大规模处理以构建诸如推荐引擎,协作过滤或其他类型的无监督或有监督的学习问题之类的东西,则可能需要看一下Mahout。它本身并不是一种真正的“编程语言”,但它是解决此类问题的一套工具。您可以用Java或其他JVM语言(例如groovy(一种动态,合理表达的语言)或clojure(类似于lisp))编写模型代码。

我不确定您为什么会认为Lisp已过时;这是其他语言(封盖等)中大多数“新”语言功能的起源。

当然,机器学习技术通常已经朝着概率模型发展,而不是大多数早期AI努力开始的二进制逻辑,决策树风格方法,因此有可能争论说机器学习是从大帐篷中走出来的一个分支或转移AI。


0

我几年前曾经使用过的AI的首选语言是Prolog, IDE附带的 Visual Prolog版本,例如Delphi。

Prolog(及其GUI版本Visual Prolog)是与人工智能和计算语言学相关的通用逻辑编程语言。

但是,最近的趋势表明,任何OOP语言(例如C#,Java,Python,Haskell等)都可以用于AI应用程序。


3
从什么时候开始Haskell OOP?
安德里亚(Andrea)

您可以在Haskell中模拟OOP,对吗?
Yusubov

1
您可以用任何语言进行仿真,但这并不意味着您通常会认为任何一种语言都是OO
jk。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.