想象一下,您已经在Lisp中实现了一个良好的基于路径的星型。然后您将发现处理并重新实现整个代码,因为Processing/Java/Java2D是不同的。然后您想要修改libcinder,所以您可以将代码移植到C++/Cairo。
您正在(重新)编写大量的锅炉板代码,而实际的要求“创建星型”(或“创建路径,移动x,lineto x”)没有改变。
封装这些实现细节的选项是什么?某种实用的元编程?也许是专家系统?您将如何将核心业务逻辑定义为语言无关的业务逻辑?
编辑:对于一些人来说,这是一个真正的商业问题,如果你看看施莱普或Stella的话。这个想法是,您已经编写了核心库,例如用Java编写的,现在需要编写一个iOS应用程序。你用什么语言打赌你的未来?如何才能节省对当前代码库的投资?
发布于 2011-03-02 17:28:54
拥有语言独立性的唯一途径是创造自己的语言。这就是乔尔对芥末所做的。实际上,你需要一个源代码对源代码的编译器。
发布于 2011-03-03 05:28:36
一种方法是程序转换。这包括允许源到源转换的技术。理论上,您用一种语言编写程序,然后将其转换为其他目标语言。在实践中,这是大量的工作和一个领域的高度学术兴趣。样本工具:
我不想给你虚假的希望。您必须自己编写转换,这是一项很大的工作。尽管如此,人们每天都让我吃惊。也许你会有一个洞察力,让程序转换对每个人来说都要容易得多。这是一门很酷的学科,需要更多冷静的参与者。
发布于 2011-03-02 18:14:40
通常情况下,项目要比你的例子复杂得多,所以锅炉板代码的比例要小一些。但是,核心业务逻辑不能完全从代码中提取。有些事情您可以做,比如将一些规则移到配置文件和数据库中,但是在某些时候,您将不得不编写代码。
我不想让一个系统语言独立。相反,我将重点关注为这项任务选择的任何语言的高质量实现。如果您必须将应用程序移植到一种新的语言,那么拥有清晰的、编写良好的代码和项目的支持文档将是您最好的资源。
最后,概念和原型的证明应该提前构建,这样您的语言选择就不会在项目中途改变。
https://softwareengineering.stackexchange.com/questions/53930
复制相似问题