【发布时间】:2015-12-08 10:31:53
【问题描述】:
我需要实现一个可以从多种语言调用的库——Java、Python、Perl,将来可能还会更多。我讨厌用多种语言一次又一次地实现(和维护)相同的东西。
我能想到的一个选择是用 C/C++ 编写核心功能并使用 SWIG 为目标语言生成绑定;或者自己编写绑定。
它不能成为独立服务的原因有以下三个。
还有其他成熟的替代品吗?我正在寻找可供比较的选项,然后再选择一个。
理想情况下,我希望使用源到源编译器或源代码生成器来实现。但我找不到支持所有上述语言的语言 - 未来可能会添加。
如果它们提供任何优于 SWIG 的优势,我可以考虑使用任何替代绑定生成器。
提前感谢您的任何指点!
【问题讨论】:
-
这个问题虽然总体上是合理的,但在 Stack Overflow 上是不合适的。我们在这里并不真正做对话项目,您的问题是寻找战略对话而不是战术解决方案。
-
一般来说,确定你需要库做什么,确定测试什么和修复错误需要大部分时间。如果您将大部分时间都花在不停地编写代码上,那么您将处于非常不寻常的境地。
-
@PeterLawrey:不,我不会不停地写代码。我不想用多种语言重新实现它的原因是为了避免代码重复。重复代码通常意味着库行为存在细微差异或存在细微错误。
-
@mah:对不起,我问这个问题的时候没有考虑这个角度,我以后会记住这一点。
-
@Darkstar 在某种程度上,不同的语言偏爱不同风格的 API,但我认为你的观点是,你只需要你想要的差异,而不是偶然的。