池建强的公开课

讲讲咱互联网行业自己的故事

个人成长,观点,认知, 软技能

池建强 极客时间创始人、墨问西东创始人

第249期 | “上古语言”COBOL 还有春天?

讲述:池建强 大小:6.90MB 时长:00:07:11
00:00
1.0×

你好,这里是卖桃者说,今天和你聊一门非常古老的编程语言,COBOL。

COBOL 是 Common Business Oriented Language(通用商业语言)的缩写,它是一种面向过程的高级程序设计语言,主要用于数据处理。估计很多程序员都没听说过这门编程语言,即便听过,也很少能看到谁在使用。原因就在于,它实在是太过古老和低级。

有多古老呢?这门语言正式创建于 1959 年,今年已经 61 岁高龄了,仅比汇编语言“年轻”10 岁。有多低级呢?引用 COBOL 经典语录中的一条:1000 行代码实现一个小需求。

这样一门编程语言,它的鼎盛时期其实是在上个世纪 70 年代,后来逐渐被 C、C++、Java 等更高级的语言所取代。不过,最近一则消息又让这门“上古语言”重新回到了大家的视野中。

4 月初,美国新泽西州州长菲尔·墨菲(Phil Murphy)在新闻发布会上紧急招聘精通 COBOL 的程序员,时薪为 55-85 美元。据说,新泽西州政府处理失业登记的系统是 40 多年前使用 COBOL 编写的,受疫情影响,当地失业人数暴增,系统不堪重负,因此急需程序员维护。

而此时,精通 COBOL 的程序员大都已年过六旬,因此有不少网友调侃,“我等这个消息等了一辈子”、“退休程序员可以再就业了”。

虽然 COBOL 又老又低级,但直到今天,它始终没有完全退出历史舞台。在美国,很多重要的领域仍在使用 COBOL 程序,比如政府部门、银行和保险公司等等。

路透社 2017 年的一项调查发现,在全球范围内,有 2200 亿行 COBOL 代码仍在运行。另外根据咨询公司 COBOL Cowboys 的数据,《财富》500 强企业中,90% 的公司仍在使用 COBOL 代码。

维护 COBOL 的公司 Micro Focus 曾在 2019 年接受 ZDNet 采访时提到:“虽然很难准确地确定市场规模,但 COBOL 确实支撑着全球 70% 的事务处理操作。这意味着,每当你转移资金、检查账户、与政府部门联系,或是在线购买商品、预订假期、买卖股票等等,都表明你正在与 COBOL 进行互动。”

在最近几十年里,不断有专家提议更换基于 COBOL 的系统,但出于成本和风险的考量,COBOL 始终活跃在一线。毕竟,COBOL 是第一种真正的商业编程语言,甚至在其诞生后的 20 年里,仍然是商业语言的首选。虽然它不够好用,但起码能用,而且还足够安全。另一方面,无论是重写还是迁移,代价都是相当巨大的。

从发展的角度来看,我不建议你学习 COBOL,但可以了解下这门语言的历史、特点以及编程思想。

COBOL 诞生于 1959 年,当时,玛丽·霍斯(Mary Hawes)看到了市场对计算机语言的需求,提议创建一种新的编程语言。这门语言会有类似英语的词汇表,并且可以在不同的计算机上进行使用。

这个想法很快得到了“计算机软件工程第一夫人”格雷丝·霍珀(Grace Hopper)的支持,霍珀提议,可以向美国国防部寻求资助,并将其纳为该语言的潜在客户。

1959 年 5 月,在五角大楼的支持下,团队成立了一个临时委员会。委员会借鉴了霍珀早期创建的汇编语言 Flow-Matic,确定了 COBOL 编写的程序应该类似于普通英语。此外,委员会还制定了 COBOL 指南,希望这门语言能简单一些,便于大型机编程。

当时,COBOL 确实做到了简单,只是在今天看来,异常复杂笨重,饱受诟病。不同的时间维度下,不能用现在的标准去看待几十年前的事情。

到了 1959 年 9 月份,COBOL 的基本语法已经确定。它采用 300 多个英语单词作为保留字,以一种接近于英语书面语言的形式,来描述数据特性和数据处理过程。

1960 年 12 月,COBOL 程序已经可以在两个不同供应商的计算机上运行,这足以证明,它是真正可互操作的。同时也意味着,COBOL 正式成为第一种真正的商业编程语言。直到 1980 年,COBOL 仍相当受欢迎。

具体来看,COBOL 语言主要有 4 个特点:

  1. 面向文件。COBOL 语言是一种典型的按文件系统方式进行数据处理的语言。
  2. 接近英语自然语言。COBOL 语言中大量采用普通英语词汇和句型。
  3. 通用性强。在 COBOL 程序中,数据、运行环境和处理过程是分别单独描述的。
  4. 功能模块化。在标准 COBOL 文本中实现功能模块化,它对每一种功能模块的特性、语义及限制都做了严格的规定。

虽然一度风头无两,但“长江后浪推前浪”,总有更优秀的语言取代它。至于 COBOL 是否还有未来,我觉得起码还能坚挺个几十年。一方面,相当多的大型机还在依靠 COBOL,迁移需要时间;另一方面,COBOL 可以与 Docker 容器、Java 相结合,运行在云、Linux、Windows 上,或是运行在任何地方的任何设备上。

但就进化而言,COBOL 似乎已经走到了尽头。正如“硅谷创业之父”保罗·格雷厄姆(Paul Graham)在《黑客与画家》中所说:

“我认为,编程语言就像生物物种一样,存在一个进化的脉络,许许多多分支最终都会成为进化的死胡同。这种现象已经发生了。Cobol 语言曾经流行一时,但是现在看来没有任何后续语言继承它的思想。它就像尼安德特人一样,进化之路已经走到了尽头。”

最后留个小作业,在 COBOL 身上,你能学到什么呢?现代编程语言中,你最喜欢的是哪一门语言?

好,今天的话题就先聊到这儿。卖桃者说,明天见。

(编辑:夏天)