首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Lisp社区如此支离破碎?

为什么Lisp社区如此支离破碎?
EN

Stack Overflow用户
提问于 2010-01-22 11:53:06
回答 9查看 9.1K关注 0票数 70

首先,不仅有两种主要的语言方言(Common Lisp和Scheme),而且每种方言都有许多单独的实现。例如,鸡肉计划、Bigloo等。每一个都有细微的区别。

从现代的角度来看,这很奇怪,因为现在的语言往往有明确的实现/规范。想一想Java、C#、Python、Ruby等,每种语言都有一个明确的站点,你可以去那里获取API文档、下载等等。当然,Lisp早于所有这些语言。但话又说回来,即使是C/C++也是标准化的(或多或少)。

这个社区的碎片化是由Lisp时代造成的吗?或者,也许不同的实现/方言旨在解决不同的问题?我明白为什么Lisp永远不会像围绕着一个单一的最终实现成长起来的语言那样团结,但在这一点上,为什么Lisp社区不应该朝着这个方向发展,有什么好的理由吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-01-22 18:19:27

的Lisp社区是支离破碎的,但其他一切也是如此。

为什么有这么多Linux distributions?

  • Why,有这么多
  • 变体?OpenBSD,NetBSD,FreeBSD,...甚至Mac。
  • 为什么有这么多脚本语言?
  • 为什么有这么多Unix shell?
  • 为什么有这么多的Logo (>100),Basic (>100),C(无数),...
  • 为什么有这么多的Ruby变体?Ruby MRI、JRuby、YARV、MacRuby、HotRuby?
  • Python可能有一个主站点,但有几个略有不同的实现: CPython、IronPython、Jython、S60的Python、PyPy、无载燕子、CL-Python、...
  • 为什么有C (Clang、GCC、MSVC、Turbo、Watcom C等)、C++、C#、Cilk、Objective-C、D、BCPL、... ?

就让他们中的一些人得到50个,看看它有多少种方言和实现。

我猜Lisp是多样化的,因为每种语言都是多样化的,或者变得多样化。有些是从一个单一的实现(McCarthy的Lisp)开始的,50年后,你得到了一个动物园。Common Lisp甚至从多个实现开始(针对不同的机器类型、操作系统、不同的编译器技术等)。

现在,Lisp是一个语言家族,而不是单一的语言。哪种语言属于这个家族,甚至连共识都没有。可能有一些标准需要检查(s-表达式、函数、列表等),但并不是每个Lisp方言都支持所有这些标准。语言设计者已经尝试了不同的特性,我们得到了许多或多或少类似于Lisp的语言。

如果你看看Common Lisp,你会发现大约有三四个不同的活跃的商业供应商。试着让他们支持一个产品!行不通的。然后你有一堆有不同目标的活跃的开源实现:一个编译成C,另一个是用C写的,一个试图有一个快速优化的编译器,一个试图与本机编译有一些中间基础,一个是针对JVM的……诸若此类。试着告诉维护者放弃他们的实现!

Scheme有大约100个实现。许多人都死了,或者大部分都死了。至少有10到20个是活跃的。有些是业余爱好项目。有些是大学项目,有些是公司的项目。用户对有不同的需求。一个需要游戏的实时GC,另一个需要嵌入到C中,只需要用于教育目的的基本构造,等等。如何告诉开发人员不要修改他们的实现。

然后还有一些人不喜欢通用的Lisp (太大,太老,功能不够,不够面向对象,太快,不够快,...)。有些人不喜欢Scheme (太学术,太小,不能扩展,太功能,功能不够,没有模块,错误的模块,没有正确的宏,等等)。

然后有人需要一个Lisp和Objective-C相结合,然后你就得到了Nu。有人为.net破解了一些Lisp。然后你得到一些带有并发性和新鲜想法的Lisp,然后你就有了Clojure。

这是语言在工作中的演变。这就像寒武纪的大爆发(当时出现了许多新的动物)。一些人会死,另一些人会活着,一些新的会出现。在某个时间点上,一些方言出现了,它们采用了最先进的技术(70年代/80年代的Lisp中的函数编程方案和80年代的MacLisp中的Common Lisp )-这导致一些方言大部分消失(即Standard Lisp、InterLisp和其他)。

Common Lisp是Lisp方言中的鳄鱼。这是一个非常古老的设计(亿万年),只有很小的变化,看起来有点可怕,有时它会吞噬一些年轻人……

如果你想了解更多,The Evolution of Lisp (和corresponding幻灯片)是一个很好的开始!

票数 170
EN

Stack Overflow用户

发布于 2010-01-22 12:14:33

我认为这是因为"Lisp“是对一种语言的宽泛描述。我所知道的所有lisps之间唯一的共同点是,大多数东西都在括号中,并且使用前缀函数表示法。例如

代码语言:javascript
运行
复制
(fun (+ 3 4))

然而,几乎所有其他的东西在不同的实现中都会有所不同。Scheme和CL是完全不同的语言,应该这样考虑。

我认为称lisp社区为碎片化就像是将"C类“社区称为碎片化。它有c,c++,d,java,c#,go,javascript,python和许多其他我想不到的语言。

总之: Lisp更像是一种语言属性(如垃圾收集、静态类型),而不是实际的语言实现,所以有许多语言有Lisp like属性是完全正常的,就像许多语言有垃圾收集一样。

票数 14
EN

Stack Overflow用户

发布于 2010-01-22 12:03:31

我认为这是因为Lisp诞生于黑客文化,并保持了黑客文化的精神。黑客文化就是根据你对“更好”的信念,把某样东西变得“更好”。

因此,当你有一群固执己见的黑客和一种修改文化时,就会发生碎片化。你得到了SchemeCommon LispELISPArc。这些都是完全不同的语言,但它们同时都是"Lisp“。

那么为什么社区是支离破碎的呢?好吧,我会责怪时间和成熟度。这门语言已经有50年的历史了!:-)

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2114819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档