它不一定是单个功能。这是整个外观,以及某些功能集如何协同工作。
JavaScript或Java具有Lisp的许多功能(虚拟机,编译器/评估器,垃圾收集等)。但是,例如JavaScript缺少符号编程部分,缺乏数学功能(内部仅具有浮点数),缺乏错误处理,依此类推。
许多Common Lisp系统都针对一种开发方式进行了优化,该开发方式是使用各种元编程技术以各种维度扩展Lisp语言,从而逐步扩展新软件,而无需长时间重新启动软件。因此,它需要具有灵活性和可扩展性,但同时也需要具有鲁棒性。更改语言(宏基本上是用户扩展编译器的一种方式),而不会导致程序崩溃。
现在,诸如JavaScript之类的东西也用于扩展程序,通常是Web浏览器。但是大多数时候,除了一些OOP骇客之外,人们并没有使用JavaScript进行元编程。
例:
可以通过两种方式为计算机代数领域实现通用的高级数学软件:用C编写引擎,并在顶部使用专门的语言(例如Mathematica)或使用一些更高级的Lisp方言。Maclisma / Maxima常见于Lisp,标准版Lisp 减少,Axiom常见于Lisp。
(也有一个或多个用Python编写的。)
提供Axiom之类的功能集的系统很少,它可以在Common Lisp之上运行。
Lisp对这些类型的应用程序具有吸引力的原因是多种功能的组合:高级基本数学(数字,比率,...),符号计算,交互式编译器等。通过在低端实现这些功能很可能获得这些东西。语言。这样,一个人将实现典型Lisp系统的50%或更多。