首先,不仅有两种主要的语言方言(Common Lisp和Scheme),而且每种方言都有许多单独的实现。例如,鸡肉计划、Bigloo等。每一个都有细微的区别。
从现代的角度来看,这很奇怪,因为现在的语言往往有明确的实现/规范。想一想Java、C#、Python、Ruby等,每种语言都有一个明确的站点,你可以去那里获取API文档、下载等等。当然,Lisp早于所有这些语言。但话又说回来,即使是C/C++也是标准化的(或多或少)。
这个社区的碎片化是由Lisp时代造成的吗?或者,也许不同的实现/方言旨在解决不同的问题?我明白为什么Lisp永远不会像围绕着一个单一的最终实现成长起来的语言那样团结,但在这一点上,为什么Lisp社区不应该朝着这个方向发展,有什么好的理由吗?
发布于 2010-01-22 18:19:27
的Lisp社区是支离破碎的,但其他一切也是如此。
为什么有这么多Linux distributions?
就让他们中的一些人得到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幻灯片)是一个很好的开始!
发布于 2010-01-22 12:14:33
我认为这是因为"Lisp“是对一种语言的宽泛描述。我所知道的所有lisps之间唯一的共同点是,大多数东西都在括号中,并且使用前缀函数表示法。例如
(fun (+ 3 4))然而,几乎所有其他的东西在不同的实现中都会有所不同。Scheme和CL是完全不同的语言,应该这样考虑。
我认为称lisp社区为碎片化就像是将"C类“社区称为碎片化。它有c,c++,d,java,c#,go,javascript,python和许多其他我想不到的语言。
总之: Lisp更像是一种语言属性(如垃圾收集、静态类型),而不是实际的语言实现,所以有许多语言有Lisp like属性是完全正常的,就像许多语言有垃圾收集一样。
发布于 2010-01-22 12:03:31
我认为这是因为Lisp诞生于黑客文化,并保持了黑客文化的精神。黑客文化就是根据你对“更好”的信念,把某样东西变得“更好”。
因此,当你有一群固执己见的黑客和一种修改文化时,就会发生碎片化。你得到了Scheme,Common Lisp,ELISP,Arc。这些都是完全不同的语言,但它们同时都是"Lisp“。
那么为什么社区是支离破碎的呢?好吧,我会责怪时间和成熟度。这门语言已经有50年的历史了!:-)
https://stackoverflow.com/questions/2114819
复制相似问题