我打算做一个侧面项目,其目标是将代码从一种编程语言转换为另一种编程语言.我开始使用的语言是PHP和Python(Python到PHP应该更容易开始),但理想情况下我可以添加其他语言(相对)轻松.计划是:
这是面向Web开发的.原始代码和目标代码将位于框架之上(我也必须编写).这些框架将采用MVC设计模式并遵循严格的编码约定.这应该使翻译更容易一些.
我也在研究IOC和依赖注入,因为它们可能使翻译过程更容易,更不容易出错.
我将使用Python的解析器模块,它让我摆弄抽象语法树.显然,我可以用PHP获得的最接近的是token_get_all(),这是一个开始.
从那时起,我可以构建AST,符号表和控制流程.
然后我相信我可以开始输出代码了.我不需要完美的翻译.我仍然需要检查生成的代码并修复问题.理想情况下,翻译人员应标记有问题的翻译.
在你问"这到底是什么意思?"之前 答案是......这将是一次有趣的学习经历.如果您对如何减少这种麻烦有任何见解,请告诉我.
我更感兴趣的是知道我可以在代码上强制执行哪种模式,以便更容易翻译(即:IoC,SOA?)代码而不是如何进行翻译.
php python compiler-construction coding-style abstract-syntax-tree
原文问: 我想知道是否有人有过将大型Cobol/PL1代码库迁移到Java的经验?
该过程的自动化程度以及输出的可维护性如何?
从交易到OO的转变如何发挥作用?
任何经验教训或可能有益的资源/白皮书都将受到赞赏.
编辑7/7:当然NACA方法很有意思,能够继续对COBOL代码进行BAU更改,直到发布JAVA版本,这对任何组织都有好处.
与COBOL布局相同的过程Java的参数,使编码人员在熟悉Java语言时感到舒适,这对于具有大量代码库的大型组织来说是一个有效的论据.正如@Didier所指出的那样,每年节省300万美元可以在任何BAU变化中提供大量填充的空间,以便持续重构代码.正如他所说,如果你关心你的人,你会找到一种让他们快乐的方法,同时逐渐挑战他们.
我从@duffymo的建议中看出这个问题
最好尝试并从根本上真正理解问题,并将其重新表达为面向对象的系统
如果您正在进行任何BAU更改,那么在编写新OO系统的LONG项目生命周期中,您最终会编码并测试双倍的更改.这是NACA方法的主要好处.我有一些将Client-Server应用程序迁移到Web实现的经验,这是我们遇到的主要问题之一,由于BAU更改而不断变换需求.它使PM和日程安排成为一项真正的挑战.
感谢@hhafez,他的经验很好地被认为是"相似但略有不同",并且从Ada到Java的自动代码迁移有着相当令人满意的体验.
感谢@Didier的贡献,我还在研究你的方法,如果我有任何Q,我会告诉你一句话.