什么是COBOL? COBOL编程说明

有些技术永不消亡,它们只是逐渐消失在木制品中。

向普通软件开发人员询问有关COBOL(面向通用商业语言)的信息,他们会看着您,就像您提到复写纸,含铅汽油或78 RPM记录一样。 与Go或Python甚至Pascal或C!之类的现代语言相比,COBOL似乎冗长,笨拙,过时。

但是COBOL忍受了。 COBOL绝不是我们与之愉快地过时的过时技术,而是已成为一个机构。 大规模的COBOL代码库仍在世界范围内使用,其中许多代码库的运行几乎与最初创建时完全相同。 用好莱坞的话来说,COBOL语言具有“腿”的含义。

[ 同样在InfoWorld上:每个开发人员心血来潮的17个聪明的API ]

因此,是的,COBOL仍然是相关且及时的,实际上是痛苦的。 最近几个月,由于新泽西州等州呼吁程序员帮助他们将其COBOL应用程序迁移到21世纪,因此COBOL已重新进入公众意识。

在本篇文章中,我们将了解COBOL的起源,编程语言的设计在今天如何脱颖而出,以及使COBOL如此持久且如此棘手的原因。

COBOL的历史

1950年代末和1960年代初出现了 COBOL。 语言的开发是由美国国防部(DoD)赞助的一个项目,该项目包括由IBM,霍尼韦尔,斯佩里·兰德和Burroughs等计算机公司组成的财团。 目的是创建一种具有以下属性的编程语言:

  • 计算机系统之间的可移植性,从而使跨代硬件以及硬件制造商之间的软件迁移更加容易。
  • 这种方式比当时的其他语言(例如FORTRAN)具有更多类似于英语的语法,以鼓励更广泛的受众进行编程,即使是以牺牲某些操作速度为代价。
  • 适应将来语言变化的能力。

第一个正式的COBOL规范于1960年发布。在接下来的十年中,由于其批评家的震惊,COBOL成为编写业务应用程序的默认选择。 其快速传播的一个原因是网络效应:IBM是该语言的最初合作者之一,成为积极进取的早期采用者,并且IBM在计算世界中的主导地位有助于推动COBOL的采用。

由于其设计优势和重量级的行业支持,COBOL一直坚持不懈,远远超出了其最初设计的系统。 根据各种估计,到1970年,COBOL是世界上使用最广泛的编程语言。 到1997年,据信COBOL已经运行了大约80%的商业应用程序。

COBOL语言

当时,COBOL的设计人员打破了其他编程语言的简洁语法(同样,例如FORTRAN)。 这个想法是创建一种非编程人员可以阅读和理解的编程语言,特别是会计,金融,保险和其他业务专业人员。

考虑一个用COBOL的早期方言编写的“ hello world”程序:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.

PROCEDURE DIVISION.
DISPLAY 'Hello World!'.
END-DISPLAY.
STOP RUN.

对于使用Python之类的简洁语言的现代软件开发人员来说,这段代码是冗长的。 但是,COBOL的冗长性(如果不是执行的话)源于相同的想法,这种想法使诸如Python之类的现代语言成为现实-代码被读取的次数比其编写的次数多,因此应将其编写为可读的。

在更现代的COBOL版本中,类似的程序可能如下所示:

program-id. hello.
procedure division.
display "Hello world!".
stop run.

尽管此示例更加简洁,但仍应用了相同的基本原理:该代码力求明确每个步骤的工作情况。

COBOL对于语法和程序的内部组织有严格的规定。 COBOL程序被明确划分为多个部分,或部门 ,这使其更容易找到并一目了然了解它的组成部分:

  • 标识部门:本质上是一个元数据部分,其中包含有关程序,其作者等的详细信息。
  • 环境划分:包含有关运行时环境的详细信息,例如外部设备的别名,当在不同的硬件上运行程序时可能需要对其进行编辑。 这有助于程序在系统之间的可移植性,例如I / O可能完全不同地处理。
  • 数据划分:数据划分包含文件工作存储部分,分别描述程序中使用的文件和变量。
  • 过程划分:实际的程序代码存在于此处,分为若干逻辑单元,这些逻辑单元称为节,段,语句语句 。 试图将这些结构模拟为模块或功能是很诱人的,因为它们提供的功能大致相同(将代码分为块,输入和输出受约束),但是它们的灵活性远不如此。

