为什么Lisp用于AI?


早岁那知世事艰
2025-03-15 03:30:16 (21天前)
  1. 我一直在学习


口齿不清
</跨度>
扩大我的视野,因为我听说它用于AI编程。在做了一些探索之后,我还没有找到人工智能的例子或语言中的任何东西,使其更倾向于它。



口齿不清
</跨度>
在过去使用过,因为它可用,或者有些东西我只是缺少?

11 条回复
  1. 0# 咿呀哟 | 2019-08-31 10-32



    我认为仅从AI的角度思考这个问题是错误的。如果你问为什么它被用于人工智能,而不是为什么它现在不经常被使用,那么人工智能冬季和普通口齿不清的商业影响等事情会分散注意力……



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



    我今天使用lisp作为我的一些研究代码(数学,信号处理),因为它比大多数语言更灵活,更强大,同时仍然比大多数语言生成更高效的代码。我通常可以在c ++速度+/- 2的范围内获得性能,但是我可以更快地实现事物,并且处理复杂性,如果我使用c ++,java,c#,这将花费我更多的时间。



    尽管如此,这是偏离主题。我认为AI代码主要是用普通的lisp编写的,因为它是一种研究代码的强大方法。它仍然是;但随着“AI”算法变得更好理解和探索,它们中的一部分更易于教学和使用,因此它们在本科课程中出现了年度语言。从那里开始,它成为人们已经知道的问题,可用的库,以及适用于大型团体的库。


  2. 1# 不浪漫罪名 | 2019-08-31 10-32



    Lisp WAS在AI中使用直到20世纪80年代末。然而,在80年代,Common Lisp作为“AI语言”被商业世界超卖;这种强烈反对迫使大多数AI程序员使用C ++几年。目前,原型通常用较年轻的动态语言(Perl,Python,Ruby等)编写,成功研究的实现通常是C或C ++(有时是Java)。



    如果你对70年代很好奇……好吧,我不在那里。但我认为Lisp在人工智能研究方面取得了成功,原因有三个(按重要性排序):




    1. Lisp是一款出色的原型制作工具。它是

      最好的

      很长一段时间Lisp仍然很擅长处理你不知道如何解决的问题。该描述完美地表征了AI。


    2. Lisp很好地支持符号编程。旧的AI也是象征性的。在很长一段时间内,它在这方面也是独一无二的。


    3. Lisp非常强大。代码/数据区别较弱,因此它

      感觉

      比其他语言更具可扩展性,因为您的函数和宏看起来像内置的东西。

    4. </醇>


      我没有

      Peter Norvig的旧AI书

      ,但它应该是学习在Lisp中编程AI算法的好方法。



      免责声明:我是计算语言学的研究生。我知道自然语言处理的子领域比其他领域好很多。也许Lisp在其他子域中使用得更多。


  3. 2# 十二* | 2019-08-31 10-32



    Lisp用于AI,因为它支持非常好地计算符号的软件的实现。符号,符号表达和计算与这些是Lisp的核心。



    用符号计算的典型AI区域是:计算机代数,定理证明,计划系统,诊断,重写系统,知识表示和推理,逻辑语言,机器翻译,专家系统等。



    因此,使用Lisp编写这些域中的许多着名AI应用程序并不奇怪:




    • Macsyma作为第一个大型计算机代数系统。


    • ACL2作为广泛使用的定理证明器,例如由AMD使用。


    • DART是美国军方在第一次海湾战争期间使用的物流规划者。据说这个Lisp应用程序已经回报了当时美国在AI研究方面的所有投资。


    • SPIKE,哈勃太空望远镜的规划和调度应用程序。也用于其他几个大型望远镜。


    • CYC,最大的软件系统之一。人类常识知识领域的表征与推理。


    • METAL,首批商业上使用的自然语言翻译系统之一。


    • 美国运通’授权人助理,负责检查信用卡交易。



    这些领域有成千上万的应用程序是用Lisp编写的。对于那些人来说很常见的是他们需要在符号处理领域具有特殊能力。一个在Lisp之上实现在这些域中具有特殊解释器/编译器的特殊语言。 Lisp允许人们为符号数据和程序创建表示,并且可以实现各种机制来操纵这些表达式(数学公式,逻辑公式,计划……)。



    (请注意,许多其他通用编程语言也在AI中使用。我试图回答为什么特别是在AI中使用Lisp。)


  4. 3# 小它.Little it | 2019-08-31 10-32



    一个更愤世嫉俗的答案可能是“因为它在20世纪80年代失去了日本和美国之间的政治AI战争”。有一种乐趣

    博客文章推测第五代计算机系统消亡对Prolog的影响



  5. 4# 喜欢一个人丶 | 2019-08-31 10-32



    我记得听说过,作为一种函数式语言,Lisp是实现递归算法的一个很好的选择。在考虑决策制定过程(遍历)和最终结果(叶节点)时,能够追踪树并继续前进是至关重要的。



    这是在大学的AI课程中告诉我的,我们研究过Lisp。


  6. 5# 老夫的少女心吖 | 2019-08-31 10-32



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



    当时,能够将它们变成所有类型的复合对象,并将新事物作为信息传递和民族主义,使其成为首选语言;不是专门针对AI,而是针对大而复杂的任务。特别是当他们在尝试概念时。


  7. 6# 晴天?霹雳 | 2019-08-31 10-32



    一个原因是它允许您使用特定于您的域的构造扩展语言,使其有效地成为特定于域的语言。这项技术非常强大,因为它允许你推理

    问题

    你在解决问题,而不是改变比特。


  8. 7# 晴天 | 2019-08-31 10-32



    一个可能的答案是AI是一个非常难的问题的集合,而Lisp是解决难题的好语言,而不仅仅是人工智能。



    至于为什么:宏,泛型函数和丰富的内省允许简洁的代码和简单的域抽象引入 它是一种你可以使功能更强大的语言。对于许多不必要的问题,它带来了自己的成本,但对于其他问题,需要力量才能取得任何进展。


  9. 8# Jacob | 2019-08-31 10-32



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



    因此,可以轻松编写自检,自修改代码。


  10. 9# 文艺青年 | 2019-08-31 10-32



    我认为你是对的:Lisp是一个非常方便的工具。这是因为它在程序和数据之间没有区别。这使得黑客可以非常轻松地操作函数,就像数据一样。



    但是对于人类而言,lisp是非常难以阅读的,它的大括号和数据与程序之间没有区别。今天,我不会将lisp用于任何生产AI代码(或者甚至是原型),但更喜欢python用于脚本编写。



    另一件需要考虑的事情是该语言中/与该语言相关的现有库/工具。我无法将lisp库与python库进行比较,但我认为库和开源现在比以前更重要了。



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

    http://amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html


登录 后才能参与评论