旧的挑战再次出现。在本周的命令行英雄播客(第 3 季,第 5 集)中,这个想法带着编程语言和平台的转变而来。
COBOL 主导大型机
计算机科学领域最杰出的人才之一是格蕾丝·穆雷·霍珀。每次我们不必用二进制代码与计算机对话时,我都建议大声说:“谢谢你,格蕾丝·穆雷·霍珀海军少将。” 下次试试看,因为她是第一个编译器(将编程代码翻译成机器语言的软件)的发明者。
编者注:本文此前声明 COBOL 是第一种编译语言,但事实并非如此。阅读更多关于编译语言的早期发展。
霍珀对于高级编程语言(包括 COBOL)的发明和采用至关重要。她在 1959 年帮助创建了面向商业的通用语言(简称 COBOL)。正如 Ritika Trikha 在 HackerRank 上所说
“COBOL 之母格蕾丝·霍珀帮助倡导创建了这种全新的编程语言,旨在跨所有业务系统运行,从而节省了大量时间和金钱。霍珀也是第一个认为编程语言应该像英语一样阅读,而不是计算机术语的人。因此,COBOL 的语法如此冗长。但这有助于在计算密集且仅在研究机构中普遍存在的时代,使企业的计算过程人性化。”
在 1960 年代初期,大型机是一种共享强大计算能力的全新架构。在大型机计算时代,COBOL 主导了整个领域。
当今世界的 COBOL
但今天又如何呢?随着大型机的衰落以及为网络和云设计的新型创新语言的兴起,COBOL 处于什么位置?
正如上周的命令行英雄剧集中提到的,在 1990 年代后期,Perl(以及 JavaScript 和 C++)超越了 COBOL。并且,正如 Perl 的创建者 Larry Wall 当时所说:“COBOL 现在没什么大不了的,因为出于某种奇怪的原因,对 COBOL 的需求似乎正在下降。”
快进到 2019 年,COBOL 远未“衰落”。正如 David Cassel 在 2017 年 The New Stack 上写道
“路透社 4 月报道,约 95% 的 ATM 刷卡使用 COBOL 代码,这种有 58 年历史的语言甚至驱动了 80% 的面对面交易。事实上,路透社计算出,目前仍在生产中使用的 COBOL 代码仍有 2200 亿行,而且每天,COBOL 系统处理 3 万亿美元的商业交易。”
鉴于 COBOL 在商业世界中的持续重要性,掌握 COBOL 可能是一个很好的职业发展方向。由于精通该语言的人数有限,顶级的 COBOL 程序员有望获得六位数的收入。
Go 目前在云端占据主导地位
COBOL 早期统治地位的故事对我来说似曾相识。如果我们调查一下这个云计算时代最有影响力的项目,你很难忽略掉处于领先地位的 Go。Kubernetes 及其大部分相关技术(从 Etcd 到 Prometheus)都是用 Go 编写的。正如 RedMonk 在 2014 年探讨的那样
“Go 正在迅速逼近提交总数的 1% 和项目及贡献者人数的 0.5%。虽然这种趋势显然很有趣,但乍一看,远低于百分之一的数字相对于总体采用率来说微不足道。然而,为了提供一些背景信息,Ohloh 上最流行的语言(C、C++、Java、JavaScript)仅占提交数的约 10% 和项目及贡献者人数的约 5%。这意味着 Go 这个看似非常小的参与者,在 FOSS 中的使用量已经接近现有最流行语言的十分之一。”
在我之前的两份工作中,我的团队用 Go (重新) 编写了基础设施软件,成为这股巨大浪潮的一部分。有影响力的项目继续存在于 Go 可以填补的空间中,正如 Uday Hiwarale 在 2018 年很好地解释的那样
“使 Go 成为一种出色语言的因素 [是] 其简单的并发模型、其基于包的代码管理以及其非严格(类型推断)的类型系统。Go 不支持开箱即用的面向对象编程体验,但 [其] 支持结构(structs)……,在方法和指针的帮助下,可以帮助我们实现相同的 [结果]。”
在我看来,Go 可能正在追随 COBOL 的脚步,但关于它的未来走向仍然存在疑问。2019 年 6 月,RedMonk 将 Go 排名第 16 位,其未来可能朝任何方向发展。
Go 可以从 COBOL 中学习什么?
如果 Go 能够预见它的未来,它会像 COBOL 一样,拥有如此持久的影响力吗?
命令行英雄本季讲述的故事说明了语言是如何诞生的,社区是如何围绕它们形成的,它们是如何流行和标准化的,以及有些语言是如何逐渐衰落的。我们可以从编程语言的生命周期中学到什么?它们有相似的弧线吗?还是它们有所不同?
我认为这个播客非常值得订阅,这样你就不会错过任何一集。我很想在下面的评论中听到你的想法。
5 条评论