《Slashdot》上最近的一篇文章有些懊恼地指出,美国国土安全部和退伍军人事务部仍在继续使用 COBOL,这种语言最初由已故海军少将 Grace Hopper 于 1959 年根据其研究成果发明。这意味着——而且在 IT 社区中已经流传多年——COBOL 是一种完全过时的语言。事实并非如此!1997 年,Gartner Group 报告称,全球 80% 的商业运营都依赖 COBOL,而 Computerworld 在 2006 年和 2012 年的调查发现,超过 60% 的大型金融机构使用 COBOL(实际上比使用 C++ 这种更新的语言的机构还多),并且其中一半机构的大部分内部代码都使用 COBOL。COBOL 标准一直在不断更新,最近一次修订是在 2014 年。
当然,使用像 COBOL 这样历史悠久的技术也存在一些问题;最值得注意的是,几乎没有大学或学院的 IT 课程再教授这门语言了,而且能够使用它的程序员群体正在“老化”并退休。我在大学里学过 COBOL,并在我的第一份专业工作中使用了它,但现在我四十多岁了,对于 COBOL 圈子里的其他人来说,我还是有点年轻。此外,大多数 COBOL 编译器的供应商维护服务越来越稀少,甚至完全停止了。
但是,如果您想深入研究 COBOL,那么有一个开源编译器。GnuCOBOL,最初于 2002 年作为 OpenCOBOL 发布。2013 年,1.1 版本更名为 GnuCOBOL,并且根据核心开发团队的说法,2 版本“即将发布预发行版”。GnuCOBOL 在 GPL 许可下获得许可,运行时库在 LGPL 许可下获得许可,因此它可用于任何环境中的生产代码。这里有一个活跃的用户和开发者社区,并且文档非常详尽。GnuCOBOL 项目正努力与 COBOL 2014 规范保持一致,并纳入商业编译器中常见的非标准功能。开发者不声称达到任何特定的标准符合性水平,但当前版本通过了国家标准与技术研究院为 COBOL 85 测试套件设计的 9000 多个测试。
严格来说,GnuCOBOL 系统是一个转译器;它将 COBOL 语句转换为 C 代码,然后在系统上使用 GNU C 编译器进行编译。因此,GnuCOBOL 与几乎任何可以使用 GNU C 的系统兼容——几乎任何 Unix 或 Linux 系统、Windows,甚至 Android 和 iOS。GnuCOBOL 编译器已被证明可在生产环境中使用,从大多数大型机操作系统到 Linux 系统的移植工作量极小。COBOL 的一个特点是代码块的 ENVIRONMENT 部分,您可以在其中告诉编译器一些关于它所运行的系统的信息;在大多数情况下,转换为 Linux 系统需要在 ENVIRONMENT 块中进行大量更改,但几乎所有其他内容都可以正常工作。
COBOL 过去是,现在仍然是一种完全不同的编程方法,即使在它的鼎盛时期,大多数计算机科学家也没有参与其中。COBOL 需要对数据声明进行大量思考,并且为了避免真正混乱的代码,需要对执行路径进行思考。它并不“糟糕”,尽管许多学术计算机科学家会告诉你它是——只是不同而已。我实际上很享受我的 COBOL 工作,尽管它是一种输入量很大的语言。我偶尔会感到有点怀旧,并窥探一下 COBOL 世界正在发生的事情。人们实际上已经为 COBOL 编写了 Web 兼容性工具和框架、面向对象编程、JSON 处理库以及许多其他现代工具。
多年来,IT 社区一直称 COBOL “已死”,但随着像 GnuCOBOL 这样的项目出现,它仍然非常活跃,保留了遗留功能,并开发了新工具。
25 条评论