1959 年首次发布的 COBOL 是现存最古老的编程语言之一,目前仍广泛应用于多个行业的关键程序之中。2022 年 2 月的一项调查发现,每天仍有 775 亿至 8500 亿行 COBOL 代码在活跃地使用。
然而,尽管许多组织尚依赖 COBOL,但 COBOL 开发人员的数量仍在持续减少。更令人担忧的是,当现有的 COBOL 开发人员退休和转移时,有关如何构建和构建 COBOL 应用程序的实际知识也可能会逐渐丢失。为了应对这一挑战,初创公司 Phase Change Software 正在开发的一种名为 COBOL Colleague 的新型 AI 驱动工具。
Phase Change Software 总裁 Steve Brothers 称,COBOL 不会很快消失;并向外媒 VentureBeat 表示,COBOL 开发人员的欠缺并不是最根本的问题。“真正的潜在问题是了解应用程序的功能,因为要有效地修改代码,你需要了解代码的功能”。他补充称,仅仅拥有修改代码的能力是不够的,还需要的是关于代码的知识;相关代码知识的缺失是许多编程语言中都存在的一个问题,但对于已经 60 多岁的 COBOL 来说尤其严重。
Phase Change COBOL Colleague 软件采用了 COBOL 源代码,并使用符号机器学习和静态分析技术将代码转换为因果模型。然后,该模型可以帮助组织理解和维护代码。COBOL Colleague 最初可用于在 Linux 上运行的 on-premises 环境中部署。
值得一提的是,当下市场中声称使用 AI 来帮助开发人员提高效率的开发工具不在少数,其中就包括近期热度颇高的 GitHub Copilot service。对此,Brothers 则表示,他们正在构建的工具与 GitHub Copilot 非常不同。Copilot 旨在帮助开发人员编写代码,但它并不能帮助开发人员在编写代码后对其进行维护。“我们从事的是改变代码的业务,而不是创建代码的业务,这是最大的不同之一”。
Phase Change Software 没有为他们这一 AI 工具采用典型的机器学习方法,即需要在数据集上进行训练。原因在于,当涉及到源代码时,想要获得足够大的源代码存储库以便能够进行训练并不容易。
另一个挑战是路径爆炸。在代码开发中,一个操作可以通过使用不同的“else”函数沿着任意数量的不同路径进行。使用“else”函数,操作可以根据不同的变量或条件而改变。而对于训练数据路径爆炸的可能性,Brothers 指出,排列后的数量就是一个天文数字,因此对于典型的机器学习训练模型来说是不可行的。
“我们用围绕符号机器学习的人工智能技术解决了这个问题,所以没有训练数据集;我们工具的唯一输入是源代码”。符号人工智能(Symbolic AI)就是以一种更接近人类如何以因果方式推理世界的方法来学习。Brothers 解释道,代码中的行为是因果关系,有输入和输出。
虽然 COBOL 是 Phase Change 的第一个目标,但该公司表示,计划以后将继续扩展以支持其他编程语言。“软件开发人员花费 80% 的时间试图找出他们需要在代码中进行修改的位置。无论是哪种编程语言如何,执行此操作的步骤都是相同的,这就是我们正在实现的自动化。”