为敏捷团队准备的 Lisp

阅读数:387 2007 年 10 月 29 日

话题:敏捷架构文化 & 方法

Paragent 是一个基于 web 的、开源的 IT 管理系统,它的开发语言是,是……Common Lisp?在他们最新的 blog 里面,Paragent 的开发人员描述了他们使用 Lisp 的经验:

在开发新的服务器控件时,除了对 Ruby/Rails、PHP 和 Python 等一系列开发语言进行研究之外,我们决定更深入地研究下使用 Lisp 作为实现 语言的可能性。花费了大量精力之后,我们决定给 Lisp 一个机会。真没有辜负我们的期望,在有限的预算成本下,我们以创纪录的时间开发了 Paragent 的第一版,并使其上线。

InfoQ 访问了 Paragent.com 的 CTO Tim Ritchey,希望他能谈一下为什么他的团队选择 Lisp,以及它是如何被用来完成任务的。

作为一个开发新产品的小公司,我们与产品的早期使用者有紧密的联系,而且我们会迅速地把他们的反馈放入到阶段性的产品发布中去。使用 Lisp 的最大好处之 一就是可以直接在运行中的系统之上工作。当你编译一个函数时,它会被放入到运行中的映像中,你可以马上得到反馈。不会有长时间的“编辑 - 编译 - 运行”周期 来打断你的前行。在结对编程时,这是非常有用的,因为几乎没有停顿的时间。 

我们有一个例子:客户当时在开发现场与我们谈话,他们提出了一个非常重要的功能特性,产品是否具备这个特性会决定是否签订合同。当客户从我们的肩膀上看过 来的时候,我们当时马上打开服务器,编写那个功能特性的代码,运行一些测试,然后就直接发布了。30 分钟之后,我们就直接签约了。我认为没有多少其他的开 发平台能够让我进行这样的尝试。

最近 Lisp 的流行又掀起了小小的复兴之势,这要归功于 Peter Seibel 的书籍《Practical Common Lisp》 。当然,一些公司已经成功使用 Lisp 好些年了。但是新接触 Lisp 的开发者都有这样一个抱怨:它已经有些过时了,而且明显缺乏第三方的开发库。说起工具,Paragent 的开发人员经过仔细考虑,自己开发了Cusp :一个供 Eclipse 使用的 Common Lisp 开发插件。当被问到缺乏开发库对于 Paragent 是否是问题时,Tim Ritchey 这样说:

刚开始时,我们对开发库相关的问题有些担心……最后,我们没有在这方面遇到什么问题。在大多数情况下,对于我们需要的部分都有很好的开发库(HTTP 客户 端、SMTP、安全、图形渲染等);此外,Common Lisp 有非常好的外部函数接口,如果没有原生的 Lisp 库,我们可以带入任何我们需要的东西。 

我认为造成人们对 Common Lisp 望而生畏的一个因素是:在他们的印象中,许多开发库都是由个体程序员一次性完成的成果,而其他语言的开发库都是由整个团队一起合作完成的。我不想 过多强调 Lisp 在生产力方面的优势,但是大部分的开发库,即使人手不足而且很少更新,这些库实际上也是非常稳定且具有很高生产力的……更少数目的 Lisp 开发者意味着我们看起来显得很单薄,但是我们没有遇到因为开发库支持的原因导致无法继续工作的状况。

Lisp 是否得到了新一代开发人员的青睐,这还有待观察。但是经验丰富的开发人员知道,在他们所做的全部关于技术的抉择中,开发语言的选择所产生的影响最大,因此,任何认同敏捷软件开发原则的团队至少会把 Common Lisp 作为一种备用方案。

查看英文原文:Lisp for Agile Teams
译者简介:郑柯,目前任职《程序员》杂志社高级编辑,有志于在中国的软件开发业界推广 Agile 的理念和方法论,笃信以人为本,关注 Ruby,关注敏捷,关注人。参与 InfoQ 中文站内容建设,请邮件至china-editorial@infoq.com