萧雁翎
Lisp的价值在于最容易贯彻"Code as Data"这个编程范式如果你要解决的问题是常见的、无需动态元编程的“静态代码”就能解决的问题,Lisp其实发挥不了什么特殊作用。不如直接用那些“功能丰富又易上手”的常见语言(Python、Ruby、C++等)来做但是如果你要解决的问题需要使用动态生成、转化的代码来解决,Lisp就是最好的工具之一诚然,任何需要运行时改变、构造的代码都可以通过参数化、钩子化静态代码来代替,使之无须一个eval解释器也能达到目的,但是那样会极大地复杂化静态代码,所以复杂的情形下不如动态转化代码来的直观举个例子:在常见的AOP场合(任何足够复杂的项目都需要某种程度的AOP),使用不含eval的语言都显得很累赘和蹩脚。要么需要工具来“后期编织”源代码、字节码、目标文件,要么需要instrument、extend、hack运行时。如果使用Lisp,只需要转化代码(因为Code is Data),或者实现一个第二层的eval就行了