compiler-construction - 是什么让 COBOL 及其性能(与其年龄相比)如此之快?

标签 compiler-construction cobol

通读这里的一些问题,普遍的共识似乎是“那里”仍然有大量的 COBOL 代码,不仅仅是因为重构或重新编码是一场噩梦,而仅仅是因为对于某些分割市场(金融等),它已证明自己完全有能力保持自己的地位。但是什么它是关于导致它如此的语言吗?随着内存管理等方面的所有相应改进,几十年前的东西如何继续表现得足够好,以对抗更现代的语言? COBOL 编译器等是否只是在后台默默改进?或者语言中是否有一些固有的东西,这意味着它对于给定的一组操作非常有效?

最佳答案

COBOL 语言是在 1950 年代设计的,以匹配当时可用的慢速、RAM 受限机器的功能。更不用说缺乏交互终端了。设计的许多方面都易于编译为简单的机器代码,无需优化。例如,没有变量。只有一个工作存储块,其名称指的是从固定位置开始的特定固定长度的字节数组。 COBOL 程序通过设计编译为高效的机器代码。

随着 CPU 的速度越来越快,RAM 的容量越来越大,COBOL 编译器确实添加了新功能,例如键索引文件 I/O 和内置 MERGE 算法,以及对交互式文本终端的支持。现在甚至有面向对象的 COBOL。

所以部分原因是代码可以移植到新的 CPU 架构,因为它是一种高级语言,但非常高效,因为它的设计不使用像 C 的祖先 ALGOL-60 中发现的那些花哨的功能。部分原因是 COBOL 不断发展以适应更新的操作系统和功能。例如,SQL 数据库只是 COBOL 旨在处理的简单的面向表的文件的更复杂的形式。只要执行流程大致按顺序进行,覆盖链接器就允许编写巨大的 COBOL 程序。任何在 Assembler 或 PL/1 或 FORTRAN 中做得更好的功能都可以通过 PROCEDURE 调用访问。

与 COBOL 最接近的现代语言是 Python,因为您可以编写干净的程序,几乎读起来像英语,到处都没有多余的标点符号,但您可以利用庞大而复杂的功能库,而不必一直编写自己的代码。当然,Python 已经采用了 ALGOL-60 的所有功能以及更多功能,因为它是在现代设计的,您不必将所有内容都放入 16k 的 RAM 中。

关于compiler-construction - 是什么让 COBOL 及其性能(与其年龄相比)如此之快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1627314/

相关文章:

java - 奇怪的 "cannot find symbol"错误(从终端编译包)

c++ - LLVM 别名分析器奇怪的结果

.net - VB .NET 中的结构,如 COBOL

excel - 需要将 Cobol 数据文件转换为 CSV、Excel

cobol - 这个程序的流程是什么?

parsing - 确定 Cobol 编码风格

loops - 这段代码的哪一部分导致了无限循环?

Java 编译器树 API - 我该如何设置它?

C# 编译器优化

c++ - Visual C++ 编译器是否优化了未定义的宏 block ?