在这个论坛上有一些关于 Cobol 编程语言相关性的主题,例如这个主题链接到它们的集合。我在这里感兴趣的是根据 Gartner 从 1997 年的一项研究得出的一个经常重复的声明:当时有大约 2000 亿行代码在活跃使用中!
我想问一些问题来验证或伪造几个相关点。我的目标是了解这个陈述是否有任何真实性,或者它是否完全不现实。
我提前道歉,因为我在表达我的思路和我对我不确定的事情的看法时有点冗长,但我认为这可能有助于将事情放在上下文中,从而突出我所做的任何错误假设和结论.
有时,“2000 亿行”这个数字伴随着一个额外的声明,即这对应于任何正在使用的任何语言的所有编程代码的 80%。其他时候,80% 只是指所谓的“业务代码”(或其他一些模糊的短语,暗示读者不要指望主流软件、嵌入式系统或其他任何 Cobol 实际上不存在的东西)。在下文中,我假设代码不包括重复计算同一软件的多次安装(因为那是作弊!)。
特别是在 y2k 问题之前的时间里,已经注意到很多 Cobol 代码已经有 20 到 30 年的历史了。这意味着它是在 60 年代和 70 年代后期编写的。当时,市场领导者是 IBM 的IBM/370 大型机。IBM 在其网站上发布了历史公告,引用了价格、配置和可用性。根据该表,内存高达 0.5 兆字节的机器的价格约为 100 万美元。
问题一:实际销售了多少台主机?
我没有找到那些时间的任何数字;最新的数字是 2000 年的数据,同样由 Gartner 提供。:^(
我猜实际数字是几百或几千;如果 2000 年市场规模是 500 亿,并且市场像任何其他技术一样呈指数级增长,那么在 1970 年可能只有几十亿。自从 IBM/370 销售了 20 年以来,将导致 20 倍于几千在几万台机器中(这是相当乐观的)!
问题 2:程序的代码行数有多大?
我不知道该架构上的一行源代码会产生多少字节的机器代码。但是由于 IBM/370 是 32 位机器,任何地址访问都必须使用 4 个字节加上指令(2,也许是 3 个字节?)。如果算上操作系统和程序的数据,多少行代码可以放入半兆字节的主内存中?
问题3:没有标准软件吗?
售出的每一台机器是否都运行一个独特的手动编码系统,没有任何标准软件?说真的,即使每台机器都是从头开始编程而没有重用遗留代码(等等……这不是违反我们从一开始就提出的主张之一吗???)我们可能有 O(50,000 loc/machine) * O(20,000 台机器) = O(1,000,000,000 loc)。
那离2000亿还有很远很远!我在这里遗漏了一些明显的东西吗?
问题 4:写 2000 亿行代码需要多少程序员?
我真的不确定这一点,但如果我们平均每天使用 10 个 loc,我们将需要 5500 万人年才能实现这一目标!在 20 到 30 年的时间范围内,这意味着肯定有 2 到 300 万程序员不断地编写、测试、调试和记录代码。那将和我们今天在中国的程序员一样多,不是吗?
编辑:有几个人提出了自动模板系统/代码生成器左右。有人可以详细说明一下吗?我有两个问题:a)我需要告诉系统它应该为我做什么;为此,我需要与计算机通信,计算机将输出代码。这正是编程语言的编译器所做的。所以本质上我正在使用一种不同的高级编程语言来生成我的 Cobol 代码。我不应该使用其他高级语言而不是 Cobol 吗?为什么是中间人?b) 在 70 和 80 年代,最珍贵的商品是记忆。所以如果我有一个编程语言输出一些东西,它应该是简洁的。编辑结束
问题5:比赛怎么样?
到目前为止,我在这里提出了两件事:
1) IBM 有自己的编程语言PL/I。上面我假设大部分代码都是专门使用 Cobol 编写的。然而,在所有其他条件相同的情况下,我想知道 IBM 营销部门是否真的将他们自己的开发推离了市场,转而在他们的机器上使用 Cobol。PL/I 真的没有相关的代码库吗?
2)有时(也在上面引用的线程中的这个板上)我遇到这样的说法,即“2000 亿行代码”对于“政府、银行......”(等等)之外的任何人都是不可见的。实际上,国防部已经资助了他们自己的语言,以提高成本效益并减少编程语言的扩散。这导致他们使用 Ada。如果他们主要使用 Cobol,他们真的会担心拥有这么多不同的编程语言吗?如果在主流计算认知之外的“政府和军事”系统上运行任何语言,那该语言不就是 Ada 吗?
我希望有人能指出我的假设和/或结论中的任何缺陷,并阐明上述说法是否属实。