Migrating Esope to Fortran 2008 using model transformations
本文提出了一种模型驱动工程方法和工具,该方法能够自动将带有专有 Esope 扩展的遗留 FORTRAN 77 代码迁移为可读的 Fortran 2008,同时保持原有的抽象层级。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你拥有一座巨大且极其珍贵的旧书库,书里记录着一种已经失传了几十年的语言。这些书包含了核电站的设计蓝图,而且至今依然完美运行。然而,用来阅读这些书的“印刷机”(计算机编译器)正在老化,而现代的新型印刷机无法理解这些旧书中使用的特定、古怪的指令。
这就是 Esope 与 Fortran 77 的故事。
问题所在:带有“小抄”的语言
在 20 世纪 80 年代,一家名为 Framatome 的公司的程序员需要构建复杂的系统。他们使用的语言是 Fortran 77:它就像一个非常严谨、老派的会计——擅长数学,但极其不擅长组织数据。它无法轻松创建灵活的列表,也无法管理内存(比如随着文件增加而自动增长的数字档案柜)。
为了解决这个问题,他们发明了 Esope。你可以把 Esope 看作是一个位于 Fortran 77 之上的专门翻译官或“小抄”层。它允许程序员说:“创建一个动态的书籍列表”,然后翻译官会秘密地将这句话转化为一堆低层级、杂乱的指令,以便让 Fortran 77 能够理解。
代价:
现代计算机编译器已经变得非常聪明,它们不再喜欢这些“小抄”了。它们虽然仍能读取这些代码,但无法对其进行优化(使其运行得更快),因为这些技巧会让编译器感到困惑。这就像试图驾驶一辆轮子上缠绕着沉重铁链的法拉利——它能动,但速度很慢,而且引擎未来可能会损坏。
使命:搬迁到新家
Framatome 的团队需要将这些关键系统从旧的、生锈的房子(Fortran 77 + Esope)搬迁到一座全新的、现代化的豪宅(Fortran 2008)。
Fortran 2008 属于同一个语言家族,但是它的现代版本。它内置了那些曾经需要靠 Esope 来伪造的功能。这就像豪宅本身就配备了高科技的内置档案系统,因此你不再需要那份“小抄”了。
挑战:
你不能直接复制粘贴这些书。那些“小抄”指令(Esope 命令)在新的房子里并不存在。如果你只是进行逐字翻译,代码将会变成一堆混乱的低层级内存管理代码,没人能理解或修复它。目标是翻译想法(逻辑),同时丢弃旧的机械装置(低层级技巧)。
解决方案:机器人建筑师
作者们(Younoussa Sow 及其团队)建造了一个机器人建筑师来完成这次搬迁。他们不仅仅使用了一个简单的“查找并替换”工具;他们使用了一种称为**模型驱动工程(Model-Driven Engineering)**的高级方法。
以下是他们的机器人如何工作的(使用类比):
阅读蓝图(模型):
机器人不是直接阅读原始代码文本,而是首先将代码转化为一个 3D 建筑模型。它理解其结构:“这是一个用户”、“这是一本书”、“这是一个指针”。它暂时忽略了杂乱的语法,转而关注数据的形状。转换(翻修):
机器人获取这个旧模型,并应用一套规则来为新家进行重建。- “双重间接引用”技巧: 在旧系统中,Esope 使用了一个巧妙的技巧,以确保如果一个列表增长,列表的地址不会改变(这样就不会迷路)。机器人必须使用现代 Fortran 工具来重现这种魔力,确保如果开发者调整列表大小,他们不必担心指针失效。
- 数据的“图”结构: 旧代码拥有复杂的相互指向的数据网。机器人使用现代的“派生类型”(类似于自定义容器)重建了这些网络,使它们能自然地融入新系统。
- 清理工作: 机器人移除了旧的、混乱的习惯,比如“隐式类型”(即由计算机猜测变量类型),并强制要求所有内容都必须清晰标注,使代码更安全、更易读。
输出(新家):
机器人将新模型导出为 Fortran 2008 代码。- 可读性: 新代码看起来是简洁、现代的 Fortran,而不是一堆低层级的内存地址。
- 可扩展性: 即使一行旧代码变成了 100 行新代码(因为新系统更加显式),机器人也能自动处理。
- 可追溯性: 如果机器人必须添加注释来解释它更改了什么,它会清晰地标注出来,以便人类了解发生了什么。
结果:一个更快、更整洁的家
团队在一个“书店”模拟实验(管理用户、书籍和借阅)中测试了他们的机器人。
- 速度: 新的 Fortran 2008 代码比旧的 Esope 版本运行速度快了 3 倍。
- 内存: 它使用的内存更少。
- 可靠性: 它产生了与旧系统完全相同的结果,证明了这种“翻译”是完美的。
核心结论
本文表明,你可以将一个建立在“小抄”(Esope)之上的遗留系统,自动迁移到现代、稳健的标准(Fortran 2008)之上,而不会丢失原始逻辑或破坏系统。
他们不仅仅是修复了代码;他们升级了整个基础。结果是一个更快、更安全、且准备好再生存数十年的系统,而无需开发人员手动重写数百万行代码。这位“机器人建筑师”承担了繁重的体力活,让工程师们能够专注于业务逻辑,而不是纠结于过去那些尘封且破碎的机械装置。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。