C编译器的第一个版本运行了数十分钟,并且需要在阶段之间交换软盘,这是真的吗?


15

受到这个问题的启发。

我听说一些非常早期的个人计算机C编译器版本(我猜是在1980年左右)驻留在两个或三个软盘上,因此要编译程序,必须先用“ first pass”插入磁盘,然后运行“第一遍”,然后通过“第二遍”切换到磁盘,运行该磁盘,然后对“第三遍”执行相同的操作。每遍都花了几十分钟,所以即使出现错字,开发人员也浪费了很多时间。

这个说法有多现实?实际数字和细节是什么?


2
听起来可能是对的。在60年代,当程序放在打孔卡或纸带上时,程序员可能不得不等待一天以上的时间才能发现错字。
克里斯·卡德

3
有趣的问题。如果这是真的,我很高兴我现在活着而不是那时;)
Anto

2
我记得必须多次交换磁盘才能在Amstrad个人计算机上编译Pascal 。
马丁·约克

好吧,等待一天的事情不是工作的运行时间,而是摆在前面的工作。过去,您经常会去提交卡片组的地方,穿着白大褂的纳粹会拿走卡片组,并在闲暇时将卡片放入料斗中。运行时间可能只有几分钟或几秒钟。人工处理时间通常是几个小时。
quick_now 2011年

4
我已经看到了当今的C ++项目,一次完整的清理和重建需要数十分钟的时间,并且它不是通过磁盘交换来通过操作系统自动执行虚拟内存页面的操作。为什么每个人都不断说这些天计算机如此先进?=)
Patrick Hughes

Answers:


29

绝对。我在80年代初使用的是Zenith Z100计算机的Microsoft C(我认为是1.0版),该计算机通过数个5.25英寸360K软盘提供。Z100没有硬盘,因此我在切换时必须频繁交换软盘。在编辑器,编译器和链接器之间,几分钟的编译和链接时间并不罕见,这真是太烦人了,我花了500美元买了一个2MB(是的,兆字节)的内存扩展板,这样我就可以将所有文件加载到RAM磁盘,将时间减少到30秒左右,很有趣……那时我真的很喜欢编程,因为那很有趣,今天可以工作了。


+1但是我有相反的感觉。看完anwser编程后,今天的感觉突然变得很有趣。
西蒙·贝格

Microsoft C 1.0实际上是Lattice C的重新打包版本。AFIK,Lattice C是第一个MS-DOS C编译器。它确实需要两次单独运行的编译器遍历。
OldFart 2012年

1
哇!2 MB!这在当时是巨大的。
系统停机

我在IBM PC上使用了Turbo C 1.0(如果我没记错的话,实际上是AT),还不错。但是,那些是更快的机器。
Gort机器人2012年

9

可能是真的。

在家庭计算的早期(对于儿童/父母,不是最健壮的人),计算机甚至没有硬盘。

我的父母有一个Amstrad,操作系统是在一张软盘上,它允许您选择要运行的应用程序,该应用程序可能需要切换软盘(即字处理器在另一个磁盘上),如果该应用程序需要手动切换回OS磁盘需要一些专门的OS服务。

我有一份帕斯卡的礼物给阿姆斯特拉德。我记得编辑器在1个磁盘上,但是在编译过程中,随着编译过程的继续,它需要在disk1和disk2之间来回切换(它甚至可能需要在过程中的某些点切换到OS磁盘(但是我不是因此请务必关闭))。

过去,整个操作系统都安装在单个3.5软盘上(但是没有太多),这是过去的美好时光。


4
完全正确。当针对Macintosh的“ lightspeed C”编译器和针对MS-DOS PC的“ turbo C”编译器问世时,我们欣喜若狂,因为它只运行了一次。
S.Lott

3.5?我家的Amstrad的有一个2.5"软驱是的,CP | M是在一组4个磁盘1,和标志是在磁盘4.我不记得是在那里还有什么。
彼得·泰勒

@Peter Taylor:您很有可能是正确的。已经很久了(我觉得很老)。
马丁·约克

1
对我来说不是问题。当我学习C时,我有一个不错的21 MB大型硬盘:-)
dan04 2011年

1
@ dan04-离开我们的集体草坪。该死的鞭子鲷鱼和它们花哨的发光硬盘.....;)
系统停机

6

