我真的觉得我应该学习Lisp,并且有很多很好的资源可以帮助我做到这一点。

我不会被复杂的语法所拖延,但在“传统的商业编程”中我会找到使用它而不是过程语言的地方。

是否有一个用Lisp编写的商业杀手应用程序?

===============>>#1 票数:125

Lisp是一种庞大而复杂的语言,具有支持它的大型复杂运行时。 因此,Lisp最适合于大而复杂的问题。

现在,一个复杂的问题是不一样的一个复杂的。 一个复杂的问题是有很多小细节的问题,但这并不困难。 编写航空公司预订系统是一项复杂的业务,但有足够的资金和程序员并不难。 有所作为?

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

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

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

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

Lisp维护Von Neuman模型; 代码和数据之间没有明确的预定边界。 Lisp中的编程让您了解Von Neumann模型的强大功能。 使用Lisp编程可以让您以全新的视角看待旧概念。

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

通过这个介绍,我终于可以回答你的问题了:你会找到比“传统”语言更优秀的地方吗?

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

===============>>#2 票数:57

回应@lassevk

替代文字

===============>>#3 票数:55 已采纳

Lisp的主要用途之一是人工智能。 我的一个朋友在大学学习了AI课程,在他的主要项目中,他在Lisp中写了一个“ Lights Out ”解算器。 他的程序的多个版本使用了稍微不同的AI例程,并且在40台左右的计算机上进行了测试,得到了一些非常简洁的结果(我希望它可以在某个地方联机供我链接,但我认为不是这样)。

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

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

===============>>#4 票数:43

复杂的语法

lisp的语法非常简单

用lisp写的杀手级应用程序: emacs Lisp将允许您随意扩展emacs以执行您可以想到的编辑器可能执行的任何操作。

但是 ,如果你愿意 ,你应该只学习lisp,而且你可能永远不会在工作中使用它,但它仍然很棒。

另外,我想补充一点:即使你找到了lisp有意义的地方,你也可能不会说服其他人,它应该用于java,c ++,c#,python,ruby等。

===============>>#5 票数:24

我无法回答第一手经验,但你应该阅读Paul Graham 在Lisp上写的内容 至于“杀手级应用”部分,请阅读击败平均值

===============>>#6 票数:17

我在Lisp专业编程了大约一年,这绝对值得学习。 您将有无可比拟的机会从代码中删除冗余,能够在可能的情况下用所有函数替换所有样板代码,而在没有代码的情况下替换宏。 您还可以在运行时访问无与伦比的灵活性,在代码和数据之间自由转换。 因此,用户操作可以触发动态构建复杂结构的需求的情况是Lisp真正发挥作用的地方。 受欢迎的航空公司航班时刻表是用Lisp编写的,Lisp中也有很多CAD / CAM。

===============>>#7 票数:9

如果您喜欢编程,您应该学习Lisp以获得纯粹的快乐。 XKCD完美地表达了随之而来的智慧启蒙。 学习Lisp对于程序员来说是禅修的冥想(我的意思是没有任何亵渎神灵的含义)。

===============>>#8 票数:9

Lisp对于创建小型DSL非常有用。 我在工作中运行的盒子里有一个Lisp的副本,我写了很少的DSL来询问SQL服务器数据库并在C#中生成数据层等。 我的所有样板代码现在都是用输出到C#的lisp宏编写的。 我用它生成HTML,XML,各种各样的东西。 虽然我希望我可以使用Lisp进行日常编码,但Lisp可以带来实际的好处。

===============>>#9 票数:5

当一个语言不使用语言的常见缩进约定时,任何语言都会变得更难。 当一个人跟随Lisp时,人们会看到它如何很容易地表达语法树结构(注意,这不是很正确,因为预览有点; r应该与递归quicksort参数中的fns对齐):

