COBOL用于什么?

22

COBOL用于什么?


1
这是一种用于编写商业应用程序的旧编程语言,我只能说我很高兴不再需要使用它了!:-) - Jagmag
3
http://en.wikipedia.org/wiki/COBOL - Felix Kling
要么Moses的评论是完全有效的答案,因此我会点赞,要么你必须更具体地说明。什么样的“什么”? - BoltClock
虽然问题不完全相同,但基本上回答了你的问题。COBOL历史中未提及的部分 - NealB
如果我认识的唯一一个 COBOL 程序员是一个典型,那么他过着非常舒适的半退休生活... - seanb
8个回答

30

COBOL(通用商业语言)是由格雷斯·默里·霍波发明的(了解她,她是计算机发展中至关重要的人物之一)。 总体思想是创造一种基于英语而不是数学或代码表达的语言。

简单来说,您将使用类似于以下结构的构造:

ADD YEARS TO AGE

相对于

age = age + years
或者
age += years

COBOL于上世纪60年代初应运而生,被广泛应用于商业领域的处理中。至今仍有大量采用COBOL编写的应用程序在运行和维护,因此该语言仍然非常活跃。1997年左右,Gartner报告称全球80%的商业机构都在运行COBOL,并存在超过2000亿行代码,每年新增约50亿行。因此,学习COBOL是确保您终身受益的好选择。

COBOL程序的结构可以概括为“Mnemonic In Every Damn Program”,即:

  • Identification Division:提供有关程序的信息
  • Environment Division:描述硬件环境
  • Data Division:(我们曾使用CODASYL,现在更为人所知并重新发明为NoSQL)
  • Procedure Division:这里是代码

由于COBOL的传统从标孔卡开始(我也用过),因此你总是以缩进8个空格开始编码,否则某些编译器将无法识别它(这让我们想起Python中的空白符号的重要性)。

当然,它是一种编译语言。

它在哪里使用?政府、军队、各种规模的企业,但通常是较大的企业,因此你可以说它被应用于各个领域,并用于管理政府、军队和企业。我相信美国社会福利系统运行了数百万行COBOL代码,编写于60年代中期。英国大型信用评级公司Experian在其操作中广泛使用并连接到网络。同样,在英国,大多数Building Societies和银行都在其核心系统上运行。

我还可以继续讲下去,但是我就不再多说了,你可以自己去阅读。顺便说一句,如果你想要,你甚至可以使用面向对象的COBOL。


第一个COBOL标准是COBOL-60。自1959年以来,该项目已正式启动,并借鉴了先前的技术。COBOL并非由霍珀海军上将“发明”,而是由她领导该项目。 - user207421
2
我认为它在很大程度上借鉴了FLOW-MATIC,我用引号将“invented”倒置来表明Grace并没有真正发明它。当然,它是由一个委员会组成的,就像我们现在仍然做的那样。没有什么真正的原创性,当然COBOL是在以一种或另一种形式之前完成的工作的基础上发展起来的。关于她的其他成就的一个小注释是,Grace是最后一位从美国海军退役的曾在第二次世界大战中服役的海军军官。 - PurplePilot
只为语句“Procedure Division 'Here be code'”加1。 这是过去20多年与c.o.b.o.l. “龙”战斗的回忆。 - Rolf of Saxony

6

您是否使用过信用卡?您的交易可能会涉及后端的COBOL代码。


4

适合工作的正确工具

批处理

关于COBOL最显著的一点不是它的冗长,而是它作为一种语言,主要设计用于进行批处理。在这方面,它的I/O功能非常高效。

尽管它比OOLs早了一个地质时代,但从OO程序员的角度来描述批处理和COBOL是有用的。虽然历史上不正确,但像这样描述可以帮助OO程序员概念化。

换句话说,这是绝对错误的,但却非常真实:

COBOL已经“优化”以迭代大量、甚至是海量的顺序“集合”(即批次,也称为文件)。事实上,它是如此优化,以至于所有的OO功能都被剥离了,留下了一个基本的API,打开文件,处理记录,并关闭文件。在基本算法的更复杂版本中,多个文件被打开,它们的记录相互匹配并操作以生成一个或多个输出文件(批次)。

