为什么Lisp用于人工智能?

为什么Lisp用于人工智能?,lisp,artificial-intelligence,Lisp,Artificial Intelligence,我一直在学习Lisp来扩展我的视野,因为我听说它被用于人工智能编程。在做了一些探索之后,我还没有找到人工智能的例子或任何能使它更倾向于人工智能的语言 过去使用Lisp是因为它是可用的,还是我只是缺少了什么?我想一个重要原因是列表作为基本数据结构的灵活性 当时,由于能够将它们转换为各种复合对象,以及消息传递和polimorphism等新事物,使其成为首选语言;不是专门针对人工智能,而是针对大型、复杂的任务。尤其是当他们尝试概念时。我的猜测一直是,作为一种函数式语言,它不区分代码和数据。所有内容,包

我一直在学习Lisp来扩展我的视野,因为我听说它被用于人工智能编程。在做了一些探索之后,我还没有找到人工智能的例子或任何能使它更倾向于人工智能的语言


过去使用Lisp是因为它是可用的,还是我只是缺少了什么?

我想一个重要原因是列表作为基本数据结构的灵活性


当时,由于能够将它们转换为各种复合对象,以及消息传递和polimorphism等新事物,使其成为首选语言;不是专门针对人工智能,而是针对大型、复杂的任务。尤其是当他们尝试概念时。

我的猜测一直是,作为一种函数式语言,它不区分代码和数据。所有内容,包括函数定义和函数调用,都可以作为列表处理,并像任何其他数据块一样进行修改


因此,自我检查、自我修改的代码可以很容易地编写。

我认为你是对的:Lisp是一个方便的工具,可以用来破解问题。这是因为它没有对程序和数据进行太多区分。这使得黑客可以很容易地操纵功能,就像操纵数据一样

但是lisp很难让人阅读,因为它有大括号,而且数据和程序之间没有区别。今天,我不会将lisp用于任何生产AI代码(甚至可能是原型设计),但更喜欢使用python来编写脚本

另一个要考虑的是现有的与语言相关的库/工具。我无法将lisp库与python库进行比较,但我想现在的库和开源比以前重要得多


这个答案的灵感来自于lisp和python之间的以下比较:

lisp一直被用于人工智能,直到20世纪80年代末。然而,在80年代,CommonLisp作为“人工智能语言”被商业界夸大了;这种反弹迫使大多数AI程序员在C++中工作了几年。现在,原型通常用更年轻的动态语言(Perl、Python、Ruby等)编写,成功的研究的实现通常是C或C++(有时是java)。 如果你对70年代很好奇的话……嗯,我不在那里。但我认为Lisp在人工智能研究中的成功有三个原因(按重要性排序):

  • Lisp是一个优秀的原型工具。这是很长一段时间以来最好的。Lisp仍然擅长处理您还不知道如何解决的问题。这种描述完美地刻画了人工智能的特征
  • Lisp很好地支持符号编程。旧AI也是象征性的。长期以来,它在这方面也是独一无二的
  • Lisp非常强大。代码/数据的区别比较弱,因此感觉比其他语言更具可扩展性,因为函数和宏看起来像内置的东西
  • 我没有,但这应该是学习用Lisp编写AI算法的好方法


    免责声明:我是计算语言学的研究生。我对自然语言处理的子领域比其他领域了解得多。也许Lisp在其他子领域的应用更多。

    一个可能的答案是AI是一组非常困难的问题,Lisp是解决困难问题的好语言,而不仅仅是AI


    至于原因:宏、泛型函数和丰富的内省允许简洁的代码和简单的领域抽象介绍——这是一种您可以使其更强大的语言。对于许多不必要的问题,它会带来自身的成本,但对于其他问题,需要动力才能取得进展。

    一个原因是,它允许您使用特定于您的领域的结构来扩展语言,使之成为一种有效的特定于领域的语言。这种技术非常强大,因为它允许您对正在解决的问题进行推理,而不是对位进行洗牌。

    我记得听说,作为一种函数式语言,Lisp是实现递归算法的一个非常好的选择。在考虑决策过程(遍历)和最终结果(叶节点)时,能够追踪到一棵树并找到返回的路径是至关重要的


    这是在我们学习Lisp的大学的人工智能课程中告诉我的。

    我认为仅仅从人工智能的角度考虑这一点是错误的。如果你问为什么它被用于人工智能,而不是为什么它现在不常被使用,那么像AI winter和common lisp上的商业效果之类的东西会分散你的注意力

    无论如何,我认为这是因为大多数人工智能代码本质上是研究代码。Lisp是探索性编程、实现困难算法、自我修改和经常修改代码的优秀语言。换句话说,对于研究代码

    我今天在一些研究代码(数学、信号处理)中使用lisp,因为它比大多数语言更灵活、更强大,同时生成的代码也比大多数语言更高效。我通常可以在+/-2的C++速度下得到性能,但是我可以更快地实现,处理复杂度,如果我使用C++、爪哇、C、< /P>,我将比我花费的时间多很多。
    不过这是离题了。我认为人工智能代码最初是用CommonLisp编写的,因为它是研究代码的一种强大方法。现在仍然是,;但随着“人工智能”算法得到更好的理解和探索,其中的一部分更容易教授和使用,因此它们在本科生课程中出现在年度语言中。从那时起,它就变成了一个人们已经知道的问题,什么样的库可用,什么样的库适合于大型群体。

    Lisp用于人工智能,因为它非常支持使用符号进行计算的软件的实现。符号、符号表达式及其计算是Lisp的核心

    使用符号进行计算的典型人工智能领域是:计算机代数、理论