(defun quicksort (lis) 
  (if (null lis) 
      nil
      (let* ((x (car lis)) 
             (r (cdr lis)) 
             (fn (lambda (a) 
                   (< a x))))
         (append (quicksort (remove-if-not fn 
                                           r)) 
                 (list x)
                 (quicksort (remove-if fn 
                                       r))))))

===============>>#10 票数:4

来自http://www.gigamonkeys.com/book/introduction-why-lisp.html

关于Lisp的最常见的重复神话之一是它“死了”。 虽然Common Lisp并没有像Visual Basic或Java那样被广泛使用,但是描述一种继续用于新开发并继续吸引新用户“死”的语言似乎很奇怪。 最近Lisp的一些成功案例包括Paul Graham的Viaweb,当雅虎收购他的公司时,它成为雅虎商店; ITA Software的机票价格和购物系统QPX,由在线售票机构Orbitz和其他人使用; Naughty Dog为PlayStation 2,Jak和Daxter开发的游戏,主要是用特定领域的Lisp方言Naughty Dog编写的,名为GOAL,其编译器本身是用Common Lisp编写的。 和Roomba,自动机器人真空吸尘器,其软件用L编写,是一个向下兼容的Common Lisp子集。 也许更有说服力的是Common-Lisp.net网站的增长,它承载了开源Common Lisp项目,以及过去几年中涌现的本地Lisp用户组的数量。

===============>>#11 票数:4

学习LISP / Scheme可能不会给你任何增加的应用程序空间,但它将帮助你更好地理解函数式编程,它的规则和它的例外。

值得投入的时间只是为了学习六种嵌套纯函数的美感差异,以及六种具有副作用的嵌套函数的噩梦。

===============>>#12 票数:4

八十年代我在大学读了一个“lisp课”。 尽管所著的Grokking在课堂上讲解的所有概念,我被留下,不用什么使得LISP伟大的任何升值。 我担心很多人将lisp视为另一种编程语言,这就是多年前大学里的这门课程。 如果你看到有人抱怨lisp语法(或缺乏语法),那么他们很可能是那些未能掌握lisp优秀的人之一。 很长一段时间我都是那些人之一。

直到二十年后,当我重新点燃我对lisp的兴趣时,我才开始“得到”让lisp变得有趣的东西 - 无论如何。 如果你设法学习lisp而不会被闭包和lisp宏所迷惑,你可能会错过这一点。

===============>>#13 票数:4

“Lisp值得学习,当你最终得到它时,你将获得深刻的启蒙经验;即使你从未真正使用Lisp本身,这种经验会让你成为更好的程序员。”

--Eric S. Raymond,“如何成为黑客”

http://www.paulgraham.com/avg.html

===============>>#14 票数:4

我发现学习一门新语言总是会影响你已经掌握的语言的编程风格。 对我来说,它总是让我以不同的方式思考用我的主要语言解决问题,即Java。 我认为总的来说,它只是在编程方面拓宽了你的视野。

===============>>#15 票数:3

Gimp的剧本 - 富有嘴唇。 这是一个photoshop杀手级应用程序。

===============>>#16 票数:3

学习lisp将使Javascript完全不同! Lisp真的迫使你把握递归和整个“作为第一类对象的函数” - 范式。 请参阅Crockfords关于Scheme vs Javascript的优秀文章。 Javascript可能是当今最重要的语言,所以更好地理解它是非常有用的!

===============>>#17 票数:3

我同意Lisp是您在商业环境中可能永远不会使用的语言之一。 但即使你没有达到,学习它肯定会扩展你对整个编程的理解。 例如,我在大学里学过Prolog,虽然之后我从未使用过它,但我让我对许多编程概念有了更深入的了解,并且(有时)对我使用的语言有了更多的了解。

但是如果你要学习它......无论如何,请阅读On Lisp

===============>>#18 票数:3

