首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多平台代码生成

多平台代码生成
EN

Stack Overflow用户
提问于 2016-04-24 11:09:21
回答 1查看 44关注 0票数 1

我正在设计一个编排引擎,它可以在多个环境中自动执行任务: Python、JavaScript web服务器和c运行时。一种可能的方法是用每种语言编写编排核心。这似乎很脆弱,因为每个新的引擎功能都需要添加到每种支持的语言中(并且必须多次解决错误,同时处理每种语言中的不同习惯用法)。另一种方法是用最小公分母语言(可能是c)编写一次核心,然后用其他语言包装它。但是,我认为如果不是不可能的话,将编译后的库部署到浏览器上将是一场噩梦。因此,我正在考虑的另一个选择是模板和代码生成。然后,只需编写一次引擎(可能使用Python),然后使用jinja模板将工作流编译到每个目标。

最后一种方法听起来可行吗?如果我走了那条路,我应该注意哪些陷阱?我是不是应该忍气吞声,把引擎写三遍?

EN

回答 1

Stack Overflow用户

发布于 2016-04-24 11:45:06

无论你使用哪种技术,你都会面临三个潜在的问题:

跨所有N个目标使用“相同(编排驱动程序)数据”的

  1. 。每个目标都有一种表示该数据的首选方法。你可以选择一个最小的公分母(例如,文本或XML),以使目标引擎更笨拙的代价来编写
  2. ,在N个目标中找到相同的效果。假设你在每个目标中都需要"eval“(我希望不是);即使它们看起来有类似的实现,一些细节也会出错,你必须解决这个问题
  3. 一个或多个目标的性能很差。

如果您编写自己的实现,您可以更容易地克服2)和3)。

如果生成代码,则可以更灵活地更改特定目标的运行方式。如果您使用简单的基于文本的“模板”来生成目标语言代码,您将无法生成非常有效的代码;您无法优化您生成的代码。如果您使用更复杂的代码生成器,则可能能够生成/优化结果。

很难说你会有多大的麻烦,部分原因是你还没有告诉我们这个引擎会做什么,或者目标语言是什么。即使有了这些数据也很难判断;除非你有一个正在运行的系统,否则你不能确定不会有粗鲁的惊喜。

人们在面对未知时会使用复杂的代码生成技术,因为这样可以最大限度地提高灵活性,从而更容易克服复杂性。

当人们没有精力学习如何使用复杂的生成器时,他们会使用更简单的代码生成。如果他们幸运的话,没有问题出现,他们就赢了。如果这个实验不是很多工作,那么你应该试一试,并希望它是最好的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36818862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档