人工智能在多种不同的编程语言中实现,例如Python、C/C++、Java,那么能否请有人解释一下使用Lisp如何能够实现Peter Norvig在这里提到的第5点:
- [Lisp允许…] 一个宏系统,让开发者能够创建一个领域特定的抽象层次,用于构建下一级别。…如今,(5)是Lisp相较于其他语言唯一仍然出色的功能。
来源:https://www.quora.com/Is-it-true-that-Lisp-is-highly-used-programming-language-in-AI
我基本上对创建领域特定抽象层次的含义感到困惑。能否请有人提供一个具体的例子/应用,说明这在什么时候/如何有用,以及它总体上意味着什么?我尝试阅读了http://lambda-the-ultimate.org/node/4765,但并没有真正“理解大局”。然而,我感觉这里似乎有某种魔法存在,即Lisp允许你编写其他过程式/OOP/函数式语言所不允许的代码类型。然后我看到了这个帖子:https://www.quora.com/Which-programming-language-is-better-for-artificial-intelligence-C-or-C++,其中最佳回答指出:
对于通用人工智能,我不会选择C或C++,而是选择用Lisp编程。一个真正的AI会有很多自修改代码(你不会认为一个真正的AI会把程序员写的代码视为最终答案,对吗?)。
这让我更加好奇,进而让我思考:
AI拥有“自检、自修改代码”(来源:为什么Lisp用于AI?)到底意味着什么,以及为什么/如何这有用?这听起来非常酷(几乎像是AI对自己的操作有自我意识一样),而且听起来使用Lisp可以实现这些事情,而其他语言甚至不会梦想做到(如果这听起来有点天真地高兴,请原谅,我完全没有Lisp的经验,但很兴奋要开始)。我读了一点:自修改代码的用途是什么?,并立即对特定AI应用和自修改代码的未来前沿产生了兴趣。
无论如何,我确实可以看到编写自修改代码的能力与根据特定研究问题领域定制语言的能力之间的联系(我假设这是Peter Norvig在他的帖子中暗示的),但我确实不太确定这到底意味着什么,我希望能以清晰的方式理解上述两个方面(“领域特定抽象层次”和“自检、自修改代码”)的本质或核心内容。
回答: