33

即使我们有C++JavaPython等语言,为什么 COBOL 仍然是商业世界的首选语言?

为什么如此受欢迎?

4

11 回答 11

49

代码惯性。 用 COBOL 编写的大量现有代码 = 将所有内容切换到另一种语言的成本过高。 维基百科说有超过 2000 亿行 COBOL 代码在使用中。

政策惯性。 真正深入使用 COBOL 的地方往往是政府机构和大型企业,众所周知,它们的变革速度很慢。

人的惯性。 以编写代码为生并了解多种语言的人不太可能认为学习一门新语言很重要。学习一种语言的人,因为他们需要知道它来执行原本是“商业”工作的人,可能甚至不会考虑转换。

于 2010-01-08T05:38:00.077 回答
31

我不太确定 COBOL 是否会受到大企业和政府的青睐。我会说容忍可能是一个更好的词。

为什么?

  1. 因为大型政府/企业在管理其金融系统时是风险不利的。搞砸了,整个企业都处于危险之中。如果它没有坏,就不要修理它。

  2. 很难做出可靠的业务案例来替换包含数百万行代码的任务关键型系统,因为这归结为“我的语言比你的更好”类型的论点——好吧,它比这更复杂,但要提出一个可靠的商业案例是困难的。

  3. 交易量。COBOL 应用程序倾向于针对吞吐量进行优化。批量处理大量数据是 COBOL 真正的亮点。Java 应用程序在吞吐量方面更难优化,因为在程序和“金属”之间往往有更多的基础设施层,这会增加处理阻力。大企业/政府有大量数据需要通过他们的系统,而吞吐量是必不可少的。

  4. 每笔交易的成本。当包括所有因素时,COBOL 通常每笔交易的成本较低。这部分是因为处理时间需要花钱,而 COBOL 应用程序通常更有效。但是,COBOL 应用程序似乎也具有较低的开发/维护成本。

在每个人都为最后一点跳到我身上之前,让我解释一下……

我在一家非常大的商店工作,几年前,我决定用 Java 构建所有新系统。COBOL 将仅用于维护现有的遗留软件库。计划在 15 年的时间范围内完全淘汰。

一些最优秀、最聪明的 Java 人才被请来培训、建立最佳实践、构建基础设施并支持大规模 Java 开发。这一举措经过精心策划和执行。然后,在部署了许多 Java 应用程序之后,“bean 计数”就开始了。结果是,COBOL 应用程序的开发、维护、支持和运行成本仍然更低——这里需要长时间的硬数字运算,因为结果不受欢迎!

COBOL 回来了——但不是完全的。新的执行方向是让 COBOL 用于繁重的工作(后端事务处理)和面向批处理的应用程序。基本上,COBOL 将用于数字运算和业务规则实施。Java 走在前面,提供 GUI 类型的接口和轻量级处理。

我怀疑这可能是行业趋势。COBOL 不会很快消失,但它可能会在支持新玩家的幕后消失。

于 2010-01-08T20:32:38.267 回答
7

首先 - 我为 Micro Focus 工作 - 所以我是一个感兴趣的人。但是,我会将问题转回自身。为什么不?固有的假设是 C++、C# 或 Java 自然会变得更好,因为它们更新。然而,COBOL 并没有停滞不前。部分由于其冗长的语法,它已被证明可以向 COBOL 添加新功能,因此它仍然具有竞争力。人们经常谈论 COBOL 有多“糟糕”,但他们将 30 年前的 COBOL 与最新版本的 C#、Ruby 等进行比较!

事实上,COBOL 的历史正在不断发展,但它保持向后兼容是企业投资它的一个重要理由;TCO 降低了,因为不需要重写。

有关最新版本 COBOL 的更多信息 - 请查看托管 COBOL 的社区站点:

http://knol.google.com/k/alex-turner/micro-focus-managed-cobol/2246polgkyjfl/4

于 2010-06-05T12:54:58.003 回答
5

为什么会流行起来?

因为在 1950 年代后期,美国政府规定,如果软件供应商想要销售应用程序或为政府编写应用程序,则语言必须是 cobol。

结果,几十年来,它是拥有最多编译器供应商支持的语言,它是 ISO 标准化程度最高的语言,只有 FORTRAN 接近这一点,但 FORTRAN 显然有一个完全不同的目标观众。

第二个原因:因为即使在今天,对于某些相当频繁发生的业务问题的某些方面,它也比我所知道的任何其他语言都要好。这些方面中最重要的是十进制算术。Cobol 本身就有它(就像 PL/1 等的情况一样),但对于那些所谓的“更现代”的语言中的任何一个都不是这样。顺便说一句:这就是为什么这里有这么多关于“存储货币价值的最佳数据类型是什么?”的问题的原因。问这些问题的人只知道整个 IT 世界由一些 OO 语言和一些 ORM 工具组成,并且不知道为什么“金钱算术”这样的东西可能对计算机语言原生支持它有用,即对于计算机语言来说,它有一个内置的、本机数据类型,而不是 bigint(程序员仍然必须跟踪小数位数)或 float(程序员仍然负责添加到处都是正确的舍入逻辑)。

于 2010-06-05T13:09:08.457 回答
5

这些语言都没有提供 Cobol 所做的——快速、高效地处理大量数据。它不需要图形,它不需要小题大做,它只需要做它擅长的事情——主要是会计。

