Lisp社区支离破碎,但其他所有方面也是如此。
为什么会有那么多Linux发行版?
为什么会有这么多的BSD变体?OpenBSD,NetBSD,FreeBSD,甚至Mac OSX。
为什么会有那么多脚本语言?Ruby,Python,Rebol,TCL,PHP和其他无数种。
为什么会有这么多的Unix shell?sh,csh,bash,ksh,...?
为什么徽标(> 100),基本(> 100),C(无数),...的实现如此之多...
为什么Ruby有这么多变体?Ruby MRI,JRuby,YARV,MacRuby,HotRuby?
Python可能有一个主要站点,但是有一些稍微不同的实现:CPython,IronPython,Jython,适用于S60的Python,PyPy,Unladen Swallow,CL-Python,...
为什么会有C(Clang,GCC,MSVC,Turbo C,Watcom C,...),C ++,C#,Cilk,Objective-C,D,BCPL,...?
只要让其中一些人获得五十个,然后看看它有多少种方言和实现即可。
我猜Lisp是多种多样的,因为每种语言都是多种多样的,或者会变得多种多样。有些是从单一实现开始的(McCarthy的Lisp),五十年后您就拥有了动物园。Common Lisp甚至从多种实现开始(针对不同的机器类型,操作系统,不同的编译器技术……)。
如今Lisp是一种语言家族,而不是一种语言。甚至没有共识什么语言属于那个家族。可能要检查一些条件(s表达式,函数,列表等),但是并非每个Lisp方言都支持所有这些条件。语言设计师尝试了不同的功能,我们或多或少地获得了许多类似Lisp的语言。
如果看Common Lisp,大约有三到四个不同的活跃商业供应商。尝试让他们成为一项产品的支持者!不行 然后,您会得到一堆具有不同目标的活跃的开源实现:一个是用C编译的,另一个是用C编写的,一个试图拥有一个快速优化的编译器,一个试图拥有本机编译的中庸之道,一个目标是JVM ...等。尝试告诉维护者放弃他们的实现!
该计划有大约100个实施方案。许多人已经死了,或者大部分都死了。至少有十到二十个处于活动状态。有些是业余爱好项目。有些是大学项目,有些是公司的项目。该用户有不同的需求。一个人需要一个游戏的实时GC,另一个人需要嵌入到C中,一个人只需要出于教育目的的准系统构造,依此类推。如何告诉开发人员不要破坏其实现。
然后有些人不喜欢Commmon Lisp(太大,太旧,功能不足,面向对象不够,速度太快,不够快……)。有些人不喜欢Scheme(过于学术,太小,无法扩展,功能太强大,功能不足,没有模块,模块错误,宏指令不正确……)。
然后有人需要将Lisp与Objective-C结合使用,然后得到Nu。有人为.net入侵了一些Lisp。然后,您将获得一些具有并发性和新思想的Lisp,然后您将获得Clojure。
这是工作中的语言演变。就像寒武纪的爆炸一样(当出现许多新动物时)。有些会死,有些会继续存在,有些会出现。在某个时间点上出现了一些方言,这些方言接pick了最先进的技术(在70年代/ 80年代使用Lisp进行功能性编程的所有方案,在80年代像MacLisp那样使用Common Lisp的所有方案)-这导致某些方言大部分消失(即标准Lisp,InterLisp等)。
普通Lisp是Lisp方言的短吻鳄。这是一个非常古老的设计(几亿年),几乎没有变化,看上去有些令人恐惧,并且时不时地吃一些年轻的...
如果您想了解更多,Lisp的演变(以及相应的幻灯片)是一个很好的开始!