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

向普通软件开发人员询问有关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

什么是COBOL? COBOL编程说明相关推荐

  1. 计算机语言cobol,COBOL语言编译器

    COBOL语言,是一种面向过程的高级程序设计语言,主要用于数据处理,是国际上应用最广泛的一种高级语言.COBOL是英文Common Business-Oriented Language的缩写,原意是面 ...

  2. 计算机语言cobol,COBOL计算机方言

    COBOL(Common Business Oriented Language)语言是一种适合于商业及数据处理的程序设计语言.这种语言可使商业数据处理过程精确表达.[1] 中文名 COBOL计算机方言 ...

  3. COBOL入门到精通

    书籍地址:https://github.com/openmainframeproject/COBOL-programming-course 还记得前阵子,新泽西州州长 Phil Murphy 在新闻发 ...

  4. cobol_在尝试之前不要讨厌COBOL

    cobol COBOL是编程语言的Rodney Dangerfield,它不受任何尊重. 它经常因其冗长而被贬低,并被认为是过时的. 然而,COBOL 绝非一成不变的语言 . 它估计处理所有业务交易的 ...

  5. cobol_关于COBOL的简短介绍

    cobol COBOL is one of those languages you keep hearing about, one of the remains of the past. COBOL是 ...

  6. 青岛方言喝啤酒怎么说_编程的头十年:说方言

    青岛方言喝啤酒怎么说 非常个人化的编程历史的第一章第二部分 说方言 1957年,FORTRAN(公式转换)使人们可以通过编写与人为逻辑的程序来编写程序,而不必记住困难的操作码. 人类可读(和相关)编程 ...

  7. 为什么没人会 COBOL 编程了?

    忘了Python,来学习COBOL,人人都可以成为救世英雄. 作者 | Rhea Moutafis 译者 | 弯月,责编 | 郭芮 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSD ...

  8. History of program (language).

    1 编程语言的发展历程及未来趋势 1.1 编程语言的发展 · 1946 Plankalkul      Konrad Zuse,一位德国工程师,他躲藏在巴伐利亚附近的阿尔卑斯山上时,独立开发了Plan ...

  9. 10个让人厌烦的编程语言

    这个榜单统计的是跨语言开发者最讨厌的编程语言,比如你最喜欢使用A语言来编程,那么可能会对其他语言的某些特性看不惯. 这是一种很主观的看法,上榜的语言不代表这个语言不好,只是说明某些开发者不太喜欢这个语 ...

最新文章

  1. Windows Phone 7.1 “芒果” SDK Beta 下载地址
  2. CubeMx 生成的FreeRTOS 代码在ARM compiler6 编译__forceinline 报错的解决方法
  3. c语言基础符号,C语言符号大全。陆续更新基础知识给新人提供。(申精)
  4. C++的STL标准库学习(queue)队列(第四篇)
  5. java项目技术方案_JavaWeb应用开发项目设计方案.doc
  6. 音频音乐与计算机的交融pdf,电脑音乐的研和应用.pdf
  7. codesys写文件到远程并在远程读取文件
  8. 高分Essay写作要点分析
  9. 解决win7卢布符号显示问题
  10. 七大江河水系--长江(一)
  11. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛) E
  12. 11个你可能不知道的Python库
  13. 基于原生JS项目使用Vue3 + Surely Vue Table组件
  14. Python「可视化编程插件」让编程更easy
  15. golang之gorm的事务操作 事务不成功原因
  16. pandas+plt操作练习(统计高等数学竞赛获奖)
  17. 算法笔记【归并排序】:逆序对
  18. React16.x中的服务端渲染(SSR)
  19. LogUtil日志打印工具
  20. 光影魔术手快速批量压缩图片

热门文章

  1. 2022 年 8 月初北上广深杭热门签到打卡点微博数据集
  2. 第十三章 使用动态SQL(三)
  3. 英特尔® 虚拟化技术
  4. 设置elementplus主题色(全局设置)
  5. 人工智能之数学基础篇—线性代数基础(下)
  6. C# 里氏转换(父类转换成子类)( is as )
  7. 国内最全面App渠道(Android版完整版)
  8. 空军一号html,耐克AF1所有款式介绍 NIKE空军一号款式一览
  9. 串口通信的基本原理详解
  10. [oeasy]python0143_主控程序_main