对于代码,COBOL也具有极其严格的格式设置规则,其大小限制为命令前的空格数。 (Python用户会发现这很熟悉!)其中一些限制是COBOL在1960年代大型机时代的成年产物,当时程序是在打Kong卡上编码的,而80列行的确切格式很重要。 但是其他格式限制会增强可读性。

严格限制COBOL程序背后的想法是使它们尽可能地自我记录。 毕竟,COBOL程序往往会保留数年或数十年。 目的(即使并非总是最终结果)是使每个COBOL程序成为任何COBOL程序员都可以理解的工件,即使多年后,也无需创建它的程序员的帮助。

[ 也在InfoWorld上:分开编码:COVID-19之后的软件开发 ]

COBOL的挑战

COBOL应用程序一经编写便倾向于无限期地留在原地,而仅需进行少量修改,这是COBOL持续流行和惯性的主要原因。 该应用越大,对任务的要求越关键,则受到干扰的可能性就越小。 大型机,就像IBM的产品一样,起着关键作用:它们的构建具有高度的向后兼容性,并且可以以最小的修改跨代的硬件运行传统软件(例如COBOL应用程序)。 结果:数十年来,数十亿行的COBOL代码基本上保持不变。

多年来,COBOL 演变,如果慢。 它甚至现在有一个面向对象的变种OO-COBOL,它包括对现代功能的支持,例如Unicode,语言环境以及字符串和整数以外的更高级的数据类型。 但是COBOL积极保留了向后兼容性,因此,即使这些改进和扩展也遵守现有COBOL应用程序必须继续运行的要求。

并非所有COBOL的语言设计选择都受到COBOL程序员的欢迎。 有些导致了过于复杂的程序,事实证明这些程序难以理解或调试,不鼓励重写或改进。 GO TO C语言中的GO TO命令一样,COBOL的GO TO命令允许程序员自由地在程序周围跳转,从而编写功能更强大的应用程序。 但是,不加约束地使用GO TO可能会使COBOL程序变成难以追踪的交叉引用的巢穴。

今天的COBOL编程

今天,COBOL得以幸存下来。 IBM积极维护自己的COBOL实现,并在运行它们的地方维护许多现有的COBOL应用程序。 Micro Focus COBOL是商业版COBOL版本,可在Microsoft Windows上运行,可将COBOL应用程序编译为Java和.NET,甚至可部署到Azure等云环境。 您还将找到COBOL的开源实现,例如GnuCOBOL ,这些实现可免费获得并编译为本机代码。 但是,它们可能缺少商业COBOL的一些更高级的部署或调试功能。

尽管COBOL仍被广泛使用,但随着时间的流逝,越来越难以获得深厚的COBOL专业知识。 结果,许多前COBOL程序员不得不被淘汰出局,以将较旧的应用程序拖入21世纪。 通常,最重要的不是COBOL编程知识,而是对运行COBOL的大型机环境有深入的了解。 许多COBOL应用程序与遗留技术(例如IBM的IMS和CICS事务管理和数据库系统)紧密结合,所有这些都需要越来越少的专业知识。

因此,就像看起来像COBOL一样老派,对COBOL语言和开发环境专业知识的需求与日俱增。 COBOL和相关专业知识的工作清单比比皆是。 2020年3月,在COVID-19紧缩之后,新泽西州紧急呼吁COBOL程序员帮助升级州失业福利系统。

[ 同样在InfoWorld上:API可以享有版权吗? 7个理由和7个反对 ]

学习COBOL

鉴于对CoBOL语言的需求不断增长,其学习资源再次激增。 想要赶上这种最持久的语言的现代开发人员,有几种选择:

  • 爱尔兰的利默里克大学(University of Limerick)由其计算机科学和信息系统系提供在线完整的COBOL编程课程 。 它不像其他资源那样是最新的,但是鉴于COBOL随时间变化很少,这不一定是缺陷。
  • Open Mainframe Project (Linux Foundation的一部分)还提供了COBOL资源。 其中之一是由IBM共同赞助的 一门完整的COBOL编程课程 。 它比利默里克大学的课程更现代,并且针对IBM的zOS实施COBOL量身定制,COBOL是该语言的广泛部署版本。

数十年来,COBOL一直是业务计算的主要内容,并且对COBOL编程人才的需求仅在持续增长。 如果您对维护或现代化COBOL程序感兴趣,那么现在该比以往更成熟了。

翻译自: https://www.infoworld.com/article/3539057/what-is-cobol-cobol-programming-explained.html

你可能感兴趣的:(编程语言,python,java,人工智能,大数据)