软盘是1971年推出的(即8英寸软盘),但直到70年代中期才流行(带有5.25英寸磁盘)。C来自1973年,所以我认为答案很大程度上取决于您所说的“第一版”和编译上下文是什么。考虑以下变量:

  • 使用的库。编译不在当前磁盘上的库时,必须在这两者之间更换软盘。
  • 程序的复杂性(“ Hello world”与“ Norton Commander”不同)
  • 硬件(个人而言,我认为认真的编译几乎总是在大型机或微型计算机上完成的)

毕竟-这些天来,编译仍然需要几分钟-只需调整硬件与程序复杂性之间的权衡即可。只有软盘部分不是:-)。

还应考虑到70年代的许多计算仍是在终端大型机结构上完成的,因此更换软盘可能不太可能(至少在商业生产环境中。我不知道C是否被用作“家庭”)。 “ 语言)。


5
“第一”版本未在软盘上运行。它是AT&T的基于硬盘的PDP-11系统。但是,带有软盘(例如CP / M,MS-DOS等)的计算机的第一个版本很难管理。
S.Lott

我记得从60年代就看到过一张软盘(可移动磁盘)。那是4英尺。它们安装在胶合板上,因此可以在实验室周围滚动。我记得举行了大约5K。
马丁·约克

您不想每次运行编译器都替换那个!很想看一张那个的照片:-)。
vstrien

6

我第一次学习C语言是在80年代末期的Commodore 64(是的,有一个编译器)上。如果我没记错的话,编译器/编辑器/链接器位于一个磁盘上,而源文件位于另一个磁盘上,因此在编译阶段必须至少交换一次。当然,在C-64上,您总是在交换。

对于它的价值,我仍然拥有该编译器的包装盒和文档。每两年进行一些怀旧阅读。


2
我还于1984年在Commodore 64上学习了C语言。我记得在编译过程中非常清楚地交换了软盘。我想说的是我使用的是Abacus的编译器,但我可能记错了。
克林特·米勒

@Clint,我确定你是正确的。那是盒子上的名字。
DevSolo 2011年

@Clint:我有相同的编译器。Commodore 64是一台很棒的计算机,可用来学习编程。它足够先进,可以执行一些很酷的工作,但又足够简单,您可以理解与之交互所需的所有硬件,这是必需的,因为它们当时没有现在的高级抽象层。
2012年

6

我的第一个C编译器是在运行CP / M的TRS-80 Model 4上运行的(第一个可以正确运行的模型,没有永久性映射到ROM的低内存位置)。它要求第一个驱动器中的磁盘具有CP / M。

一旦使用完所使用的任何编辑器,我都必须先编译,汇编和链接程序,然后才能运行它。每个过程都是自己的过程,从命令行开始。编译器,汇编器和链接器并不都适合一张软盘。(IIRC,汇编器和链接器可以装配在一起。)

因此,我将在CP / M系统磁盘上具有程序和编辑器,并在编译器和汇编器/链接器磁盘中进行交换。

我当时正在寻找一个程序,该程序可以让我在没有系统磁盘的情况下运行,并且我有一个计划(我已经不记得了)进行设置,以便可以制作一些批处理文件并自动执行命令行调用,但我从来没有遵循。

在尝试使用该系统后,我几乎放弃了C,并回到Pascal了几年。


大概是UCSD P系统Pascal吗?
quick_now 2011年

2
@quickly_now:可以编译为p代码的东西,但是没有记为UCSD。自然,几十年前我就摆脱了它,对此一无所知。当我获得Turbo Pascal时,我几乎全都忘记了。
David Thornley,

5

当我在高中(1989-1990)时,我正在用苹果II做帕斯卡,速度很。您可以编写一个100行左右的程序,当您点击编译时,它花了几分钟。我记得在程序运行之前,您有时间去编译它的男装室。

那个学期到了一半,我得到了一个更快的Mac SE!认为Pascal更好。


2
+1表示Mac SE。我记得我的Mac SE有一个20MB的外部硬盘驱动器。它太大了,整个Mac都坐在上面。
philosodad 2011年

我有一个内部设备,但我可能也有一个。真的是非常好的设计。
Zachary K

5

我的一个朋友的父亲在当时是一位高调的程序员。他厌倦了等待几天的编译结果,有时甚至是一周。大部分工作都是在家工作,编写程序,打卡,开车过去,把盒子交给操作员,然后争论一会儿,他的代码比其他所有代码都重要,然后再等。

有时代码从未到达计算机,我的朋友告诉我他父亲的真实经历,我的意思是真的很生他的气。他从来没有真正理解过为什么直到人生的晚些时候,但是男孩子这个装满硬纸的盒子看起来很有趣……嘿,它们也装满了孔!

