我已经尝试过 Lisp(实际上是 Scheme),发现它是一种非常漂亮的语言,我有兴趣进一步了解它。然而,Lisp 似乎从未在严肃的项目中使用过,而且我还没有看到它在任何职位发布中被列为所需的技能。我很想听听任何使用过 Lisp 或看到它在“现实世界”中使用的人的意见,或者谁知道它是否被认为是一种纯粹的学术语言。
38 回答
Franz, Inc.在其网站上提供了一份详尽的成功案例列表。然而:
请不要假设 Lisp 只对动画和图形、人工智能、生物信息学、B2B 和电子商务、数据挖掘、EDA/半导体应用程序、专家系统、金融、智能代理、知识管理、机械 CAD、建模和仿真有用,自然语言、优化、研究、风险分析、调度、电信和 Web 创作只是因为这些是他们碰巧列出的唯一内容。— 肯特·皮特曼
我们可以在这里找到其他成功案例:http: //lisp-lang.org/success/
以及当前使用 Common Lisp 的公司列表:https ://github.com/azzamsa/awesome-lisp-companies
Emacs 的 elisp 算不算?这是我熟悉的最“真实世界”的用法(尽管我也不确定 Emacs 是否算作“真实世界”)。
ITA Software将Common Lisp用于其QPX 低价搜索引擎,该引擎为Orbitz、Kayak以及American and United Airlines 等网站提供支持。它还部分用于加拿大航空公司即将推出的乘客预订系统。Paul Graham过去曾在 ITA写过一些关于 Lisp 的文章。
(免责声明:我在那里工作。)
作为一家小型初创公司,我们已经建立了一些人称之为“应用程序服务器”的东西。但实际上它只是一堆用于 sql 连接和 Web 应用程序的集成通用 lisp 库。cl-dwim 项目页面提供了一些详细信息
使用它,我们为匈牙利政府开发和运行了一个网络应用程序,该应用程序从地方政府收集数据并计算该国预算的相关部分。这是我们现在计划的第二个预算。
它有大约 4000 个用户,并且运行在一组计算机上。
至于“学术语言”:我们正在玩诸如业务流程建模的持久延续之类的东西。它是一些随机的 lisp 代码,带有一些额外的与进程相关的原语和一些约束。它可以在代码中的随机点停止并在等待某些外部事件时进入睡眠状态(被提交到数据库中)。
它是实用的还是学术的?你决定... :)
Reddit最初是用 Lisp 编写的,后来用 Python 重写。在Find Lisp中有对开关及其对 Lisp 意味着什么的很好的分析。
Paul Graham 使用并写过用 LISP 编写的 ViaWeb
在这里阅读- 击败平均水平
ITA 软件使用了大量的 CL。
LilyPond是一个相当近的开放源代码项目,它仍然享有一致且可观的开发活动。
这是一个乐谱程序,它以易于编写的文本文件作为输入,并将其转换为精美的乐谱(pdf 文件)。如果您愿意,可以提供各种方式来处理输出。它甚至可以产生听起来不错的 MIDI 文件。每当我需要制作其他音乐家可以阅读的漂亮乐谱时,我都会使用它。我认为它比 Finale 更好而且它是免费的!
在商业类别中,还有Notehead 的 Igor Engraver。不幸的是,该站点不允许我发布指向讨论 Lisp 的页面的直接链接,因此请前往下载并查看底部的“Lisp”链接。
还有 Naughty Dog(一家电脑游戏公司)在他们的游戏中使用 Lisp。本文讨论了这一点,甚至显示了一些代码。
还有很多其他的已经被提及并与之相关,但这些是与我产生共鸣的主要内容(作为作曲家/程序员/游戏玩家/...类型)。
哈勃太空望远镜是使用 Lisp 规划工具安排的。航天飞机是。韦伯望远镜将是。我为分析数十亿美元的健康保险索赔而编写 Lisp 的公司,即使在经济衰退期间也以每年约 30% 的速度增长。我们被一家大公司收购,我们的一位程序员匹配(实际上改进了)(大公司)用于分析医疗保险索赔的软件的输出,从头开始,他自己在一年内。(大公司)的代码,不是在 Lisp 中,花了 6 年时间和几个程序员。职业方面的麻烦在于,太多人听信关于“许多恼人的愚蠢括号”之类的废话。大多数经理并不“明白”,而是宁愿用一种足够熟悉的语言来进行项目,以便他们可以进行微观管理。他们认为 ”
如果我现在开始我自己的主要软件项目,我会根据上述标准做出我的语言决定。当然,我喜欢 Lisp,CLOS 很棒,真正的词法作用域岩石,Lisp 宏非常酷(当按照指示使用时),而且我个人非常喜欢 Lisp 语法。[…] 但是,如果我负责做出选择,那么要说服我为一个主要的软件项目选择 Lisp 需要很多,或者需要特殊情况。——丹·温瑞布
最近的一些:
- Thanandar,德国浏览器游戏:http ://www.thanandar.de/
- Aula Polska,一个波兰企业家社区:http ://www.aulapolska.pl/
- LAMsight,医学调查应用程序:https ://www.lamsight.org/
- Wigflip,一个愚蠢的 gfx 游乐场:http ://wigflip.com/ :)
- Clutu,多人 AJAX 填字游戏:http ://www.clutu.com/
其中前三个是使用 CL Web 框架 Weblocks 编写的。Wigflip 和 Clutu 使用纯 Hunchentoot。
现在开始编码!:)
我相信 Autocad 有使用 Lisp 来扩展产品的扩展。请参阅AutoLISP。
Peter Christensen 编制了一份(财务上)成功的 lisp 公司名单。
有很多公司、项目和产品在各种角色中使用 Lisp——我已经为其中几个做过工作。
有两个相关点:
你可能永远不知道你最新的消费电子产品是用 Common Lisp 构建的,甚至是用 Common Lisp 编程的,或者你使用的某些服务是由 Lisp 服务器提供支持的。得出 Lisp“从未使用过”的结论是不正确的。
……而且,像许多领域一样,这些工作从未出现在 Monster.com 上。仅仅因为你从未见过它的职位发布并不意味着那里没有 Lisp 所需的或适合工作的工具的机会。
我相信 GIMP 的插件系统是基于 Scheme 的。我不知道这是否完全是“现实世界”,但至少它似乎是 Lisp 的实际应用。
查找ACL2。它是一个基于 lisp 的形式逻辑引擎,已用于许多“现实世界”项目,例如软件安全中的形式方法和浮点硬件的正确性证明。
如果我的计划成功,我们将在 5 年内使用 Scheme!;p
我现在才意识到Maxima是一个符号代数程序,是用 Common Lisp 编写的。我已经使用了很长一段时间,我认为这也是一个非常好的现实生活示例。
Lisp 与Common Music库一起用于现实世界的算法音乐创作。Rick Taube's Notes from the Metalevel是一个很好的主题介绍性文本,其中有一堆用 Lisp 编写的示例。请参阅此处的示例目录和此处的文本副本。
Matthew Eric Bassett 在电影业中使用 Racket: http ://www.youtube.com/watch?v=37owCjWnkK0
Daniel Liebgold 谈球拍和 PS3: http ://www.youtube.com/watch?v=oSmqbnhHp1c
好吧,它几乎不是主流,但我尽可能多地使用 lisp 来编写我的研究代码。这是迄今为止我发现的最好的语言,可以平衡动态性和表现力,同时还能为数字等产生不错的性能。
Google App Inventor 是用 Scheme 编写的
GNU Make 可以通过方案进行扩展。真实世界编程的案例:)
https://www.gnu.org/software/make/manual/html_node/Guile-Integration.html
Lisp 在 80 年代初尝试跃升到光速。在 PC 出现之前,有商业生产的“Lisp Machines”,表面上看起来很像现代工作站,但“一直以来”都是 lisp。Lisp 硬件最终输给了英特尔(就像其他一切一样)。Lisp 软件最终输给了 C/C++。有多种理论为什么会这样。 http://www.andromeda.com/people/ddyer/lisp/
方案编程语言被 FLUENT Flow Modeling Software(计算流体动力学,CFD)用作脚本语言。
对于 AutoCAD 应用程序,AutoLISP/Visual LISP 被大量用于实际项目,并且有大量的用户社区。
我看到一些人已经提到过它,但 lisp 被广泛用于自定义 Autocad 开发。Autocad 包括一个内置的 lisp 解释器。它是扩展产品的最简单方法之一,并提供了快速提高生产力的能力。
在用户端不需要编译,并且可以在命令行上输入 1 个或多个 line lisp 表达式并立即在绘图上执行。对于愿意迈出一小步来学习 lisp 基础知识的设计师和绘图员来说,它可以提供巨大的生产力提升。
Autocad 确实提供了许多其他方式来定制他们的产品。ObjectARX (C++)、VB、C# 等。lisp 接口是迄今为止最容易学习和实现的。大多数其他开发环境都以某种方式使用 lisp。
lisp 解释器在非常早期的 Autocad 版本中可用,称为变量和表达式。它相当有限,但在用户中如此成功,以至于很快添加了额外的功能。后来出现了一个完整的可视化 IDE(我认为是 2000 版)。
我不想猜测 Autocad 有多少行(十亿?)lisp 代码。谷歌搜索“autocad .lsp”返回 230 万次点击。
好的,输入够了,它又可以为我工作了,为我当前的项目写更多的 lisp :)
Paul Berg 的算法组合工具箱: http ://www.koncon.nl/downloads/ACToolbox/
我公司有软件编写方案(PLT)。该软件用于为大公司充当电子邮件防火墙。
http://echowaves.com是用 clojure 和 compojure 构建的。该站点是作为一个学习练习而构建的,以了解使用 clojure 构建 Web 应用程序是否实用。答案是——是的!为网络上的 clojure 竖起大拇指。一定要学习clojure——它会改善你的职业生涯。该代码是开源的,如果有人想查看示例,典型的 compojure 应用程序的典型移动部件是什么https://github.com/echowaves/echowaves
如前所述,计算机代数系统“Maxima”是用 Lisp 编写的,但其他 CAS 也是用 Lisp 编写的,例如 Axiom 及其分支(OpenAxiom 和 Fricas)。
沃尔玛使用 clojure 实时处理购买
只需添加上面所有非常明智的评论:查看 Corman Lisp 工具并了解如何将非常智能的功能嵌入到嵌入式系统中!
http://www.gensym.com/ - 实时业务规则引擎有许多工业客户。
在内部它是用 Commom Lisp 编写的
这是一门很棒的语言,但它被削弱了,因为(在我作为软件企业所有者和程序员的观点中)商业 Lisp 包很少,而且少数需要运行时费用(因为合适的 Lisp 包可以最终用户也使用它来编写 Lisp 程序)。
我使用 Steel Bank Common Lisp 在 Windows 和 Linux 下制作代码原型,我喜欢它——但我永远不会考虑发布用它编写的产品。没有简单的方法来设置对程序的单击访问,以便最终用户永远不会遇到 Lisp 提示。没有办法发布编译好的产品,这样用户就无法拆卸它,进行一些更改以删除您的名字,然后将其作为自己的产品出售。我见过提到 Lisp 系统,这两种系统都可以完成,但它们是商业系统,您必须为程序的每个最终用户支付运行时费用,这很荒谬。
Lisp 可能有一天会出现(我热切希望它会出现),但对于大多数商业软件来说它还不可行。唯一的例外是它总是在您可以完全控制的系统上运行,例如 Web 服务器(我只听说有几家公司甚至为此使用它)。