为什么COBOL仍然是商业领域的首选语言?

时间:2010-01-08 05:30:45

标签: cobol

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

修改

为什么这么受欢迎?

很抱歉没有为此问题创建单独的帖子。

11 个答案:

答案 0 :(得分:46)

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

政策惯性。 COBOL真正被广泛使用的地方往往是政府机构和大型企业,这些地方的改变速度非常慢。

人类惯性。以编写代码并了解多种语言为生的人不太可能认为学习新语言是一件大事。学习一种语言的人,因为他们需要知道这种语言来执行“商业”工作,甚至可能不会想到转换。

答案 1 :(得分:27)

我不太确定COBOL是大企业和政府的首选。我会说容忍的可能 是一个更好的词。

<强>为什么吗

  1. 因为政府/企业很重要 在管理他们的方面存在风险 金融系统。拧紧这里和整个 企业陷入危险境地。如果没有破产 不要修理它。

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

  3. 交易量。 COBOL应用程序往往是 优化吞吐量。批处理大 大量的数据是COBOL真正闪耀的地方。 Java的 应用程序有点难以优化 吞吐量,因为有更多的基础设施的倾向 程序和“金属”之间的层 增加处理阻力。大企业/政府有很多 推送他们的系统和吞吐量的数据是必不可少的。

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

  5. 在所有人为了最后一点而跳过我之前 让我解释一下......

    我在工作 一家非常大的商店和几年前的一位高管 决定用Java构建所有新系统。 COBOL只会被保留 维护现有的传统软件库。一个 完成逐步淘汰计划为期15年 地平线。

    有些人 引入了最优秀,最聪明的Java思想 培训,建立最佳实践,建立基础设施 并支持大规模Java开发。这个 倡议得到了很好的规划和执行。然后, 在部署了许多Java应用程序之后 “豆子计数”开始了。结果是那样的 COBOL应用程序的开发成本仍然较低, 维护,支持和运行 - 在这里进行长时间的硬数字运算 因为结果不受欢迎!

    COBOL回来了 - 但并非完全。 新的行政方向是保持COBOL 繁重的(后端交易处理)和 面向批处理的应用基本上是COBOL 用于数字 处理和业务规则实施。 Java来了 前端提供GUI类型接口和轻量级 处理

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

答案 2 :(得分:6)

首先 - 我为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

答案 3 :(得分:4)

为什么会流行?

因为在1950年代后期,美国政府颁布法令,如果软件供应商想要出售应用程序或为政府编写应用程序,那么该语言必须是cobol。

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

第二个原因:因为即使在今天,它也比我所知道的任何其他语言更好,因为某些业务问题的某些方面经常发生。这些方面中最重要的是十进制算术。 Cobol本身就有它(就像PL / 1等的情况一样),但对于那些所谓的“更现代”的语言来说并非如此。顺便说一下:这就是为什么这里有很多关于“存储货币价值的最佳数据类型是什么?”的原因。提出这些问题的人并不知道整个IT世界由一些OO语言和一些ORM工具组成,并且不知道为什么这样的事情“金钱算术”可能对计算机语言有用以支持它本地,即对于计算机语言来说,除了bigint(程序员仍然需要跟踪小数的数量)之外,还有一个内置的本机数据类型,或浮点数(与程序员一起)仍负责在整个地方添加正确的舍入逻辑。

答案 4 :(得分:4)

这些语言都不能提供Cobol的功能 - 快速,高效地处理大批量数据。它不需要图形,它不需要点缀,它只需要做它做得很好 - 主要是会计。

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

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

Python使用库(aka模块)支持定点数学以及记录I / O.它也遭受致命的恕我直言,使用缩进来划定范围的设计缺陷。这在Mac / Windows / Unix的相对同质环境中使用ISO8859-1字符集的某些变体可以合理地工作。在以ASCII为中心的世界和以EBCDIC为中心的世界之间来回移动时容易出现问题,其中行终止符不像“\ n \ r \ n,\ r \ n,\ n”那样简单,并且文件传输包中的任何配置错误,字符转换例程,或由配置为不同字符集的终端编辑将破坏源的范围。

您提到的所有语言在Cobol最强的关键业务需求方面存在缺陷。

答案 5 :(得分:3)

它可以在可以热交换任何硬件的机器上工作,并且如果处理器死掉则会优雅地降级。在处理数十亿美元时,可靠性就是一切。

这些机器也支持可笑的大IO速度;如果您无法实时处理一天的交易,那么您就会破产。

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

代码不容易移植到另一种语言,因为开发人员没有“计划”这种情况发生。将当前为系统供电的代码移动到另一种语言是一种风险和非常大的成本。

可靠性计算某些东西,而COBOL将其用于黑桃。

答案 6 :(得分:2)

为什么会流行?

IBM大力推动它。这对FORTRAN和COBOL来说是一个很大的帮助,尽管不是PL / 1.

很早就可以买到,首次出现在1960年之前。

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

这是当时常见商业计算实践的一个非常好的匹配。它非常善于接受输入,进行微小的转换以及吐出报告。 (就此而言,现在仍然如此,但企业现在的需求更加多样化。)

它具有一些特殊功能,例如十进制算术,同时跟踪小数点,以及记录数据类型,这在业务中非常有效。

答案 7 :(得分:2)

我也在使用ao c,c ++和java。 一切都是先进的,具有重要的特征。 但是,当计算机问题出现时,意味着没有艰苦的工作只能进行商业计算和推测。在效率方面没有人击败COBOL ......以及巨大的数据处理, 用Java或其他语言进行一天或更长时间的一天...忘记。 它唯一的cobol和大型机。

  1. 安全的漂白剂。大型机上没有漂白超过60年。
  2. 在紧急情况或showstoper情况下处理的代码的简单性。
  3. 嘿,使用java中的前端,vb.net all,但是对于保持依赖DB2的数据,所以cobol变得必须。
  4. 这是为什么领先的银行公司在从大型机迁移到其他公司之前需要10次思考的原因。

答案 8 :(得分:1)

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

当然惯性,安装基础和变更风险是非常有效的原因,但我想说语言本身有充分的理由。如果要对大量数据记录进行批处理或想要进行财务计算,则记录布局和数值数据类型的定义优于任何其他语言。

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

答案 9 :(得分:1)

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

答案 10 :(得分:0)

Cobol的发明是为了让那些对计算机一无所知的人能够编写程序。这正是商业,特殊性美国企业茁壮成长的坏主意。

良好的软件需要高技能和良好的工具,其中一些实际上需要真正的知识和理解才能使用,更不用说了。高技能水平往往需要高薪,因此对棉条子弹的搜索仍在继续,并且积极劝阻高技能。不相信我?试试这些链接

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