有一天,他将论点提交给管理层,我想他是一个很好的案例,因为他们将一台微型计算机送到了他的房子。我应该提到的是,到那时,计算机已经占据了起居室的绝大部分,当然,起居室已经不可用了。

所以是的,在编译的各个阶段之间交换磁盘是绝对有可能的,当我说这是对之前的可用版本的VAST改进时,请相信我!

只需等待20年左右,我可以想象有人在问一个类似以下问题的问题:

之前,他们必须使用键盘逐个字母键入代码是真的吗?


3

我不了解C,但是在这段时间内,我有一个Microsoft Fortran编译器,它花了两遍。不仅如此,而且我有一个长达一页的程序,它运行不正确(我确定源代码正确),就这样,我完全放弃了为PC进行编译。这是互联网时代之前的日子,个人电脑属于我的雇主。拥有PC仍然很棒,我可以将工作放在软盘上并带回家进行编辑。因此,第二天上班时,我已经有一个经过编辑的程序,而不是手写的笔记。

甚至在更早的日子(我从70年代的编程春天开始)起,编译器就成为批处理大型机OS上的单个JCL命令。就像上面描述的那样。您排队等着打孔,然后打了您的便签纸。然后,您通过窗口将它们交给操作员。根据PNC的颜色(基本上是带有帐号/密码的打孔卡),您可能会在1到24小时后得到结果。低水平的学生后来转机了。在两周内完成“ hello world”任务确实是一个挑战!几年后,我从事了兼职编程工作,晚上可以在计算机中心闲逛。我们中有些人甚至可以自己喂读卡器。然后转机仅需几分钟/但是您只能在深夜这样做。

因此,长期以来,编译器主要用于大型机(大型组织拥有的价值数百万美元的计算机)。而且周围的少数微型计算机通常必须以奇怪和棘手的方式进行编程。我用一台小型计算机将地震图数字化。引导纸带穿过它大约需要10-15分钟才能引导操作系统,然后您可以在数字化仪桌上进行操作。


2

是肯定的。我没有在那些旧的CP / M机器上使用C,而是使用CB-80。编译的BASIC。(是的,这太可怕了)。在Heath / Zenith Z-89上,带有2个软盘驱动器,每个软盘驱动器容纳89K。

单磁盘编译是如此可怕,以至于忘记了它。磁盘交换过多。2个软盘驱动器很豪华!一方面提供源代码,另一方面提供编译器。设置一个编译器,然后走走去喝杯茶,然后机器进入“ clang clang clang”状态,因为软盘被接合和分离,并且头部突然晃动。

老板买了一个5 MB的硬盘,大小约为18x18x8英寸,单独供电,并用一条约4英尺长的带状电缆连接到H89的背面。

哦,速度!和容量!5 MB的存储空间。


1

我不了解C(我的第一个C编译器是从硬盘运行的,并且运行速度并不快),但是我使用的第一个宏汇编器(C64)需要软盘切换(一个用于加载汇编器,另一个用于加载汇编器)。代码),花费了20多分钟来构建系统,经过几个月的开发,软盘驱动器和母板都过热并死亡。


1

1988年的大学= PC上的Fortran,8088 512K(这是K !!)的ram和一个软盘驱动器。编译花费了20-30分钟,我不必交换软盘,因为我有了那些新的720K。

适用于整个班级的Sun3(68030 1Mb ram)和24个vt100终端。


1

我想在我的时间之前。我的第一个“真实”编程(无论如何在PC上)是COBOL。当时我们使用IBM PC。他们有2个360k软盘驱动器;一个拥有编译器,另一个拥有您的源代码。

我确实知道,即使是我简单的大学项目,在这些软盘上运行时实际上也要花费15分钟的时间进行编译-在编译过程中,我会去自助餐厅喝咖啡。然后,对于最后的项目,我在我的伙伴之家进行了这项工作。他刚刚得到了一台全新的机器,上面有一个叫做硬盘的东西-10兆字节!我们的项目在一分钟内完成了编译。这完全让我震惊。


您很可能没有设置任何磁盘缓冲区。仅有几个奇迹。

1

我不得不在旧的128K Mac上为各种应用程序做软盘跳舞,所以尽管有什么细节我都没说,但我一分钟都没怀疑。如果这不是为什么BASIC解释器在早期的个人计算机上如此普遍(不需要多次通过,符号表等)的一部分,我就不会感到惊讶。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.