Lisp在现实世界中

时间:2008-10-05 22:56:52

标签: clojure lisp scheme common-lisp

我已经尝试过Lisp(实际上是Scheme)并发现它是一种非常漂亮的语言,我有兴趣了解更多。但是,似乎Lisp从未在严肃的项目中使用过,而且我没有看到它被列为任何职位发布所需的技能。我有兴趣听到任何使用过Lisp或者在“现实世界”中使用它的人,或者谁知道它是否被认为是纯粹的学术语言。

38 个答案:

答案 0 :(得分:87)

Franz,Inc。在其网站上提供了无穷无尽的list of success stories。但是:

  

请不要假设Lisp是唯一的   适用于动画和图形,AI,   生物信息学,B2B和电子商务,   数据挖掘,EDA /半导体   应用程序,专家系统,财务,   智能代理,知识   管理,机械CAD,建模   和模拟,自然语言,   优化,研究,风险分析,   调度,电信和Web创作   只因为这些是唯一的东西   他们碰巧列出了。 - Kent Pitman

我们可以在这里找到其他成功案例:http://lisp-lang.org/success/

以及使用Common Lisp的当前公司列表:https://github.com/azzamsa/awesome-lisp-companies

答案 1 :(得分:54)

Emacs的elisp算了吗?这是我所熟悉的最“真实世界”的用法(虽然我不确定Emacs是否也算作“现实世界”)。

答案 2 :(得分:43)

ITA Software使用Common Lisp用于其QPX low-fare search engine,为OrbitzKayakAmericanUnited航空公司等网站提供支持其中许多人。它也部分用于即将到来的加拿大航空passenger reservation system。 Paul Graham过去曾在ITA written a little bit关于Lisp。

(免责声明:我在那里工作。)

答案 3 :(得分:26)

答案 4 :(得分:25)

作为一家小型创业公司,我们已经建立了一些人们称之为“应用服务器”的东西。但实际上它只是一堆用于sql连接和Web应用程序的集成通用lisp库。 部分详情可在cl-dwim project page

获取

使用我们为匈牙利政府开发并运行 Web应用程序,从当地政府收集数据并计算该国预算的相关部分。这是我们现在计划的第二个预算。

它有大约4000个用户,它在一组计算机上运行。

作为“学术语言”:我们正在玩诸如业务流程建模的持续延续之类的东西。它是一些随机的lisp代码,带有一些额外的与进程相关的原语和一些约束。它可以在代码中的随机点停止并在等待一些外部事件时入睡(进入数据库)。

是实用还是学术?你决定......:)

答案 5 :(得分:23)

Reddit最初是用Lisp编写的,后来用Python重写。有一个很好的分析开关及其对Finding Lisp的Lisp意味着什么。

答案 6 :(得分:22)

保罗·格雷厄姆使用和写过用LISP编写的ViaWeb

了解here - Beating the Average

答案 7 :(得分:12)

一个相当新的开源项目仍在享受一致且可观的开发活动LilyPond

这是一个音乐符号程序,它将一个易于编写的文本文件作为输入,并将其转换为精美的乐谱(pdf文件)。如果你愿意,可以提供各种方法来摆弄输出。它甚至可以产生体面的midi文件。每当我需要制作其他音乐家可以阅读的精美乐谱时,我就会使用它。我认为它比Finale更好,它是 free

在商业类别中,还有Notehead's Igor Engraver。不幸的是,该网站不允许我发布直接链接到谈论Lisp的页面,所以去下载并查看底部的“Lisp”链接。

还有Naughty Dog(一家电脑游戏公司)在他们的游戏中使用Lisp。 This article谈到这一点,甚至展示了一些代码。

还有很多其他的被提及和链接,但这些是与我产生共鸣的主要因素(作曲家/程序员/游戏玩家/ ......类型)。

答案 8 :(得分:12)

答案 9 :(得分:10)

