将“Lisp”视为一种函数式语言是一个常见的错误。确实,最好将其视为一个语言家族,但现在人们说 Lisp 时,他们通常指的是 Common Lisp。
Common Lisp 允许函数式编程,但它本身并不是函数式语言。相反,它是一种通用语言。Scheme 是一个小得多的变体,在方向上更具功能性,当然还有其他变体。
至于你的问题,这是一个好的选择吗?这真的取决于你的计划。Common Lisp 在这类事情上特别有一些真正的优势。它在您通常在所谓的脚本语言中看到的级别上既具有交互性又具有内省性,使其开发速度非常快。同时它已编译并具有高效的编译器,因此您可以期待与其他高效编译器相同的性能(典型的 ime 是 c 的两倍)。虽然是一门大型语言,但它的设计比 c++ 之类的东西要一致得多,而且元编程功能可以为您的特定应用程序编写非常干净、易于理解的代码。如果你只看这些方面,普通的 lisp 看起来很神奇。
但是,也有缺点。社区很小,如果您正在寻找帮助,您将找不到很多人提供帮助。虽然内置库很大,但您不会找到那么多的 3rd 方库,因此您最终可能会从头开始编写更多的库。最后,虽然它绝不是一个有围墙的花园,但 CL 并没有像 python 那样与外部库的平滑集成。这并不意味着你不能调用 c 代码,有很好的工具可以做到这一点。
顺便说一句,CLOS 是我能想到的最强大的 OO 系统,但如果你来自主流的 c++/java/c#/etc,它是完全不同的方法。OO 背景(是的,它们不同,但除了单一与多重 inh 之外。没有那么多)一开始你可能会觉得它有点奇怪,几乎翻了个底朝天。
如果你走这条路,如果你自己用 CLOS 编写,你将不得不注意实际渲染管道的性能问题。类系统具有令人难以置信的运行时灵活性(即在运行时更新类定义不是通过猴子补丁等,而是通过实际更改类和更新实例)但是您为此付出了一些调度成本。
对于它的价值,我过去曾使用 CL 来研究需要数值效率的代码,即不同类型的模拟。这对我来说很有用。在那种情况下,我并不担心使用现有代码——它不存在,所以无论如何我都是从头开始编写几乎所有东西。
总之,它可能是这个项目的一个很好的语言选择,但不是唯一的。如果您不使用兼具高级方面和良好性能的语言(如 CL、OCaml 和其他一些语言),我肯定会考虑使用 lua 之类的语言或也许使用两级方法的可能性python(很多库)在一些 c 或 c++ 代码之上完成繁重的工作。