Java 真的会成为下一个 COBOL 吗?
当我们对新事物痴迷时,很容易忘记旧事物陪伴我们的时光。以 COBOL 为例。这门受人尊敬的编程语言本月将迎来 60 岁的生日,正如 Steven J. Vaughan-Nichols 所写,它很可能“比我们所有人都要长寿”。
事实上,COBOL 提供了一个很好的示例,它展示了我们行业的真实增长速度,同时它也可能提供了一些线索,来说明未来什么会成为 COBOL。是 Java 和 SQL 中的一个吗?又或者是 Python ?
COBOL 的主力
阅读这篇文章的大多数人在 1959 年几乎都还没有出生的,那一年 Mary Hawes 提出了 COBOL (Common Business-Oriented Language,面向商业的通用语言)的概念,Grace Hopper(和其他人一起)随后使其正式化并加以改进。正如 Vaughan-Nichols 所提到的那样,Hawes 的目标是创造“一个类似英语的词汇表,可以在不同的计算机上执行基本的业务任务”,这是一种真正的与供应商无关的语言。
Micro Focus (维护 COBOL 的公司)在与 Vaughan-Nichols 的一次谈话中说到,虽然 COBOL 的年轻时代在 20 世纪 80 年代已经逐渐消失了,但它却支撑着全球 70% 的事务处理操作。从自动取款机中取钱?你在用 COBOL。支付抵押贷款?也是用 COBOL。打电话给呼叫中心?没错,那也是 COBOL。即使是假期预订,也完全依赖于 COBOL。
一般认为 COBOL 已经废弃了几十年,但是 2200 亿行 COBOL 仍然存在于我们生活里的大型机中。据软件工程研究中心 Lero 称,2014 年 COBOL 程序的事务处理数比谷歌搜索高出了 200 倍,使其相形见绌。
谷歌会迎头赶上吗?
COBOL 可不是在大型机上苟延残喘的老糊涂。除了易读之外,这门语言还与它的旁观者保持着联系。如今,COBOL 与 Docker 容器、Java 相结合,可以运行在云、Linux、Windows 上,或是运行在任何地方的任何东西上。它是一种高度可管理的语言,允许程序员专注于编写应用程序,而 COBOL 则负责处理底层操作系统的复杂性。
如今,COBOL 最大的风险是越来越难找到合格的程序员了。考虑到替换基于 COBOL 系统的成本和风险,这种语言可能还有几十年的时间要和我们一起共存,但这并不意味着开发人员从小梦想着编写的第一个程序是 COBOL 程序。这是一个谜题,但不是我打算在这篇文章中要解决的。(对不起!)
另外,纵观 COBOL 60 年的历史,让我思考今天的哪些语言可能成为明天的“COBOL”。也就是说,还有哪些语言 / 技术会在众多未来技术的背后继续存在?
未来 COBOL 之今日
当然,未来很难预测,但对于 SQL、Python 和 Java 来说,有很多很好的例子。Dave Kellogg 多年来一直宣称 SQL 是新一代的 COBOL。从持久性和它已经过时的知识而言,这可能是真的,但这种类比最终会消失。只有一个 COBOL。尽管 SQL 声称它具有一致性,但它会根据数据库提供者的不同而使用不同的方言。虽然这并没有阻止 SQL 的发展(而且它在未来几十年内肯定还会很重要),但它并不像是 COBOL 的同类。
当然不像 Java 那样
Java 与 COBOL 一样,也是很容易读写的。就像 COBOL 一样,Java 也保持了其现代性。每当 Java 看起来要消失的时候,就会有什么东西使它活跃起来。根据 Brian Leroux 的说法,Android 肯定对 Java 的持续保持其重要性起了至关重要的作用。不久之后,大数据又让 Java 死灰复燃。正如 Nitin Borwankar 所强调的那样:
“由于 Hadoop 和整个数据科学生态系统(包括 Hive、HBase、Spark、Cassandra、Kafka 和 JVM 语言,如 Groovy 和 Clojure),Java 迎来了第二春。所有这些都不会很快消失。”
事实上,和 COBOL 一样,我们可能看到 Java 被刻在我们墓碑上的一个主要原因是,正如 Jonathan Eunice 所写的那样,Java“被广泛深入地部署在了关键应用程序中,因此值得对它进行系统性的批判。”随着越来越多的公司将 Java 嵌入到他们最关键的应用程序中,Java 就越不可能被分割和取代。这样做可以降低成本和风险。
同样地,Python 可以很好地决定它的持久力。在 Lauren Cooney 看来,Python 将继续存在下去,因为它是一种“GSD(get stuff done,完成任务)语言且是一种很酷的语言。”它“不花哨”。它就是“有用”。更重要的是,像 Java 一样,Python 也越来越成为现代数据科学的基础。此外,它很可能会成为未来支撑经济系统的事务性工作负载(如前所述,这也是 COBOL 今天仍然很酷的一个重要原因)。
别的呢?好吧,还有一个不是那么随便的答案,那就是 COBOL 也许是未来的 COBOL。正如 Andrew Oliver 所说,
几年前我说过 Java 是未来的 COBOL。每个人都用奇怪地眼光看我。但我认为这就是未来。
一幅有趣的 Java 与 COBOL 对比图