哈勃太空望远镜是使用Lisp规划工具安排的。航天飞机是。韦伯望远镜将是。我写Lisp公司是为了分析数十亿美元的医疗保险索赔,即使在经济衰退期间,它每年也以约30%的速度增长。我们已经被一家大公司收购了,我们的一位程序员在一年内与(大公司)用于分析医疗保险索赔的软件相匹配(实际上已经改进),从头开始。 (巨大的公司)的代码,不是在Lisp,花了6年时间和几个程序员。从职业角度来说,麻烦在于,有太多关于“大量刺激性的傻括号”的谣言,等等。大多数管理人员并没有“得到它”,而是希望用一种熟悉的语言来开展项目,以便他们能够进行微观管理。他们认为“Lisp = AI”,甚至不想接受它是一种很好的通用语言的可能性。他们只是堵耳朵。没有完善的工具来做M $友好的网站或集群或流水线化现有的Java应用程序,这是IT在收购增长的这些日子里关心的90%。我可以继续,但它会让我痛苦。 :)

答案 10 :(得分:10)

最近的一些:

前三个是使用Web框架编写的Weblocks编写的。 Wigflip和Clutu使用纯粹的Hunchentoot。

现在开始编码! :)

答案 11 :(得分:9)

我相信Autocad有使用Lisp扩展产品的扩展。见AutoLISP

答案 12 :(得分:9)

彼得·克里斯滕森(Peter Christensen)编制了一份很好的(财务上)成功的lisp公司名单。

http://www.pchristensen.com/blog/lisp-companies/

答案 13 :(得分:9)

  

如果我现在开始自己的主要软件项目,我会根据上述标准做出语言决定。当然,我喜欢Lisp,CLOS很棒,真正的词汇范围岩石,Lisp宏很酷(当按照指示使用时),而且我个人非常喜欢Lisp语法。 [...]但是,如果我负责做出选择,那么说服我选择Lisp作为一个主要的软件项目需要很多,或者需要特殊情况。 - Dan Weinreb

答案 14 :(得分:8)

有许多公司,项目和产品在各种角色中使用Lisp - 我已经完成了其中几个角色的工作。

有两个相关点:

  1. 您可能永远不会知道您的最新消费电子产品是使用Common Lisp构建的,甚至是编程的,或者您使用的某些服务是由Lisp服务器提供的。结论Lisp“从未使用过”是不正确的。

  2. ......而且,像许多域名一样,这些工作从未出现在Monster.com上。仅仅因为你从未见过找工作并不意味着那里没有Lisp要求或正确的工具机会。

答案 15 :(得分:8)

我相信GIMP的插件系统基于Scheme。我不知道这是不是完全“真实世界”,但它似乎是Lisp的实际应用,至少。

答案 16 :(得分:6)

答案 17 :(得分:6)

Lisp用于带有Common Music库的真实世界算法音乐合成。 Rick Taube的来自Metalevel的注释是一个很好的入门文本,在Lisp中有很多用于编写的例子。请参阅示例目录here和文本here的副本。

答案 18 :(得分:6)

当我发现PRISM(«Prism项目是构建用于放射治疗计划的软件工具的长期项目,包括人工智能工具以及手动模拟系统»时,我印象非常深刻。»)用Common Lisp编写。

在我的工作中,我正在编写使用DICOM的软件,我必须说编写好的DICOM实现是一项艰巨的任务。在他们的report中,他们描述了Common Lisp如何让他们构建一个比其他实现更好(至少在某些方面)更好的DICOM实现。

答案 19 :(得分:6)

查找ACL2。它是一个基于lisp的形式逻辑引擎,已被用于许多“真实世界”项目,如软件安全中的正式方法和浮点硬件的正确性证明。

答案 20 :(得分:6)

如果我的计划成功,我们将在5年后使用Scheme! ; P

答案 21 :(得分:5)

嗯,它几乎不是主流,但我使用lisp作为我的研究代码尽可能地管理。它是迄今为止我发现的最佳动态平衡语言。表达能力,同时仍然为数字等产生良好的表现。

答案 22 :(得分:5)

Google App Inventor使用Scheme

编写

答案 23 :(得分:5)

我现在才意识到,Maxima是一个符号代数程序,是用Common Lisp编写的。我已经使用了相当长的一段时间,我认为这也是一个非常好的现实生活的例子。

答案 24 :(得分:4)

GNU Make可以使用scheme进行扩展。现实世界编程案例:)

https://www.gnu.org/software/make/manual/html_node/Guile-Integration.html

答案 25 :(得分:4)

Matthew Eric Bassett在电影行业中使用Racket: http://www.youtube.com/watch?v=37owCjWnkK0

