COBOL(通用面向业务的语言)是最古老的编程语言之一,其历史可以追溯到 1959 年左右。根据 2022 年的一项调查,生产系统中使用的 COBOL 行数超过 8000 亿行,高于 2017 年估计的 2200 亿行。
但 COBOL 因难以驾驭、效率低下而闻名。为什么不迁移到较新的版本呢?对于大型组织来说,鉴于世界上 COBOL 专家数量较少,这往往是一个复杂且成本高昂的提议。澳大利亚联邦银行于 2012 年更换其核心 COBOL 平台时,花了五年时间,耗资超过 7 亿美元。
为了针对 COBOL 应用程序现代化问题提供新的解决方案,IBM 今天推出了IBM Z 的 Code Assistant,它使用代码生成 AI 模型将 COBOL 代码转换为 Java。IBM Z 的 Code Assistant 将于 2023 年第四季度全面上市,并将于今年 9 月初在拉斯维加斯举行的 IBM TechXchange 会议期间进入预览版。
IBM Research 首席科学家 Ruchir Puri 表示,IBM Z 的 Code Assistant 旨在帮助企业重构其大型机应用程序,最好同时保持性能和安全性。Code Assistant 在本地配置中本地运行或作为托管服务在云中运行,由代码生成模型 CodeNet 提供支持,该模型不仅可以理解 COBOL 和 Java,还可以理解大约 80 种不同的编程语言。
“IBM 构建了一个新的、最先进的生成式 AI 代码模型,将传统 COBOL 程序转换为企业 Java,生成的代码具有高度自然性,”Puri 在电子邮件采访中告诉 TechCrunch。“除了代码转换之外,Code Assistant还支持完整的应用程序现代化生命周期,并帮助开发人员理解、重构、转换和验证现代架构中的翻译代码。”
Puri 表示,CodeNet 使用 1.5 万亿个令牌进行训练,拥有 200 亿个参数,并采用大型上下文窗口(32,000 个令牌)进行设计,以“捕获更广泛的上下文”,以实现“更高效的 COBOL 到 Java 转换”。参数是从历史训练数据中学习的模型的一部分,本质上定义了模型处理问题的技能,例如生成文本,而标记代表原始文本(例如单词的“fan”、“tas”和“tic”) “极好的”)。至于上下文窗口,它是指模型在生成附加文本之前考虑的文本。
现在有许多工具、应用程序和服务可以将 COBOL 应用程序转换为 Java 语法,其中一些是完全自动化的。Puri 承认这一点,但他指出,Code Assistant 采取措施避免牺牲 COBOL 的功能,同时降低成本并生成易于维护的代码,这与市场上的一些竞争对手产品不同。
“IBM 为 IBM Z 构建了 Code Assistant,以便能够混合搭配 COBOL 和 Java 服务,”Puri 说。“如果系统的‘理解’和‘重构’功能建议应用程序的给定子服务需要保留在 COBOL 中,那么它将保持这种方式,而其他子服务将转换为 Java。 ”
这并不是说 Code Assistant 是完美无缺的。斯坦福大学最近的一项研究发现,使用类似的代码生成人工智能系统的软件工程师更有可能在他们开发的应用程序中导致漏洞。事实上,Puri 警告不要在人类专家审查之前部署由 Code Assistant 生成的代码。
“与任何人工智能系统一样,企业的COBOL应用程序可能存在独特的使用模式,IBM Z 的 Code Assistant 可能尚未掌握,”Puri 说。“使用最先进的漏洞扫描器扫描代码以确保代码安全至关重要。”
撇开风险不谈,IBM 无疑认为 Code Assistant 等工具对其未来的增长非常重要。如今,大约84% 的 IBM 大型机客户都运行 COBOL——主要是金融和政府部门的客户。尽管IBM 的大型机部门仍占其整体业务的很大一部分,但该公司将大型机视为通向广阔、利润丰厚的混合计算环境的桥梁,该环境也由IBM 托管和促进。
IBM 也看到了更广泛的代码生成 AI 工具的未来,打算与GitHub Copilot和 Amazon CodeWhisperer等应用程序竞争。今年 5 月,IBM 在其Watsonx AI 服务中推出了 fm.model.code ,该服务为 Watson Code Assistant 提供支持,允许开发人员使用简单的英语提示跨程序(包括 Red Hat 的 Ansible Lightspeed)生成代码。