有一些库,这些库的版本可用许多不同的编程语言编写,例如Lucene,该库是用Java(如他们所说的100%纯Java)编写的,但也具有C ++,C,Perl的版本,Ruby,Lisp和其他一些语言。我说的是这些语言的实现,而不仅仅是FFI接口。
人们为什么这样做?我可以看到一个明显的原因:当项目具有较少的依赖项时,部署和分发(也可能是开发)更加容易。但是还有别的吗?在什么情况下值得?
4
跨越执行环境的自然界限进行通信可能会非常昂贵。
@Thor:然而,某些语言/环境积极鼓励跨越自然边界(C是这种情况的常见示例,这是Tcl程序员中的强烈主题)。我怀疑它主要与内存(以及其他资源)管理有关;在同一过程中拥有两个内存管理器确实不是很好,特别是如果它们不是为了共存而设计的。最后,我想这取决于您做出的假设以及他们随后进行的不可接受的操作……
—
Donal Fellows