![]() |
1
11
COBOL语言是在20世纪50年代设计的,以匹配当时速度较慢、RAM受限的机器的功能。更不用说缺少交互式终端了。设计的许多方面都易于编译成简单的机器代码,不需要优化。例如,没有变量。只有一个工作存储器块,其名称指的是从固定位置开始的特定固定长度的字节数组。COBOL程序通过设计编译成高效的机器代码。 随着CPU越来越快,RAM越来越丰富,COBOL编译器添加了新的功能,如键索引文件I/O和内置的合并算法,以及对交互式文本终端的支持。无需说,甚至还有面向对象的COBOL。 部分原因是代码可以移植到新的CPU体系结构中,因为它是一种高级语言,但是非常有效,因为它被设计成不使用像C的祖先Algol-60中那样的高级功能。部分原因是COBOL进化成适合新的操作系统和功能。例如,SQL数据库只是COBOL设计用来处理的简单的面向表文件的更复杂的形式。只要执行流大致是连续的,覆盖链接器就允许编写大型COBOL程序。在汇编程序、PL/1或Fortran中做得更好的任何特性都可以通过过程调用访问。 与COBOL最接近的现代语言是python,因为您可以编写几乎像英语一样的干净程序,而无需在任何地方使用外来标点符号,但您可以利用大量复杂的功能库,而无需一直编写自己的代码。当然,python已经采用了algol-60及更多的所有特性,因为它是在现代时代设计的,当时您不必把所有的东西都安装到16K的RAM中。 |
![]() |
2
4
在OS/360及其子代上,大约有四个汇编指令与COBOL动词的比例,硬件设计人员很好地了解了COBOL规范,并构建了一个支持它的指令集。 即使看起来像是可怕的政治家,比如:
传送到大约八个组装说明(其中只有一个在回路中) |
![]() |
3
3
这是因为COBOL程序(至少是旧程序)的结构非常简单,所以将它们编译成有效的机器代码一点也不困难。例如,“好的旧的”COBOL程序不需要高效的内存管理,因为内存的动态分配根本不会发生;内存布局在编译时是固定的。 |
![]() |
4
1
财务设置中的另一个优点是,它提供了本地数据类型和数学运算符来进行小数定点算术运算(请参见[压缩十进制][1])。 压缩十进制对于进行财务计算很有用,因为它在小数点前后保持固定的位数。这使得处理财务金额的四舍五入变得更加容易。 除了COBOL、PL/1和ALGOL之外,很少有其他语言能有效地进行十进制定点运算。IBM的大型计算机有专门的硬件电路来用BCD进行计算,这有助于将COBOL的性能保持在同一水平。 〔1〕: http://en.wikipedia.org/wiki/Packed_decimal “压缩十进制” |
![]() |
5
1
COBOL长期以来的安静优势是语言本身将数据与指令分离。数据保存在数据部分,而代码保存在过程部分的公平交易长度上。这有助于鼓励编写“无状态”过程,这是编写模块化、易于测试的代码的一个关键方面。COBOL是面向对象的人在这方面,一个教训很多C++和Java的人似乎已经忘记15年前。 当然,您可以违反这个原则,但是由于编写代码很容易,所以大多数经验丰富的COBOL开发人员都会这样做。 这也是为什么COBOL仍然被广泛使用的部分原因。因为它是模块化的,所以更可重用,所以人们继续重用它。为什么不呢?它是付费的。 |
![]() |
SaggingRufus · 是否需要在我的JCL中指定所有文件? 7 年前 |
|
JOHN · 如何解决CICS中的PROG753错误? 8 年前 |
![]() |
MC Emperor · 如何处理作为CALL语句参数的文字? 8 年前 |
![]() |
Lena · 将字母转换为包含数字的字符串中的数字 8 年前 |
![]() |
Sridhar · 用于cobol显示和解包数字字段的Java映射 9 年前 |
![]() |
raz_user · 由尾随空格分隔的Cobol字符串 9 年前 |
![]() |
Benjer · 有没有一种方法可以用现代Cobol写评论?[副本] 9 年前 |
![]() |
user3401335 · 用cobol计算变量的长度字符串 10 年前 |