C++ 和 C 可以很好地替代系统风格的东西,但它们依赖于定点数学和对面向记录的 I/O 的强大支持。在大多数金融和商业应用程序所在的空间中,z/OS、Cobol 和 z/assembler 对这些东西都有更好的原生支持。

Java 是好的、安全的和可行的。在 IBM 大型机上,Java 和 Cobol 的互操作性非常好。但是一些在 Cobol 中容易做到的事情在 Java 中却很难做到,反之亦然。它们是相互补充,而不是相互替代。Java 还通过库调用完成所有定点数学运算,这比本机操作码支持慢得多。

Python 使用库(又名模块)支持定点数学以及记录 I/O。它还存在一个致命的、恕我直言的设计缺陷,即使用缩进来界定范围。这在 Mac/Windows/Unix 的相对同质环境中使用一些 ISO8859-1 字符集变体相当不错。在以 ASCII 为中心的世界和以 EBCDIC 为中心的世界之间来回移动时很容易出现问题,其中行终止符不像“\n\r,\r,\n”那么简单,并且文件传输包中的任何错误配置、字符转换例程或通过为不同字符集配置的终端进行编辑将破坏源代码的范围。

您提到的所有语言在 Cobol 最强大的关键业务需求方面都有弱点。

于 2010-06-08T08:21:42.550 回答
3

它适用于可以热插拔任何硬件的机器,如果处理器死机,它会优雅地降级。当使用数十亿美元时,可靠性就是一切。

这些机器还支持非常大的 I/O 速度。如果你不能实时处理一天的交易,你就破产了。

自 1985 年以来,它一直是一种稳定的语言,几乎没有被弃用的位。

代码不容易移植到另一种语言,因为开发人员没有“计划”让这种情况发生。将今天为系统提供动力的代码迁移到另一种语言是一种风险和巨大的成本。

可靠性很重要,COBOL 绝对是它。

于 2010-04-14T20:54:30.273 回答
2

为什么会流行起来?

它是由 IBM 大力推动的。这对Fortran和 COBOL 有很大帮助,尽管不是PL/I

它很早就出现了,在 1960 年之前首次出现。

它比使用汇编器要容易得多,甚至比使用IBM System/360汇编器(对于业务处理来说非常好)。它吸引了很多人试图比汇编程序做得更好。

它非常适合当时常见的商业计算实践。它非常擅长接受输入、进行微小的转换和输出报告。(就此而言,它仍然是,但如今企业的需求更加多样化。)

它有一些特殊的功能,例如在跟踪小数点的同时进行十进制算术,以及记录数据类型,在业务中运行良好。

于 2010-03-26T15:13:45.097 回答
1

[供应商发布-但不一定是供应商的官方声明]

惯性、安装基础和变更风险当然是非常正当的理由,但我想说语言本身有很好的理由。如果您想对大量数据记录进行批处理或进行财务计算,那么记录布局和数字数据类型的定义比任何其他语言都好。

正如 NealB 在他的帖子中所描述的,我已经与自然环境和专业知识是 Java 的用户交谈过,但他们将核心逻辑保留在 COBOL 中,因为它是完成这项工作的最佳工具。他们在同一个应用程序中自由地将 Java(主要用于 Unicode 字符串操作和系统集成)与 COBOL 混合在一起。如果他们比较在 Java 中完成相同工作的代码量,那是没有意义的。Alex Turner 在另一个网站上发布了一些很好的示例,比较了 COBOL 和 Java 中的典型业务功能。

于 2010-03-26T14:56:40.343 回答
1

我也工作过 ao c 、 c++ 和 java 。所有都是具有图形特征的高级n。但是当计算的事情来临时,意味着没有艰苦的工作,只有商业计算和推测。没有人在效率上击败 COBOL.. 和巨大的数据处理,一天或更长时间.. 用 Ja​​va 或其他语言处理!忘记。它唯一的 cobol 和大型机。

  1. 安全的漂白剂。大型机过去 60 多年没有漂白剂。
  2. 在紧急情况或表演者情况下处理代码的简单性。
  3. 嘿,在 java、vb.net 中都使用前端,但是对于保存数据,依赖 DB2.so cobol 成为必须。

这就是为什么领先的银行公司在从大型机迁移到其他主机之前要考虑 10 次的全部原因。

于 2011-11-04T14:19:29.320 回答
1

许多大公司,尤其是银行,都有用 COBOL 编写的复杂系统,它们只是简单地工作。许多这样的机构认为重写和设计这样的系统是浪费资源,包括时间和金钱。还存在某些特定于需求的功能可能会在此过程中丢失的风险。因此,古老的表达方式,如果它没有坏掉 - 不要修复它。

于 2011-11-04T14:23:17.803 回答
0

发明 Cobol 是为了让对计算机一无所知的人可以编写程序。这正是商业,特殊性美国商业蓬勃发展的那种坏主意。

好的软件需要高技能和好的工具,其中一些实际上需要真正的知识和理解才能使用,更不用说好用了。高技能水平往往需要高薪,因此继续寻找银弹,高技能被积极劝阻。不相信我?试试这些链接

http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD12xx/EWD1284.html

于 2010-07-08T03:14:06.177 回答