受到这个问题的启发。
我听说一些非常早期的个人计算机C编译器版本(我猜是在1980年左右)驻留在两个或三个软盘上,因此要编译程序,必须先用“ first pass”插入磁盘,然后运行“第一遍”,然后通过“第二遍”切换到磁盘,运行该磁盘,然后对“第三遍”执行相同的操作。每遍都花了几十分钟,所以即使出现错字,开发人员也浪费了很多时间。
这个说法有多现实?实际数字和细节是什么?
受到这个问题的启发。
我听说一些非常早期的个人计算机C编译器版本(我猜是在1980年左右)驻留在两个或三个软盘上,因此要编译程序,必须先用“ first pass”插入磁盘,然后运行“第一遍”,然后通过“第二遍”切换到磁盘,运行该磁盘,然后对“第三遍”执行相同的操作。每遍都花了几十分钟,所以即使出现错字,开发人员也浪费了很多时间。
这个说法有多现实?实际数字和细节是什么?
Answers:
绝对。我在80年代初使用的是Zenith Z100计算机的Microsoft C(我认为是1.0版),该计算机通过数个5.25英寸360K软盘提供。Z100没有硬盘,因此我在切换时必须频繁交换软盘。在编辑器,编译器和链接器之间,几分钟的编译和链接时间并不罕见,这真是太烦人了,我花了500美元买了一个2MB(是的,兆字节)的内存扩展板,这样我就可以将所有文件加载到RAM磁盘,将时间减少到30秒左右,很有趣……那时我真的很喜欢编程,因为那很有趣,今天可以工作了。
可能是真的。
在家庭计算的早期(对于儿童/父母,不是最健壮的人),计算机甚至没有硬盘。
我的父母有一个Amstrad,操作系统是在一张软盘上,它允许您选择要运行的应用程序,该应用程序可能需要切换软盘(即字处理器在另一个磁盘上),如果该应用程序需要手动切换回OS磁盘需要一些专门的OS服务。
我有一份帕斯卡的礼物给阿姆斯特拉德。我记得编辑器在1个磁盘上,但是在编译过程中,随着编译过程的继续,它需要在disk1和disk2之间来回切换(它甚至可能需要在过程中的某些点切换到OS磁盘(但是我不是因此请务必关闭))。
过去,整个操作系统都安装在单个3.5软盘上(但是没有太多),这是过去的美好时光。
软盘是1971年推出的(即8英寸软盘),但直到70年代中期才流行(带有5.25英寸磁盘)。C来自1973年,所以我认为答案很大程度上取决于您所说的“第一版”和编译上下文是什么。考虑以下变量:
毕竟-这些天来,编译仍然需要几分钟-只需调整硬件与程序复杂性之间的权衡即可。只有软盘部分不是:-)。
还应考虑到70年代的许多计算仍是在终端大型机结构上完成的,因此更换软盘可能不太可能(至少在商业生产环境中。我不知道C是否被用作“家庭”)。 “ 语言)。
我第一次学习C语言是在80年代末期的Commodore 64(是的,有一个编译器)上。如果我没记错的话,编译器/编辑器/链接器位于一个磁盘上,而源文件位于另一个磁盘上,因此在编译阶段必须至少交换一次。当然,在C-64上,您总是在交换。
对于它的价值,我仍然拥有该编译器的包装盒和文档。每两年进行一些怀旧阅读。
我的第一个C编译器是在运行CP / M的TRS-80 Model 4上运行的(第一个可以正确运行的模型,没有永久性映射到ROM的低内存位置)。它要求第一个驱动器中的磁盘具有CP / M。
一旦使用完所使用的任何编辑器,我都必须先编译,汇编和链接程序,然后才能运行它。每个过程都是自己的过程,从命令行开始。编译器,汇编器和链接器并不都适合一张软盘。(IIRC,汇编器和链接器可以装配在一起。)
因此,我将在CP / M系统磁盘上具有程序和编辑器,并在编译器和汇编器/链接器磁盘中进行交换。
我当时正在寻找一个程序,该程序可以让我在没有系统磁盘的情况下运行,并且我有一个计划(我已经不记得了)进行设置,以便可以制作一些批处理文件并自动执行命令行调用,但我从来没有遵循。
在尝试使用该系统后,我几乎放弃了C,并回到Pascal了几年。
当我在高中(1989-1990)时,我正在用苹果II做帕斯卡,速度很慢。您可以编写一个100行左右的程序,当您点击编译时,它花了几分钟。我记得在程序运行之前,您有时间去编译它的男装室。
那个学期到了一半,我得到了一个更快的Mac SE!认为Pascal更好。
我的一个朋友的父亲在当时是一位高调的程序员。他厌倦了等待几天的编译结果,有时甚至是一周。大部分工作都是在家工作,编写程序,打卡,开车过去,把盒子交给操作员,然后争论一会儿,他的代码比其他所有代码都重要,然后再等。
有时代码从未到达计算机,我的朋友告诉我他父亲的真实经历,我的意思是真的很生他的气。他从来没有真正理解过为什么直到人生的晚些时候,但是男孩子这个装满硬纸的盒子看起来很有趣……嘿,它们也装满了孔!
有一天,他将论点提交给管理层,我想他是一个很好的案例,因为他们将一台微型计算机送到了他的房子。我应该提到的是,到那时,计算机已经占据了起居室的绝大部分,当然,起居室已经不可用了。
所以是的,在编译的各个阶段之间交换磁盘是绝对有可能的,当我说这是对之前的可用版本的VAST改进时,请相信我!
只需等待20年左右,我可以想象有人在问一个类似以下问题的问题:
之前,他们必须使用键盘逐个字母键入代码是真的吗?
我不了解C,但是在这段时间内,我有一个Microsoft Fortran编译器,它花了两遍。不仅如此,而且我有一个长达一页的程序,它运行不正确(我确定源代码正确),就这样,我完全放弃了为PC进行编译。这是互联网时代之前的日子,个人电脑属于我的雇主。拥有PC仍然很棒,我可以将工作放在软盘上并带回家进行编辑。因此,第二天上班时,我已经有一个经过编辑的程序,而不是手写的笔记。
甚至在更早的日子(我从70年代的编程春天开始)起,编译器就成为批处理大型机OS上的单个JCL命令。就像上面描述的那样。您排队等着打孔,然后打了您的便签纸。然后,您通过窗口将它们交给操作员。根据PNC的颜色(基本上是带有帐号/密码的打孔卡),您可能会在1到24小时后得到结果。低水平的学生后来转机了。在两周内完成“ hello world”任务确实是一个挑战!几年后,我从事了兼职编程工作,晚上可以在计算机中心闲逛。我们中有些人甚至可以自己喂读卡器。然后转机仅需几分钟/但是您只能在深夜这样做。
因此,长期以来,编译器主要用于大型机(大型组织拥有的价值数百万美元的计算机)。而且周围的少数微型计算机通常必须以奇怪和棘手的方式进行编程。我用一台小型计算机将地震图数字化。引导纸带穿过它大约需要10-15分钟才能引导操作系统,然后您可以在数字化仪桌上进行操作。
是肯定的。我没有在那些旧的CP / M机器上使用C,而是使用CB-80。编译的BASIC。(是的,这太可怕了)。在Heath / Zenith Z-89上,带有2个软盘驱动器,每个软盘驱动器容纳89K。
单磁盘编译是如此可怕,以至于忘记了它。磁盘交换过多。2个软盘驱动器很豪华!一方面提供源代码,另一方面提供编译器。设置一个编译器,然后走走去喝杯茶,然后机器进入“ clang clang clang”状态,因为软盘被接合和分离,并且头部突然晃动。
老板买了一个5 MB的硬盘,大小约为18x18x8英寸,单独供电,并用一条约4英尺长的带状电缆连接到H89的背面。
哦,速度!和容量!5 MB的存储空间。
我想在我的时间之前。我的第一个“真实”编程(无论如何在PC上)是COBOL。当时我们使用IBM PC。他们有2个360k软盘驱动器;一个拥有编译器,另一个拥有您的源代码。
我确实知道,即使是我简单的大学项目,在这些软盘上运行时实际上也要花费15分钟的时间进行编译-在编译过程中,我会去自助餐厅喝咖啡。然后,对于最后的项目,我在我的伙伴之家进行了这项工作。他刚刚得到了一台全新的机器,上面有一个叫做硬盘的东西-10兆字节!我们的项目在一分钟内完成了编译。这完全让我震惊。