COBOL 编程来说明什么是 COBOL

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

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

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

因此,是的,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年代大型机时代的成年产物,当时程序是在打孔卡上编码的,而80列行的确切格式很重要。 但是其他格式限制会增强可读性。

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

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程序员帮助升级州失业福利系统。

学习COBOL

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

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

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

 

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

你可能感兴趣的:(COBOL 编程来说明什么是 COBOL)