导读:用在IT基础设施中的语言是没有有效期的。COBOL已经存在了60年——而且不会很快消失。我们为大型机维护了数十亿行经典代码。但我们也在用Go等语言为云构建新的基础设施。本文字数:,阅读时长大约:18分钟作者:RedHat译者:messon
什么是《代码英雄》
代码英雄(CommandLineHeroes)是世界领先的企业开源软件解决方案供应商红帽(RedHat)精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。
本文是《代码英雄》系列播客《代码英雄》第三季第五集:基础架构效应的音频脚本。
导语:用在IT基础设施中的语言是没有有效期的。COBOL已经存在了60年——而且不会很快消失。我们为大型机维护了数十亿行经典代码。但我们也在用Go等语言为云构建新的基础设施。
COBOL是计算机的一次巨大飞跃,让各行各业变得更加高效。ChrisShort介绍了学习COBOL是如何被视为安全的长期投注的。60年后的今天,还有数十亿行并不容易被替换掉的COBOL代码——懂这门语言的专家也很少。RitikaTrikha解释说,有些事情必须改变。要么更多的人必须学习COBOL,要么依赖COBOL的行业必须更新他们的代码库。这两个选择都很困难。但未来并不是用COBOL编写的。今天的IT基础架构是在云端构建的,其中很多是用Go编写的。CarmenHernándezAndoh分享了Go的设计者是如何想要设计一种更适合云计算的语言。KelseyHightower指出,语言通常都是超专注于一种任务。但它们正变得越来越开放和灵活。
00:00:00-SaronYitbarek:
年,纽约市地铁首次开始运营时,它被惊叹为现代的一个奇迹。但是……当今天的通勤者仍依赖一个多世纪前设计的基础设施时,会发生什么?列车挤满了人,而且常常晚点。纽约每年有20亿人次地铁出行,再也没有人为此感到惊叹了。我们还在依赖昨日的过时基础设施,我们必须找到新的好办法,让它发挥作用。
00:00:44:
过去,基础设施项目通常是些可见的大而具体的事物,例如地铁。而且由于这种物理可见性,它们损坏时也显而易见。高速公路开裂、电线杆倒下,我们很清楚这些东西何时需要维修。为了使我们的生活与老化的基础设施保持协调,大量的工作是必不可少的。
00:01:12:
但是事物并不总是那么一是一、二是二。如今,我们还拥有IT基础设施,在偏僻地区嗡嗡作响的服务器农场,跨越海洋的光纤电缆,还有软件基础设施。而像遗留的操作系统或没人敢替换的shell脚本,这些IT基础设施变得陈旧和破旧时,我们是无法看出的。但是,造就了今日发展的基础设施却正在老化,就像旧的地铁轨道一样。这可能会扰乱我们的现代生活。如今命令行英雄们正努力确保我们不会被过去束缚,因此出现了大量新的挑战。
00:02:02:
这是我们第三季进入编程语言世界探索的第5期。我们将研究两种编程语言,它们与最初设计的目标基础设施密切相关。COBOL是一种大型机的原生语言,而Go是云计算的原生语言。它们都深受其起源的影响。理解这一点可能会让明天的开发者不至于像纽约人一样被塞进宾夕法尼亚州的车站。
00:02:33:
我是SaronYitbarek,这里是红帽的原创播客,《命令行英雄》的第三季。
00:02:43-格蕾丝·赫柏(GraceHopper):
我们面前有很多事情需要去做,但是我们首先需要大量相关的且易于访问的信息。我们才刚刚开始。
00:02:53-SaronYitbarek:
海*上将格蕾丝·赫柏(GraceHopper)在20世纪40、50年代率先开发了高级编程语言。而她之所以能够实现这种巨大的飞跃,是因为当时的基础设施,大型计算机。
00:03:08-ChrisShort:
嗨,我叫ChrisShort。
00:03:10-SaronYitbarek:
Chris是红帽的首席产品营销经理,而且他也是一位历史爱好者。
00:03:17-ChrisShort:
上世纪40年代的赫柏上将创造了FLOW-MATIC,这在当时是革命性的,她被广泛认为是COBOL的祖母。因此,她能够坐在那里说:“嘿,只需将其放在大型机上”,或“嘿,只需将其存储在大型机上”即可。
00:03:31-SaronYitbarek:
这是一个重大的游戏规则改变。突然,你有了这种机器无关的语言,即COBOL,它是大型机环境特有的。可能性开始逐步打开。
00:03:42-ChrisShort:
大型机和COBOL真正使得每个组织能够说,它们不再需要充满了带着铅笔、纸、计算器和滑尺的人的办公室,他们可能只需要半个办公室来安装大型机。然后,他们可以雇人用COBOL来编写一些应用程序来完成整个财务团队做的所有的数学、逻辑运算以及账目。因此,你需要的财务团队人数少了,仅仅是因为更多的输入可以被数字化,而不是全手动操作。
00:04:17-SaronYitbarek:
如果你是那些新来的COBOL程序员之一,你会觉得你有了一份终身的工作。因为你的工作所基于的基础设施——所有那些大型机——始终会在那里。
00:04:30-ChrisShort:
那时侯摩尔定律还未出现,所以你可以整整十年都在同一个大型机上工作,对吧?就像你不用去考虑下一个操作系统,或者下一个类型的容器编排器,又或者下一个出现AI之类的东西一样。你可能会整个职业生涯都在从事COBOL。而且你知道自己的生活将会非常稳定。
00:04:55-SaronYitbarek:
但是,摩尔定律最终还是来了。新的基础设施也出现了。现如今,程序员不太可能去学习一种半个世纪前的旧语言。但实际上,那些老旧的大型机其实并没有消失。这意味着我们对COBOL开发人员的需求也没有消失。
00:05:17-ChrisShort:
寻找COBOL开发者变得越来越困难。最终会发生的事情是这些大型机可能已经存在了50年。这些仍然可以编写出色COBOL程序的开发人员将获得巨额收入,以帮助项目运行并完成大型机中的数据重组。而且,该技能肯定会绝迹,并且正在成为一个利润丰厚的职业领域,如果你……现在写COBOL绝对可以赚很多钱。
00:05:49-SaronYitbarek:
尤其是在制造业和金融业。你无法超越几十年前建立的所有基础设施。遗留代码遍及全球。忽略这些老旧的基础设施及其相关的语言,将是一个巨大的错误。
00:06:08-ChrisShort:
有两千亿行代码摆在那里,要重构这些代码真的很难。不,我不认为在有生之年我们会看到它消失,真的。
00:06:21-SaronYitbarek:
ChrisShort是红帽的首席产品营销经理。
00:06:28:
我想花一秒钟解释一下Chris的观点。你想想看,95%的ATM交易中都有COBOL代码,那就是我们与这种语言的联系。但是,COBOL程序员的平均年龄并不比该语言年轻多少。他们45岁,或许55岁。新人们并不感兴趣这门语言。这就是为什么我想向你介绍一个人。
00:06:56-RitikaTrikha:
嘿,我是RitikaTrikha。
00:06:59-SaronYitbarek:
Ritika是一名技术编辑,曾在HackerRank工作。她对COBOL的这个问题着迷:人们认为COBOL是后大型机时代无意义的残留品。
00:07:12-RitikaTrikha:
如今的开发人员根本不会考虑COBOL了,见也没见过,想也没想过。
00:07:17-SaronYitbarek:
但这可能是灾难的根源。
00:07:21-RitikaTrikha:
如今,仍然有大量的COBOL代码在驱动企业的业务。每年至少新增15亿行COBOL新代码。我认为当你看特定行业时,真的很有意思。就像美国国税局有万行代码。社会保障局有万行代码。因此,这些单位和实体正在处理一些如今最敏感、重要的信息,如果我们不继续为这些大型机提供支持和维护,就会造成很大的破坏。
00:08:04-SaronYitbarek:
因此,如果我们无法摆脱旧的基础设施,又无法挥舞魔杖来重建整个大型机业务,我们该怎么办?编码人员有时候仅考虑未来,该如何接受过去?我们首先需要直面该问题。
00:08:25-RitikaTrikha:
你知道,年轻一代将不得不重拾这些技能。或者,必须对这些大型机进行某种现代化改造。无论是哪种方式,这个问题都不会消失。这就是为什么COBOL还活着的原因。
00:08:35-SaronYitbarek:
这并不容易。Ritika认为我们已经忽略这个问题太长时间了。
00:08:42-RitikaTrikha:
这非常昂贵、艰巨,并且替换数十亿行COBOL代码的风险也非常高。它是用于关键任务的代码,比如社会保障和金融信息。COBOL是专门为此类大量交易而设计的。因此,它由格蕾丝·赫柏在60年代为商业交易而设计。自上世纪60年代以来,一直存在“如果没坏,为什么要修复它”的说法,现在我们处于这样一个关头,即延续了数十年的大量的高价值数据运行在COBOL上。
00:09:22-SaronYitbarek:
从某种意义上说,Ritika在呼吁一种文化的转变。改变对"进"与"退"的态度。由于发展的世界慢慢有了越来越久的历史,我们会更加地接触到自己的历史。你无法摆脱老化的基础设施。这意味着你也不能忽略编程语言的历史。
00:09:47-RitikaTrikha:
有些事情必须得做。当我在HackerRank时,我亲眼看到了多少银行和金融机构对COBOL开发人员的伤害,几乎是绝望的。这不是一个会被解决的问题,我认为要么必须有某种现代化的系统,要么我们继续培训人员并激励他们。我个人认为将会有COBOL再次出现的一天。真的,当所有拥有COBOL知识的开发人员退休,并且没有新一代的开发人员学COBOL时,将会发生什么?总得做点什么,对吧?所以,当从COBOL转向新的基于云的基础设施时,需要有更多的系统化和制度化的改变。
00:10:37-SaronYitbarek:
RitikaTrikha是一名旧金山的技术作家。
00:10:49-SaronYitbarek:
那么Ritika提到的那些基于云的基础设施呢?我们今天建立的基础设施是否会将后代绑定到特定的语言,像我们仍绑定在COBOL上一样?亚马逊Web服务(AmazonWebServices)(AWS)可能是最大的单一云基础设施,于年推出。Google云平台(GoogleCloudPlatform)(GCP)于年问世,微软Azure于年问世。Go语言以并发为重点,定位于在新的云基础设施上蓬勃发展。这是这个时代的语言。
00:11:26-CarmenAndoh:
嗨,我叫CarmenAndoh,我是谷歌Go团队的项目经理。
00:11:34-SaronYitbarek:
Carmen对Go语言与今天的基础设施有怎样的联系有深入的理解。这要从Go的创作者和编程语言历史的紧密联系说起。
00:11:47-CarmenAndoh:
RobertPike、RobertGriesemer和KenThompson。这些名字算是从上世纪60年代就开始出现了。KenThompson发明了B语言,然后他在夏天的假期继续发明UNIX操作系统。RobPike发明了字符串编码UTF-8,他还发明了ASCII。他帮助KenThompson共同编写了UNIX编程环境。所以,这两个人是很多、很多年前的同事,他们一直在研究和发明用以前的编程语言编写的操作系统,这些语言包括KenThompson最终帮助DennisRitchie一起编写的C语言。
00:12:28-SaronYitbarek:
Pike、Griesemer和Thompson在Google工作之后,他们发现了一个严重的问题。并没有出现大规模的并发。人们等待了几个小时编译出来。他们使用的是C++,并且必须得编写所有这些回调和事件调度器。那是在年,我们的基础设施再次发生了变化。诸如C++之类的语言越来越不适应这种新的现实。
00:12:59-CarmenAndoh:
多核处理器、网络系统、大规模计算集群和Web编程模型等正在引入这些问题。而且,还有这个行业的增长,程序员数量在年就会达到成千上万。因此,直到那时,所有的编程语言都是在规避问题而不是在正面解决问题。
00:13:24-SaronYitbarek:
最终,将达到一个临界点,必须开始改变。
00:13:30-CarmenAndoh:
嘿,我们讨厌C++,我说:“好吧,让我们看看我们是否能发明些新的东西。”
00:13:37-SaronYitbarek:
这种新语言需要完美地适应我们最新的基础设施。
00:13:43-CarmenAndoh:
年云技术到来以后,你不再需要自己的计算机,在某种程度上在其他地方租用它,你就可以得到一个分布式系统。但是在分布式系统中,以及在云计算中,存在并发消息传递问题。你需要确保采用异步对你来说没有问题。Go缺省就是异步的编程语言。基本上,这意味着你执行的每个操作(例如将所有这些不同的消息发送给系统中的另一个计算机)都无需等待另一个机器对你的响应即可完成。因此,它可以在任何给定时间处理多个消息。
00:14:28-CarmenAndoh:
就是说,云计算是分布式的。因此Go的开发就是来满足这一确切需求。Go早就成为进行这种分布式计算的标准方法之一。这就是为什么我认为它立即引起了开发人员的广泛