如何为人工智能编程选择语言? [关闭]
Posted
技术标签:
【中文标题】如何为人工智能编程选择语言? [关闭]【英文标题】:How to pick a language for Artificial Intelligence programming? [closed] 【发布时间】:2010-12-25 01:14:43 【问题描述】:用于人工智能目的的最佳编程语言是什么?
请注意,使用建议的语言,我必须能够使用任何 AI 技术(或至少大部分)。
【问题讨论】:
你如何衡量最好?例如最容易学?嵌入式系统的最小占用空间?可用的最低成本实施?最广为人知的原因是易于招聘? @Trevor Tippins - 最好的 = 易于学习,没有限制 不是我。但问题是什么?该主题足够专业,不太可能发生激烈的战争。你要禁止任何人要求推荐任何东西吗? 如果你在询问 besr AI 语言时认为不太可能发生激烈的争吵,那么你对 AI 社区的了解并不多。 更新了我的答案,以防您还在这里并愿意关注。正如尼尔所暗示的那样,有可能即将进行一场热烈的讨论。我不认为这是一件坏事。 【参考方案1】:这真的取决于你在看什么样的问题。此外,你想进入人工智能的“深度”。如果您想从基础知识中学习并仅实现理论上的 AI 内容,请使用更高级别的语言——例如函数式编程(并在 AI 中得到证明),如 lisp 或 prolog。如果您知道自己要处理的问题集并希望高效,请使用 Java、C++ 之类的工具并使用工具包来完成这些工作。 既然您提到机器学习,请查看 Java 中的 Weka Toolkit 以了解其中的一些内容。
【讨论】:
“如果你想从基础知识中学习并只是实现理论上的 AI 东西”- 是的,现在就这样 我说选择你更喜欢的或者 lisp,python。我确信 Norvig 的书《人工智能:现代方法》有很多关于 Lisp 的内容,并且这些语言中有代码。 code.google.com/p/aima-python 如果你选择 python 可能有用 谢谢,我去看看这些东西【参考方案2】:没有“最好”的语言。每一个都有它的优点。在我学习 AI 时,我们主要使用 lisp 和 prolog,但我在使用 Java/C# 和 F# 的 AI 方面效率最高。
【讨论】:
【参考方案3】:AI 研究中所有留着胡子的酷酷大师都使用 Lisp :)
有两大阵营:Common Lisp 和 Scheme。它们有不同的语法等。为两者编写了很多好东西。
Java 是一种非常流行的通用语言,但 AI/函数式编程中的许多有趣的东西,例如将闭包作为一阶对象传递,在 Java 中却很笨拙。
我个人的偏好是远离 C# 和 F# 等 Windows 语言。酷人在 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# 的其他品质,但欢迎您像我一样提出建议。
【讨论】:
我可以用 Lisp 做其他事情吗? Lisp 无疑是一种非常强大的语言,像 Paul Graham 这样的人声称 Lisp 为您提供了一些其他语言无法提供的机制。有通讯库、GUI 库、数学库……随便你。 但说实话,Lisp 并不是很主流的语言。它已经 30 岁了,在学术界仍然非常有用,但并没有吸引大批欢呼的粉丝。它在 TIOBE 指数中排名第 15:tiobe.com/index.php/content/paperinfo/tpci/index.html> 直到今年,麻省理工学院在 Scheme 中开设了他们的“CS 入门”课程。我完成了课本。沉重的概念,让你大吃一惊。但是这是好的方面。如果你能幸存下来,一点人工智能编程就不会吓到你了。 +1 供酷人在 linux 上开发【参考方案4】:使用 AI 技术选择编程语言,就像为任何其他项目选择语言一样:
您要解决的问题是什么 解决? 是否有良好的支持 语言? 客户有什么要求?我会推荐 Prolog 作为用于实现 AI 系统的非常好的编程语言。
【讨论】:
戴维,我希望找到对任何人工智能问题都有好处的语言:) 这可能吗? ://【参考方案5】:我会把 Scala 扔进锅里。
可用于函数式编程 它可以像 Java 一样快 它是一种现代语言,有很多不错的方面 Java 似乎在 AI 中也有点流行,因此您可以使用 Scala 中的所有 Java 库我已经完成了 Scala 基础 AI 课程中的所有练习。效果非常好。
【讨论】:
Scala 对于聪明人来说是一种非常强大的语言。我喜欢它,并认为它可能有一个光明的未来。 +1。 Scala 非常适合企业规模、性能【参考方案6】:Python 似乎在一般科学界被大量使用。它有很多可用的库,而且很容易学习。
【讨论】:
【参考方案7】:还有一个名为weka 的java 框架,由怀卡托大学开发。我不知道它是否回答了您的问题,但它可能会有所帮助。
引用wikipedia:«Weka 支持多种标准数据挖掘任务,更具体地说,数据预处理、聚类、分类、回归、可视化»等等。
【讨论】:
【参考方案8】:如果说“所有的人工智能”也指机器学习,我猜,Matlab、R 和 Python+Scipy 肯定应该提到。
【讨论】:
【参考方案9】:编程环境是否学术性可能很重要,但对于大多数非学术性 AI 应用程序开发,我建议坚持使用 Java 或 C++ 等主流语言。需要能够与其他COTS 或开源软件包轻松交互,而这在更“异国情调”的语言中有时可能很困难或不可能。对于学术工作来说,这可能是一个不太重要的问题。
此外,性能对于许多应用程序来说可能很重要,主流语言通常具有最优化的编译器,例如 C++ 或 Java。
LISP、Scheme 等函数式编程语言确实具有可以更容易实现特定 AI 方法的特殊功能,但我不认为这对于整个 AI 相关编程来说是正确的,例如,定量机器学习方法通常不需要函数式语言。如果您需要访问功能结构和通用软件包,有一些tools for LISP 可以帮助您解决这个问题,最近开发的Clojure 是一个运行在JVM 上并且可以访问Java 库的LISP 变体。此外,Groovy 是另一种基于 JVM 的语言,包括对闭包的支持。
最后,一些程序员喜欢范式灵活性和/或 AI 项目的快速原型设计。出于这个原因,Ruby 和 Python 都将一些与 AI 相关的用法视为也可用于脚本的多范式语言。
与编程中的大多数事情一样,在 AI 开发中使用哪种语言的最佳答案最终取决于您的项目需求。
【讨论】:
【参考方案10】:用 Java 编写的框架怎么样,支持“高级逻辑”和代理风格的通信。
http://highlevellogic.blogspot.com/2010/11/when-will-we-have-artificial.html
【讨论】:
【参考方案11】:这还取决于数据集的大小。对于网络规模的数据集,您可能想要使用 Map-Reduce,这意味着 Hadoop。 Hadoop 是用 Java 编写的——但您可以为 Map-Reduce 函数使用任何语言(Python 等)。
【讨论】:
【参考方案12】:我个人使用Clojure 进行 AI 编程,发现它是一门很棒的全能 AI 语言。
原因:
这是一个 Lisp,Lisp 在 AI 领域历来非常强大 这是一种具有强大宏的homoiconic 语言,非常适合代码生成和基因编程。这对于 AI 编程来说是一个非常有用的属性(并且可能解释了 Lisp 在这个领域的一些成功) 它在 JVM 上运行,可以轻松访问所有 Java 库以进行数字运算(Weka、Colt 等)。 它有利于快速交互式开发 - 它非常动态,您可以在运行的 Clojure REPL 中以交互方式完成几乎所有事情。无需重新编译等。【讨论】:
以上是关于如何为人工智能编程选择语言? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章