【问题标题】:How to pick a language for Artificial Intelligence programming? [closed]如何为人工智能编程选择语言? [关闭]
【发布时间】:2010-12-25 01:14:43
【问题描述】:

用于人工智能目的的最佳编程语言是什么?

请注意,使用建议的语言,我必须能够使用任何 AI 技术(或至少大部分)。

【问题讨论】:

  • 你如何衡量最好?例如最容易学?嵌入式系统的最小占用空间?可用的最低成本实施?最广为人知的原因是易于招聘?
  • @Trevor Tippins - 最好的 = 易于学习,没有限制
  • 不是我。但问题是什么?该主题足够专业,不太可能发生激烈的战争。你要禁止任何人要求推荐任何东西吗?
  • 如果你在询问 besr AI 语言时认为不太可能发生激烈的争吵,那么你对 AI 社区的了解并不多。
  • 更新了我的答案,以防您还在这里并愿意关注。正如尼尔所暗示的那样,有可能即将进行一场热烈的讨论。我不认为这是一件坏事。

标签: artificial-intelligence machine-learning neural-network


【解决方案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 语言,具有良好的性能。我试过一次,它让我的大脑受伤;但你可能比我聪明。


    更新:回答史蒂夫的问题。

    1. 我不会是购买 Unix 变体的人。这就是公司和研究机构所做的。这个想法是,你想为一家公司进行人工智能研究,该公司将数百万美元投入到他们的硬件中,并且不会拒绝为操作系统支付几千美元。这种服装很可能会在自助餐厅吃到好食物和/或因为做有趣的工作而获得高薪。但我肯定不会敲Linux。

    2. F# 可能很酷,但我看到让它在 Linux 或任何其他 Unix 上运行的一大堆问题(这就是我所说的“windowsy”),我不想在 Windows 下工作(这就是我所说的“个人偏好”)。

    3. 详细说明“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 上运行,可以轻松访问所有 J​​ava 库以进行数字运算(Weka、Colt 等)。
                • 它有利于快速交互式开发 - 它非常动态,您可以在运行的 Clojure REPL 中以交互方式完成几乎所有事情。无需重新编译等。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-11-04
                  • 2011-12-10
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-05-22
                  • 1970-01-01
                  • 2014-12-22
                  相关资源
                  最近更新 更多