我为什么要学习Lisp?

我真的觉得我应该学习Lisp,并且有足够的资源帮助我做到这一点。

我不会因为复杂的语法而拖延,但是在“传统商业编程”中,我会发现使用它代替过程语言是有意义的。

那里有一个用Lisp编写的商业杀手级应用程序吗?


Lisp的主要用途之一是人工智能。 我在大学的一个朋友参加了一个研究生AI课程,为他的主要项目他在Lisp写了一个“Lights Out”求解器。 他的程序的多个版本利用稍微不同的AI例程,并在40台左右的计算机上进行测试,得到了一些相当整洁的结果(我希望它可以在某处连接到我,但我不认为它是)。

两个学期之前,我使用Scheme(一种基于Lisp的语言)编写交互式程序,模拟Abbott和Costello的“Who's on First”例程。 来自用户的输入与一些非​​常复杂的数据结构(类似于其他语言的地图,但更灵活)匹配以选择适当的响应。 我还写了一个例程来解决一个3x3幻灯片拼图(一个算法,可以很容易地扩展到更大的幻灯片拼图)。

总之,学习Lisp(或Scheme)可能不会产生AI以外的许多实际应用,但它是一个非常有价值的学习体验,正如许多其他人所说的那样。 用像Lisp这样的函数式语言进行编程也可以帮助你递归地思考(如果你在其他语言中递归时遇到问题,这可能是一个很好的帮助)。


Lisp是一个庞大而复杂的语言,它有一个庞大而复杂的运行时间来支持它。 出于这个原因,Lisp最适合于大型复杂的问题。

现在,复杂的问题与复杂的问题不一样。 一个复杂的问题是有很多细节的问题,但这并不难。 编写航空订票系统是一项复杂的业务,但拥有足够的资金和程序员并不难。 获得差异?

一个复杂的问题是一个复杂的问题,一个传统的分而治之不起作用的问题。 控制机器人或使用非表格式(例如语言)或高动态情况下的数据。

Lisp非常适合解决方案必须可扩展的问题。 经典的例子是emacs文本编辑器。 它是完全可编程的,因此它本身就是一个编程环境。

Norvig在他着名的书PAIP中说,Lisp是探索性编程的理想选择。 也就是说,针对一个尚未完全了解的问题编制解决方案(与在线预订系统相反)。 换句话说:复杂的问题。

此外,学习Lisp会让你想起一些被遗忘的基本知识:冯·诺依曼和图灵之间的区别。 我们知道,图灵的计算模型是一个有趣的理论模型,但是作为设计计算机的模型是没有用的。 另一方面,冯诺依曼设计了计算机和计算如何执行的模型:冯诺依曼模型。 冯诺依曼模型的核心是你只有一个记忆,并将你的代码和你的数据存储在那里。 请注意,Java程序(或C#或任何您喜欢的)是图灵模型的一种表现形式。 你可以一劳永逸地设置你的程序。 那么你希望你能处理所有的数据。

Lisp维护冯诺依曼模型; 代码和数据之间没有明确的,预先确定的边界。 在Lisp中编程可以打开冯诺依曼模型的力量。 在Lisp中编程让你以新的视角看待旧概念。

最后,通过互动,您将学习在开发它们时与您的程序进行交互(而不是编译和运行)。 这也改变了你编程的方式,以及你查看编程的方式。

有了这个介绍,我终于可以回答你的问题:你会找到超越“传统”语言的地方吗?

如果您是高级程序员,则需要高级工具。 没有比Lisp更先进的工具。 或换句话说:如果你的问题很难,答案是肯定的。 否则没有。


回应@lassevk:

替代文字

链接地址: http://www.djcxy.com/p/60927.html

上一篇: Why should I learn Lisp?

下一篇: Making split screen layout responsive