我正在设计一个编排引擎,它可以在多个环境中自动执行任务: Python、JavaScript web服务器和c运行时。一种可能的方法是用每种语言编写编排核心。这似乎很脆弱,因为每个新的引擎功能都需要添加到每种支持的语言中(并且必须多次解决错误,同时处理每种语言中的不同习惯用法)。另一种方法是用最小公分母语言(可能是c)编写一次核心,然后用其他语言包装它。但是,我认为如果不是不可能的话,将编译后的库部署到浏览器上将是一场噩梦。因此,我正在考虑的另一个选择是模板和代码生成。然后,只需编写一次引擎(可能使用Python),然后使用jinja模板将工作流编译到每个目标。
最后一种方法听起来可行吗?如果我走了那条路,我应该注意哪些陷阱?我是不是应该忍气吞声,把引擎写三遍?
发布于 2016-04-24 11:45:06
无论你使用哪种技术,你都会面临三个潜在的问题:
跨所有N个目标使用“相同(编排驱动程序)数据”的
如果您编写自己的实现,您可以更容易地克服2)和3)。
如果生成代码,则可以更灵活地更改特定目标的运行方式。如果您使用简单的基于文本的“模板”来生成目标语言代码,您将无法生成非常有效的代码;您无法优化您生成的代码。如果您使用更复杂的代码生成器,则可能能够生成/优化结果。
很难说你会有多大的麻烦,部分原因是你还没有告诉我们这个引擎会做什么,或者目标语言是什么。即使有了这些数据也很难判断;除非你有一个正在运行的系统,否则你不能确定不会有粗鲁的惊喜。
人们在面对未知时会使用复杂的代码生成技术,因为这样可以最大限度地提高灵活性,从而更容易克服复杂性。
当人们没有精力学习如何使用复杂的生成器时,他们会使用更简单的代码生成。如果他们幸运的话,没有问题出现,他们就赢了。如果这个实验不是很多工作,那么你应该试一试,并希望它是最好的。
https://stackoverflow.com/questions/36818862
复制相似问题