当COBOL被用于非批处理过程时,例如伪会话编程(备份CICS“绿屏幕”-又名BMS),它最不适合。毫不奇怪的是,这种功能最快被用OOL编写的GUI应用程序所取代。

编辑器

IBM大型机上的ISPF编辑器已经优化以处理COBOL所需的编码方式。编辑器中的基本操作单元是行。默认情况下,垂直对齐是静态的,不会根据上下文流动或移位;在行尾键入会导致键盘锁定。由于这种“垂直对齐的保护”,相对容易复制行或块,并对齐命令。对于COBOL来说,垂直对齐作为可读性问题比OO语言更重要。

很难在一篇文章中进行描述,但是我在两个编程世界和两种类型的编辑器中都有经验,我必须说我不想在IDE样式的编辑器中编辑COBOL,也不想在ISPF编辑器中编辑Java和C系列语言。(我想你可以将ISPF样式的编辑器插入各种IDE中,但我没有去过那里。)

N.B. OO COBOL有其用途,但作为重新设计处理批处理的代码的新方法。


1
从我的有限经验来看,COBOL在IBM大型机系统中被广泛使用。因此,在任何强调I/O的情况下(如上文提到的金融系统、保险公司、政府等),只要需要或更喜欢大型机并且已经存在一段时间,COBOL可能会被使用。我说“已经存在一段时间”是因为在现代,我听不到多少人使用COBOL作为首选语言。

0
COBOL的ANSI标准和一些编译器在过去15年中已经有了很大的发展,在其中包括创建和操作网页内容和交互网站的库,用于数据通信、在小型处理器和手持设备上运行。常见版本的前缀为MF、CIS、RF、RM或计算机主机制造商的名称,适用于主要用于数据处理计算机安装中的版本。

0

如今,COBOL只是因为它曾经很受欢迎,许多老大型企业不想将其代码重写成现代语言而继续使用。(主要是成本和时间)

COBOL代码行的最大长度为72个字符,你问为什么?因为打孔卡片上有那么多个孔。即使到现在,这种语言也没有更新以允许更长的行...

COBOL是一种邪恶而古老的语言,除非您正在扩展旧程序,否则几乎没有用处了...


4
根据这篇几年前的文章(其中列出了良好的引文),“现有大约2000亿行COBOL代码”,“每年为实时系统添加大约50亿行新的COBOL代码”。嗯,听起来对我来说确实很陈旧!;-) - DuncanKinnear
2
一组极不准确的陈述。 Cobol仍然被使用,因为它在商业领域中表现良好,与重写无关,而是与是否适合有关。72个字符的行长度只是愚蠢的无知,自由格式源代码得到所有当前编译器供应商的支持,并且据我所知,大多数免费编译器已经存在几十年了。 Cobol与任何其他通用语言一样有用,而一个语言是邪恶的真的是不可能的... 除了Basic... - Joe Zitzelberger
1
还有一个小细节,打孔卡实际上是80列,但其中8列用于排序(如果你曾经掉过一堆打孔卡,你就会明白这个问题),因此在早期只剩下了72列。 - RFlack

0

COBOL用于商业应用程序。Fortran用于科学应用程序。C和C ++用于硬件和固件。Java用于Web。

然后你可能会问,为什么选择COBOL?嗯,COBOL比其他语言更容易编写商业应用程序,大约容易十倍左右。

例如,将数字移动到报告字段并将其格式化为货币:

   MOVE VAL-A TO REPORT-FIELD-A.

不需要getter或setter方法。每个MOVE语句不需要编写两种方法。

所有的字符转换和格式化为$99,999.99都是自动完成的。在其他语言中试试看吧。

肮脏的小秘密是COBOL实际上是一种被吹嘘的汇编宏语言。甚至有一个编译器选项可以打印汇编代码。这使得它易于理解和强大。

COBOL:易于使用、快速、准确、可读性好且易于维护。这就是老板所需要的一切。


1
COBOL - 一种光荣的汇编宏语言吗?我不这么认为...仅仅因为编译器可以生成汇编程序列表并不意味着它是汇编宏处理器。关于各种语言使用方式的其他概括性陈述似乎也有点教条主义。 - NealB

0

Cobol主要用于金融处理。无论何时银行、经纪公司、信用卡供应商等进行业务,都会涉及到Cobol。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接