既然我在三年前上过一门人工智能的课程,那我显然有足够的能力来问这个问题了……开玩笑,开玩笑 😉
但说真的,这些语言有什么特性使它们在人工智能研究中如此受欢迎? 即使人工智能研究“很老”了……但似乎在过去 5-10 年里进展是最快的……是因为这些语言在某种程度上是围绕人工智能的概念“设计”的,还是仅仅因为我们现在没有更好的东西可以用?
我问这个问题是因为我一直觉得它非常有趣,而且我只是有点好奇。 如果我完全错了,他们使用了不同的语言,我很想知道他们都使用什么。 我的意思是,我可以理解 Prolog,特别是对于 Sentient/Propositional Logic 和 Fuzzy logic 而言。 但我不明白“为什么”我们要使用 Lisp……甚至不明白人工智能研究人员还会使用什么来做机器学习等等。
任何关于该主题的文章/书籍都很有帮助 🙂
回答:
我对 Prolog 了解不多,但这里是关于为什么使用 Lisp 的解释:
-
Lisp 是一种 自同像 语言,这意味着代码以与语言中的数据结构相同的形式(S-表达式)表示,即“代码即数据”。 如果你要编写修改/操纵其他代码的代码,例如遗传算法或符号操作,这将有很大的优势。
-
Lisp 的宏系统使其非常适合定义特定于问题的 DSL。 大多数 Lisp 开发人员有效地“扩展了该语言”来做他们需要的事情。 同样,Lisp 是自同像的这一事实在这里有很大的帮助。
-
存在一些历史联系,因为 Lisp 在早期人工智能研究蓬勃发展的同时变得流行起来。 此线程中有一些有趣的事实。
-
Lisp 作为一种函数式编程语言运行得相当好。 这非常适合人工智能领域(在人工智能中,你通常只是试图让机器学会如何为给定的输入产生正确的输出)。
-
主观看法:Lisp 似乎对具有数学思维的人有吸引力,而这恰恰是现代人工智能所需要的……这可能是因为 Lisp 与非类型 lambda 演算密切相关
我现在正在做一些人工智能/机器学习工作,并且选择 Clojure(JVM 上一种现代 Lisp)很大程度上是因为上述原因。