Daniel Liebgold在Racket和PS3上: http://www.youtube.com/watch?v=oSmqbnhHp1c

答案 26 :(得分:3)

Lisp试图在80年代早期跳到光速。在有PC之前, 有商业化生产的“Lisp机器”,它看起来非常好看 就像现代工作站一样,但它们一直都是“低迷”。 Lisp硬件 最终输给了英特尔(就像其他一切一样)。 Lisp软件最终 输给了C / C ++。有各种各样的理论为什么会这样。 http://www.andromeda.com/people/ddyer/lisp/

答案 27 :(得分:2)

FLUENT Flow Modeling Software(计算流体动力学,CFD)将方案编程语言用作脚本语言。

答案 28 :(得分:2)

对于AutoCAD应用程序,AutoLISP / Visual LISP大量用于实际项目,并且有大量用户社区。

答案 29 :(得分:2)

我看到有几个人已经提到它,但lisp广泛用于自定义Autocad开发。 Autocad包含一个内置的lisp解释器。它是扩展产品的最简单方法之一,可以快速提高您的工作效率。

在用户端不需要编译,并且可以在命令行上输入1个或更多行lisp表达式并立即在绘图上执行。对于愿意花一小步学习lisp基础知识的设计师和绘图员来说,它可以提供巨大的生产力。

Autocad确实提供了许多其他方式来定制他们的产品; ObjectARX(C ++),VB,C#等.lisp接口是迄今为止最容易学习和实现的。而且大多数其他开发环境都以某种方式使用lisp。

lisp解释器在Autocad的早期版本中可用,称为变量和表达式。这是相当有限的,但用户很快就添加了额外的功能。后来一个完整的可视化IDE(我认为在2000版本中)。

我不想猜测有多少百万(数十亿?)的lisp代码行可用于Autocad。谷歌搜索“autocad .lsp”返回230万次点击。

好的,足够的打字,它重新为我工作,为我当前的项目写更多的lisp:)

答案 30 :(得分:2)

Paul Berg的算法组合工具箱: http://www.koncon.nl/downloads/ACToolbox/

答案 31 :(得分:2)

我的公司有用计划编写的软件(PLOT)。该软件用于为大公司提供电子邮件防火墙。

答案 32 :(得分:2)

如前所述,计算机代数系统“Maxima”是用Lisp编写的,但其他CAS也是用Lisp编写的,例如Axiom及其分支(OpenAxiom和Fricas)。

答案 33 :(得分:1)

只需添加上述所有非常明智的评论:查看Corman Lisp工具,了解如何将非常智能的功能嵌入到嵌入式系统中!

答案 34 :(得分:1)

http://echowaves.com使用compojure构建在clojure中。该网站是一个学习练习,以确定使用clojure构建Web应用程序是否切实可行。答案是 - 是的!竖起大拇指在网上的clojure。一定要学习clojure - 它将改善你的职业生涯。 代码是开源的,如果有人想看看示例典型的组合应用程序的典型移动部件https://github.com/echowaves/echowaves

答案 35 :(得分:1)

http://www.gensym.com/ - 实时业务规则引擎有许多工业客户。

在内部,它是用Commom Lisp编写的

答案 36 :(得分:0)

这是一种很棒的语言,但它已经瘫痪了,因为(在我看来,作为一个软件业务所有者和程序员),很少有商业Lisp软件包,而那些少有的需要运行时费用(因为一个合适的Lisp)最终用户也可以使用package编写Lisp程序。)

我使用Steel Bank Common Lisp在Windows和Linux下编写原型代码,我喜欢它 - 但我绝不会考虑发布用它编写的产品。没有简单的方法来设置对程序的单击访问,以便最终用户永远不会遇到Lisp提示。没有办法发送已编译的产品,以便用户无法对其进行反汇编,进行一些更改以删除您的名称,并将其作为自己的名称进行销售。我已经看到提到Lisp系统,这些都可以完成,但它们是商业的,你必须为你的程序的每个最终用户支付运行时费用,这是荒谬的。

有一天Lisp可能会出现在自己身上(我热切希望它确实如此),但它对大多数商业软件来说还不可行。唯一的例外是它总是会在你完全可以控制的系统上运行,比如一个网络服务器(我只听说有几家公司甚至使用它)。

答案 37 :(得分:0)

Walmart使用clojure实时处理购买