分類
數字趨勢

什么是COBOL?为什么有需求?

已有60年历史的COBOL编程正在复兴。许多政府系统大型机运行COBOL,并且一直在努力应对需求激增。特别是,新泽西州的失业系统状态由拥有40年历史的COBOL大型机来管理。

随着与COVID-19相关的失业激增,该系统正努力跟上步伐。州长墨菲(Murphy)已将COBOL程序员确定为未充分意识到的必要性。

什么是COBOL?

1959年,数据系统语言委员会设计了COBOL。他们想设计一种标准的编程语言,使其可以在许多不同的大型机上运行。

当时,正在开发许多新的编程语言,并且将编程语言翻译为在新硬件上运行变得太昂贵了。 COBOL或通用的面向业务的语言是解决此问题的方法。

COBOL基于由Grace Hopper创建的编程语言FLOW-MATIC。它是第一种使用英语术语而不是数学符号进行数据处理的编程语言。格雷斯·霍珀(Grace Hopper)解释说:

“我曾经是数学教授。那时我发现有一定数量的学生不会学习数学。然后,我负责简化商人使用我们计算机的工作。” (编程语言的早期发展第29页)

同样,COBOL使用英语术语,并且易于阅读。但是,有人批评它过于罗word。例如,在C语言中,您可以编写以下代码以添加两个数字:

 int result = 1 + number;

COBOL中的相同代码将写为:

 ADD 1 TO number GIVING result

就像C一样,COBOL是一种过程编程语言。这仅表示COBOL程序设计为遵循顺序步骤。 COBOL还是一种自记录语言,可增加其可用性。但是,COBOL最著名的功能是可以处理大量数据。

相关: 5 C编程技巧,您必须学习入门

COBOL被广泛采用,尤其是企业,政府和金融机构。如此广泛地被采用,以至于今天它仍然在许多地方使用。

尽管COBOL过去很流行,但很少有人知道该语言。如今,有更多的编程语言以英语命令为中心,这些命令比COBOL具有更多的功能。很少有程序员用COBOL创建新程序。它的主要用途是维护旧版程序。

对COBOL的批评是程序员倾向于编写意大利面条式代码。 Spaghetti代码是结构不良的代码的贬义词。代码结构不良的主要原因是GOTO命令。

如前所述,COBOL是过程性的,因此计算机从上到下依次读取每一行代码。 GOTO命令允许程序员告诉程序跳到另一行。 GOTO命令使用不当会使COBOL代码复杂。

相关:如何通过对象封装保持代码干净

COBOL不受欢迎的另一个原因是,它很少在大学教授。 COBOL是由企业界而非学术界创建的。它旨在解决业务问题,并针对诸如数据处理之类的问题进行了优化。学者们通常对不同的问题感兴趣,因此促进了不同的编程语言。

但是,COBOL的最大问题之一是,尽管被设计为通用语言,但事实并非如此。随着语言的发展,创建了许多不同的方言—其中有300种!

这使程序员难以理解遗留代码。

为什么COBOL很重要

由于COBOL已被企业和政府广泛使用,因此仍然需要维护许多COBOL系统。众所周知,旧版代码很难维护,因为程序既庞大又复杂。因此,需要对语言有深刻理解的程序员来维护程序。

更改代码还需要花费大量时间,因为很难确定更改是否会影响程序的其他部分。

例如,在90年代,我们遇到了Y2K错误。年份日期使用年份的后两位数字而不是全年数字保存在计算机中。因此,1997年被存储为97。人们担心当年份更改为2000时,年份00将不会被识别为有效日期,导致日期序列出现问题,并可能使许多系统崩溃。

美国政府和企业花费了数年时间,花费了1000亿美元来解决Y2k错误。可以更改旧系统,但是这可能会花费时间并且成本很高。

2020年,COVID-19提出了一个新的编程问题。美国的失业系统依靠COBOL进行,因此对该计划进行更改非常困难且昂贵。例如,国会计划通过根据工资损失计算失业支出来应对失业激增。但是,调整程序以执行该计算将需要五个月的时间。

相关:冠状病毒COVID-19:您可以信赖的15个站点,可提供可靠的信息

无法快速更改COBOL系统以应对危机情况。由于没有足够的人接受过COBOL培训,因此无法解决在危机期间支持系统所需的增加的维护,因此问题变得更加复杂。那些接受过COBOL培训的人员已经退休或接近退休。

在哪里学习COBOL

为了满足对COBOL程序员日益增长的需求,IBM创建了免费的COBOL课程。该课程包括一系列视频,测验和实验任务,需要16个小时才能完成,最后您将获得一个徽章。

如果您已经是一位经验丰富的COBOL程序员,那么IBM还可以提供一个COBOL网络论坛。在这里,经验丰富的程序员可以与需要的组织和企业联系。

COBOL不是像Python这样的流行编程语言,但它是一种重要的语言。世界上很多地方仍然使用COBOL。如果您一直在考虑学习编程语言,但需要推动,请考虑学习COBOL。