好吧,我可能很奇怪,但是我真的不喜欢Paul Graham的文章,如果你已经掌握了Common Lisp,那么Lisp是一本非常粗略的书。 相反,我会说去Siebel的Practical Common Lisp 至于“杀手级应用程序”,Common Lisp似乎在ITA这样的小众商店中找到了自己的位置,所以虽然没有一个应用程序与CL同义,但Rails对于Ruby来说,如果你做的话,有很多行业的地方使用它一点点挖掘。

===============>>#19 票数:3

如果你不得不问自己是否应该学习口齿不清,你可能不需要。

===============>>#20 票数:2

要添加到其他答案:

因为SICP课程(视频在这里可用)很棒:教你Lisp 等等

===============>>#21 票数:2

杀手级应用? Franz Inc.有很多成功案例 ,但这个列表只包括AllegroCL的用户......可能还有其他人。 我最喜欢的是关于Naughty Dog的故事 ,因为我是Crash Bandicoot游戏的忠实粉丝。

为了学习Common Lisp,我推荐Practical Common Lisp 它有一个实用的方法,至少对我来说比我看过的其他书更容易。

===============>>#22 票数:2

Lisp可以在任何使用传统编程的地方使用。 它并没有那么不同,它更强大。 写一个网络应用程序? 你可以在Lisp上编写桌面应用程序吗? 你可以在Lisp上做,无论如何,你可以在Lisp,Python或任何其他通用编程上执行它(有一些语言只适用于一个任务)。

最大的障碍可能是接受你的老板,同事或客户。 这是你必须与他们合作的东西。 选择像Clojure这样可以利用当前Java基础架构安装基础的实用解决方案,从JVM到库,可能对您有所帮助。 此外,如果你有一个Java程序,你可以做一个插件架构并为它编写Clojure插件,最后在Clojure中编写一半代码。

===============>>#23 票数:2

复杂的语法? lisp的优点在于它具有非常简单的语法。 它只是一个列表,列表中的每个元素可以是另一个列表或基本数据类型。

它值得学习,因为它增强了你的编码能力,可以将思考和使用函数作为另一种数据类型。 这将改进您在命令式和/或面向对象语言中编码的方式,因为它将使您在编写代码结构时更加灵活。

===============>>#24 票数:2

您今天可以使用Clojure在Java VM上编写测试和脚本。 虽然在JVM上实现了其他Lisp语言,但我认为Clojure在与Java集成方面做得最好。

有时Java语言本身会妨碍编写Java代码测试(包括“传统商业编程”)。 (我并不是说这是对Java的起诉 - 其他语言遭遇同样的问题 - 但这是事实。既然主题,而不是Java,我不会详细说明。请随意开始一个新主题有人想讨论它。)Clojure消除了许多这些障碍。

===============>>#25 票数:1

不是理由,而是(微不足道)AutoCAD具有LISP和DCL运行时支持。 如果您不想使用VBA或其C ++或.NET SDK,或者如果DIESEL表达式没有删除它,则可以方便地编写复杂的宏(包括ActiveX自动化)。

很多AutoCAD的功能实际上都是LISP例程。

===============>>#26 票数:1

这是我自己已经考虑了一段时间的话题,但我还没有真正做出决定,因为通常时间是主要问题......;)

因为我在这篇文章中找不到这些链接,所以为了公共利益添加它们:

成功与失败的故事: 在JPL倾听

令人印象深刻的成功故事: 在Orbitz公司使用Lisp

比较和分析是否使用Lisp而不是Java: Lisp作为Java的替代品

===============>>#27 票数:0

不是说这是一个杀手级的应用程序,但看起来它可能很酷http://code.google.com/p/plop/

===============>>#28 票数:0

杀手级应用? ITA Software的航班搜索引擎就是其中之一。

至于“为什么”,它很可能会让你成为一个更好的开发者,并且极不可能让你变得更糟。 但是,它可能会使您更喜欢使用其他语言的lisp方言。

===============>>#29 票数:0

语法无关紧要,可读性不大!

  ask by community wiki translate from so

未解决问题?本站智能推荐: