奇怪的是,Programmers SE中已经存在对此问题的一个答案。
引用相关部分:
Greenspun的观点是(部分)许多复杂的程序都内置了解释器。他建议与其使用一种已经内置了解释器(或编译器)的语言(例如Lisp),而不是将解释器构建为一种语言。
当时,我正在开发一个相当大的应用程序,该应用程序使用用于自定义语言的自定义解释器执行用户定义的计算。我决定尝试在Lisp中重新编写其核心,作为大规模实验。
花了大约六个星期。原始代码是约100,000行的Delphi(Pascal变体)。在Lisp中,减少到10,000行。然而,更令人惊讶的是,Lisp引擎的速度提高了3-6倍。请记住,这是Lisp新手的工作!整个经历让我大开眼界。我第一次看到了将一种语言的性能和表现力结合在一起的可能性。
- 迈克尔·莱纳汉(Michael Lenaghan)
为了进一步阐明这一部分,Michael回应了以下评论:
哇,如果它能以比Lisp实现慢3-6倍的速度运行,那一定是一些非常可怕的Delphi代码!”正确,我认为这是我未能更好地解释它的失败。Lisp实现能够进行转换用户表达式转换为Lisp表达式(一个简单的过程),然后将Lisp表达式编译为本机代码(经过全面优化),这就是Greenspun的《第十条规则》的含义。
-Michael Lenaghan
鉴于此答案是由其他人的答案组成的,它是社区Wiki。