用于人工智能目的的最佳编程语言是什么?
请注意,使用建议的语言我必须能够使用任何AI技术(或至少大多数).
AI研究遗留下来的所有酷胡子大师都使用Lisp :)
有两大阵营:Common Lisp和Scheme.他们有不同的语法等等.为两者写了很多好东西.
Java是一种非常流行的通用语言,但是AI/Functional Programming中很多有趣的东西,例如将闭包作为一阶对象传递,在Java中很笨拙.
我个人的偏好是远离C#和F#等Windowsy语言.酷人在Unix下发展.或Linux,如果他们很酷但很穷.
在Haskell中有一些很酷但很奇怪的人编程.一种相当现代的FP语言,具有良好的性能.我尝试了一次,它让我的大脑受伤; 但你可能比我聪明.
更新:史蒂夫的问题的答案.
我不会是支付Unix变种的人; 这就是企业和研究机构所做的事情.这个想法是,你想要为一个装有数百万美元的装备进行人工智能研究,并且不愿为操作系统支付几千美元.这种服装可能会在自助餐厅里有很好的食物和/或为做有趣的工作而付出的代价.但我当然不会敲Linux.
F#可能很酷,但我看到一大堆问题让它在Linux或任何其他Unix上运行(这就是我所说的"windowsy"),而且我不想在Windows下运行(这就是我的意思)个人喜好").
详细说明"windowsy"主题:你提到F#是一个OCaml变种.从我自己公认的简短研究来看,似乎F#缺少仿函数,OCaml风格的对象,多态变体和camlp4预处理器.没有仿函数的函数式语言?真?如果一个人不喜欢微软,就像我承认的那样,人们可以得出结论,他们已经取得了成功,并将一种非常好的功能语言OCaml加入了他们可以在他们的CLR中运行的东西,这样他们就可以宣称"拥有"一种功能语言.最后,因为我没有怀疑,我知道微软总是优先考虑市场优势而不是产品质量,我不打算接触F#.但这是我个人的偏好,并且清楚地确定了这一点,而我们真的更关心为mary.ja45提出一个好的建议.
我有更好的理由推荐Lisp而不是F#甚至是OCaml和Haskell.这些主要基于Lisp相对于AI领域中任何其他语言的历史优势.
大部分AI文献都是基于用Lisp或Prolog编写的程序.如果不出意外,对Lisp的良好了解将允许学生理解示例程序.我个人最喜欢的AI megaproject,Cyc,可以选择Common Lisp或C.
在TIOBE编程语言索引中(在工业中可以看到和使用),Lisp排在第15位,而Haskell排在第43位,F#排在第50位以下,OCaml排在第50位.市场上的存在自然与就业机会相关.
也就是说,很多年轻的"AI有趣"语言很可能会飙升.如果一些主要的研究机构在Scala中发表了一些开创性的,定义领域的研究,你会发现Scala的受欢迎程度在研究界迅速发展,并且在行业中有一些滞后.
我(显然)不能对F#的其他特质发表评论,但我欢迎你像我一样提出建议.
Python似乎在一般科学界使用了很多.它有很多可用的库,而且很容易学习.
我会把Scala扔进锅里.
它可用于函数式编程
它可以像Java一样快
它是一种现代语言,有许多不错的方面
Java似乎在AI中也很受欢迎,因此您可以使用Scala中的所有Java库
我已经解决了Scala中基本AI课程的所有练习.它运作得很好.
如果通过"全部AI"你也意味着机器学习,我猜,Matlab,R和Python + Scipy应该被提及.
我个人使用Clojure进行人工智能编程,并发现它是一款优秀的全能型AI语言.
原因:
这是一个Lisp,Lisps历来在AI领域非常强大
它是一种具有强大宏的同源语言,非常适合代码生成和遗传编程.这对于AI编程来说是一个非常有用的属性(并且可能解释了Lisp在这个领域中的一些成功)
它在JVM上运行,可以轻松访问所有Java库以进行数字运算(Weka,Colt等).
它对于快速交互式开发很有用 - 它非常动态,你可以在运行的Clojure REPL中以交互方式完成所有事情.无需重新编译等
重要的是编程环境是否是学术性的,但对于大多数非学术性AI应用程序开发,我建议坚持使用Java或C++等主流语言.人们需要能够与其他COTS或开源软件包轻松连接,而这在有些"异国情调"的语言中有时很难或不可能.对于学术工作,这可能是一个不太重要的问题.
此外,性能对于许多应用程序都很重要,主流语言通常具有最优化的编译器,例如C++或Java.
确实,像LISP,Scheme等函数式编程语言具有可以使实现特定AI方法更容易的专门特性,但我不认为这对于整个AI相关的编程是正确的,例如,定量机器学习方法通常不需要函数式语言.如果您需要访问功能构造和通用软件包,LISP有一些工具可以帮助解决这个问题,最近开发的Clojure是一个LISP变体,可以在JVM上运行并可以访问Java库.此外,Groovy是另一种基于JVM的语言,包括对闭包的支持.
最后,一些程序员的范例,灵活性和/或快速原型的AI项目.Ruby和Python都看到了这个原因多范式语言,可也可用于脚本一些AI-相关的使用.
与编程中的大多数事情一样,在AI开发中使用哪种语言的最佳答案最终将取决于项目的需求.