LISP是否在当今世界仍在实践/使用,还是传统语言
是的,是的,但是您必须知道在哪里看。使用LISP的人并不太会大声喊着它,但是在过去20年中,有少数几个知名初创公司使用LISP产生巨大影响的例子。它在欧洲的小公司中也很受欢迎。
什么是最广泛使用的方言?
这是一个有效的问题,但这不是一个容易回答的问题。它可能也不是一个特别有用的答案:许多实现都有特定的重点,因此,如果它们适合您的特定问题,则最好选择它们,而不是根据其使用的广泛程度进行选择。相反,我会告诉您一些有关您的选择的信息,您可以自己决定。
LISP是一种语言家族,每种语言都有一系列方言和实现。方言大致分为“ LISPs”和“ Schemes”两个阵营。
LISP:直到最近,Common LISP才是王者。这是统一所有不同LISP的尝试,并且毫无保留地是LISP的“ C ++”。也就是说,这是一种巨大的语言。它拥有一切。在过去的几年中,Clojure出现了。Clojure是一种LISP,可在Java虚拟机上运行,并尝试将其自身植根于功能性编程原理中。传统上,其他LISP严格来说是多范式。Clojure很有趣,因为它在LISP和JVM中都得到了最好的和最坏的。基于Java的语言还有很多冗长的地方,它们在语法上相当自由和容易,因此有很多用于处理不同事情的旋钮和按钮,但是它们确实有一些关于数据类型的有趣想法,特别是它们提出的一些实用方法,这些函数可以应用功能编程中的想法。
方案:方案是LISP的严格子集。Scheme由Steele和Sussman发明,在早期就因在MIT Computing 101讲座课程中使用而著名。方案在“有关算法语言方案(RnRS)的修订报告”中定义。是的:他们那里有个数学笑话。Scheme是其他LISP所没有的一种标准化语言。这极大地有助于实现之间的可移植性,但这不是灵丹妙药。标准化工作趋于保守,并且实施方面的创新(尤其是围绕模块之类的创新)趋于完全不同。还有一系列SRFI(实施方案请求),类似于IETF的RFC流程。人们根据需要使用它来标准化小东西。
方案与LISP的不同之处在于,它们具有一组必须满足的硬性要求,其中之一是“尾部调用优化”,这有助于提高递归效率。因此,Scheme中的递归编程风格比LISP中的流行得多。同样,方案也很像LISP的“ C”。也就是说,这是一种小语言,您应该能够一次将所有这些保存在脑海中。
当前有两个Scheme系列:基于第5版(R5RS)的和基于6版(R6RS)的。R6RS的复杂性远高于其任何前任产品,因此许多R5RS实现选择跳过它,希望R7RS与R5RS相比更类似于R5RS。R7RS标准化过程目前正在进行中,它试图通过在第一个工作组中标准化一种小的基本语言,然后委托第二个工作组来标准化更大的功能,从而既包括R5RS实现者的需求,也包括R6RS民间的需求。这将使该语言在微型嵌入式硬件以及功能更强大的计算机上都具有高效且有用的实现。
现在我将更具体:
PicoLisp是一个非常非常酷的LISP。很小!它是作者自己写的,据我了解,自1980年代以来,他一直以此为生。如果您有机会参加他的演讲,那么您就应该这样做:他非常有趣,并且非常了解他的东西,即使在主流或无聊的场合,您也不会闻到最小的嗅探。
我不熟悉Common Lisp的实现,因此我将不对其进行进一步评论。
Guile是官方的GNU计划。
Racket是一种R6RS方案,但最近它似乎扩大了网络,并正在尝试“充当语言创建,设计和实现的平台”。
鸡肉的目标是成为一个实用的计划。它基于R5RS并编译为C。事实证明这是一个非常重要的优势,因为它使使用现有C库绝对不容易。因此,Chicken可能是替代Perl,Python,Ruby等作为您日常脚本语言的最有用的方案。几年来,有一些人专门将其用于所有需求。它具有交互式REPL和编译器。社区(在邮件列表和IRC上)都是知识渊博,友好而乐于助人的社区。
寻找具有许多模块的实现:这表明它具有广泛的用途,这意味着它可能具有有助于完成当前任务的功能。
寻找使用编译器或至少不是严格基于IDE或REPL的实现。专为教学而设计的许多实现都很难用于通用脚本。
我会推荐鸡肉,因为那是我用的。我已经在个人项目中使用了它,并且已经(目前正在使用)专业地使用它。
如果某个东西完全过时,我不想投入过多的精力-如果它是专业上的“死者”,我仍然会学习它,而只是从学术角度考虑...
Scheme在专业上并没有死,但是您可能需要花些时间才能在这种情况下使用它。像Chicken这样的东西远不止是学术上的追求,它可以轻松涵盖您当前使用的任何高级语言的几乎所有基础。