元编程:用一种语言X编写,用多种语言交叉编译,如C#,PHP,Java,C
2022-08-30 20:01:53
在我多年来完成的所有项目中,我从未遇到过这样的要求,尽管这在纸面上似乎很容易:为许多知名的CMS编写插件。
显然,每个插件系统(或扩展系统)都是不同的,这需要通过适配器模式进行特定的桥接代码。但核心应该写一次。我不希望WordPress用户使用PHP-Java桥接器,也不期望DotNetNuke用户使用.NET-Native bridge(尽管这更容易构思)。
在我看来,核心应该可以编译在三个主要领域,涵盖大多数CMS系统:
- 母语,中间语言可以是C,也可以是C++。目标可以用作 PHP 扩展。
- MSIL/CIL for .NET based languages
- 基于 Java 的系统的 Java 字节代码
C#和Java之间的翻译非常好,但C和C#要困难得多。最终,最好可以添加其他目标,以免强制WordPress或WikiMedia用户在使用插件之前安装扩展。
我相信这也提出了其他问题。解决此类问题的常用方法是什么?我应该先定义一个DSL,然后使用DMS或类似的转换吗?其他选择?