用于人工智能目的的最佳编程语言是什么?
请注意,使用建议的语言,我必须能够使用任何 AI 技术(或至少其中大部分)。
用于人工智能目的的最佳编程语言是什么?
请注意,使用建议的语言,我必须能够使用任何 AI 技术(或至少其中大部分)。
AI 研究中所有留着胡子的酷酷大师都使用 Lisp :)
有两大阵营:Common Lisp 和 Scheme。它们有不同的语法等。为两者编写了很多好东西。
Java 是一种非常流行的通用语言,但是 AI / 函数式编程中的许多有趣的东西,例如将闭包作为一阶对象传递,在 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 大型项目 Cyc 在您选择的 Common Lisp 或 C 中具有运行时。
在编程语言的 TIOBE 指数中(如工业中所见和使用的),Lisp 排在第 15 位,而 Haskell 排在第 43 位,F# 和 OCaml 排在第 50 位以下。市场上的存在自然与就业机会相关。
也就是说,一些年轻的“AI 有趣”语言很有可能会飞速发展。如果某个主要研究机构在 Scala 等领域发表了一些开创性的、定义领域的研究,那么您会看到 Scala 在研究界的流行度急剧上升,而在工业界则存在一些滞后。
我(显然)无法评论 F# 的其他品质,但欢迎您像我一样提出建议。
Python 似乎在一般科学界被大量使用。它有很多可用的库,而且很容易学习。
我会把斯卡拉扔进锅里。
我已经解决了 Scala 基础 AI 课程中的所有练习。它工作得非常好。
如果说“所有的人工智能”,你也指机器学习,我猜,Matlab、R 和 Python+Scipy 肯定应该被提及。
编程环境是否是学术性的可能很重要,但对于大多数非学术性的 AI 应用程序开发,我建议坚持使用 Java 或 C++ 等主流语言。需要能够轻松地与其他COTS或开源软件包进行交互,而这在更“异国情调”的语言中有时会很困难或不可能。对于学术工作来说,这可能是一个不太重要的问题。
此外,性能对于许多应用程序来说可能很重要,并且主流语言通常具有最优化的编译器,例如 C++ 或 Java。
确实,像 LISP、Scheme 等函数式编程语言具有专门的特性,可以更容易地实现特定的 AI 方法,但我不认为这对于整个 AI 相关的编程来说是正确的,例如定量机器学习方法通常不需要函数式语言。如果您需要访问功能结构和通用软件包,LISP 有一些工具可以帮助您解决这个问题,而最近开发的Clojure是一个运行在 JVM 上并且可以访问 Java 库的 LISP 变体。此外,Groovy是另一种基于 JVM 的语言,包括对闭包的支持。
最后,一些程序员喜欢范式灵活性和/或 AI 项目的快速原型设计。出于这个原因,Ruby 和 Python 都将一些与 AI 相关的用法视为也可用于脚本的多范式语言。
与编程中的大多数事情一样,在 AI 开发中使用哪种语言的最佳答案最终将取决于您项目的需求。
这真的取决于你在看什么样的问题。此外,你想进入人工智能的“深度”。如果您想从基础知识中学习并仅实现理论上的 AI 内容,请使用更高级别的语言——例如在函数式编程中(并在 AI 中得到证明),如 lisp 或 prolog。如果您知道您正在处理的问题集并希望高效,请使用 Java、C++ 之类的工具并使用工具包来完成这些工作。既然您提到机器学习,请查看 Java 中的 Weka Toolkit 以获得其中的一些内容。
使用 AI 技术选择编程语言,就像为任何其他项目选择语言一样:
我会推荐 Prolog 作为用于实现 AI 系统的非常好的编程语言。
没有“最好”的语言。每一个都有它的优点。当我学习 AI 时,我们主要使用 lisp 和 prolog,但我在使用 Java/C# 和 F# 的 AI 方面效率最高,F# 可以提供很多东西。
用 Java 编写的框架怎么样,支持“高级逻辑”和代理风格的通信。
http://highlevellogic.blogspot.com/2010/11/when-will-we-have-artificial.html
它还取决于数据集的大小。对于网络规模的数据集,您可能想要使用 Map-Reduce,这意味着 Hadoop。Hadoop 是用 Java 编写的——但您可以为 Map-Reduce 函数使用任何语言(Python 等)。