Lisp 是一种庞大而复杂的语言,需要庞大而复杂的运行时来支持它。因此,Lisp 最适合解决大型且复杂的问题。
Now, a complex问题与a不一样复杂的一。 Acomplex问题是一个有很多小细节的问题,但这并不难。编写航空公司预订系统是一项复杂的工作,但只要有足够的资金和程序员,这并不难。明白区别了吗?
复杂问题是一个错综复杂的问题,传统的分而治之的方法不起作用。控制机器人,或处理非表格数据(例如语言),或高度动态的情况。
Lisp 确实非常适合解决方案必须可扩展的问题;典型的例子是 emacs 文本编辑器。它是完全可编程的,因此本身就是一个编程环境。
在他的名著中PAIP http://norvig.com/paip.htmlNorvig 说 Lisp 是探索性编程的理想选择。也就是说,为尚未完全理解的问题编写解决方案(与在线预订系统相反)。换句话说:复杂的问题。
此外,学习 Lisp 会让你想起一些被遗忘的基本知识:冯·诺依曼和图灵之间的区别。众所周知,图灵的计算模型是一个有趣的理论模型,但作为设计计算机的模型毫无用处。另一方面,冯·诺依曼设计了一个计算机和计算如何执行的模型:冯·诺依曼模型。
冯·诺依曼模型的核心是您只有一个内存,并在那里存储代码和数据。仔细注意,Java 程序(或 C#,或任何您喜欢的程序)是图灵模型的体现。您一劳永逸地将您的计划具体化。然后你希望你可以处理扔在上面的所有数据。
Lisp 保留了冯·诺依曼模型;代码和数据之间没有明确的、预先确定的边界。使用 Lisp 编程可以让您领略冯·诺依曼模型的力量。使用 Lisp 编程让您以新的眼光看待旧概念。
最后,通过交互,您将学习在开发程序时与程序进行交互(而不是编译和运行)。这也改变了您编程的方式以及您看待编程的方式。
通过这个介绍,我终于可以回答您的问题:您会找到它超越“传统”语言的地方吗?
如果您是高级程序员,则需要高级工具。没有比 Lisp 更先进的工具了。
或者,换句话说:如果你的问题很困难,那么答案是肯定的。否则没有。