当一台计算机非常昂贵,稀有,只有一个房间那么大时,程序员如何工作?


19

我认为他们不能像今天一样整天坐在电脑前。那么他们是如何编写程序的呢?在纸上,等到计算机可用时再键入?他们如何进行测试?


9
嗯...有一件事,他们确实确实在将代码提交给编译器之前检查了他们的代码。失去因错过分号而浪费的宝贵时间没有任何乐趣。
Mchl 2011年

Answers:


36

大约在1974年,您将坐在一张方便的桌子上,用手写在纸上写程序。您可以通过使用测试数据在脑海中穿行进行测试。如果您对自己的程序正确无误感到满意,就去打孔卡室,将程序转录到打孔卡上,每张卡一行80个字符。您还将对程序可能需要的任何数据打孔卡。然后,您还将用作业控制语言(JCL)打一些难以置信的加密卡,这些卡将告诉计算机如何编译和运行程序以及它将使用什么输入/输出设备。然后,将卡带到“ IO窗口”,在此处将其交给业务员。

轮到您时,店员会将您的卡装到料斗中,然后按一下按钮告诉计算机开始读取它们。程序的输出通常会发送到行式打印机或鼓式绘图仪。程序完成后,店员会收集您的卡,并输出纸质副本,然后将它们放在鸽子的洞中,以便您拿起它们。您将选择输出,查看结果,然后重复该过程。一个完整的周期可能需要20分钟到24小时。您可能会想象,当您发现唯一的输出是来自编译器的打印消息,告诉您程序存在语法错误时,您并不高兴。

您可能还可以通过电传打字机访问计算机,因此实际上可以与远程计算机进行交互式会话。但是,在电传打字机上打字会很痛苦(非常僵硬的键和很大的声音),因此您通常还是要先在纸上编写和测试程序。

到1976年,UNIX系统和微型计算机(如PDP 11-70)变得越来越普遍。您通常在一个装有25x80字符显示器的视频终端的房间里工作。这些通过串行线连接到计算机。粗略,但与今天在命令提示符下工作没什么不同。当时的大多数编辑都很cr脚。Vi是一个了不起的改进。


7
对打孔卡编号也是一个很好的主意,例如用于丢掉卡包。
Sharptooth 2011年

2
有一个著名的故事是关于某位老板给他的助手一盘打孔卡,其中包含一组随机数。助手放下托盘,卡片遍地。助手不知道该怎么办,拿起卡花了几个小时将它们按数字顺序排序,这当然破坏了它们的随机性。
查尔斯E.格兰特

3
@Louis Rhys:此链接有帮助吗?en.wikipedia.org/wiki/Punched_card
锐齿

1
过去的好时光。当按键是共享资源时。而且我们几乎没有红点贴纸,可以将其放在纸牌上,以表明它具有较高的优先级,并且将首先放入卡片槽中。
S.Lott

6
甚至不要忘记管理层执行此操作的方式。您的部门在大型机上按时计费。
隐身

3

1975年,我十几岁(我出生于1959年)在PL / 1(在IBM 370/168上)学习编程。我有幸有一位父亲在IBM France工作。他的老板M. Dornbush用法语写了一本书,讲的是PL / 1中的编程。

当时,一个程序(由学习编程的人完成)是一包几百张打孔卡。Charles E.Grant的答案描述了该过程:您首先在纸上编写了程序,然后仔细检查了程序。然后,您在IBM29 钥匙打孔机上打了卡,最后将卡架放入打孔的读卡器中。请注意,那时的源程序很小(一个有数千条语句的程序,即打孔卡是一个很大的程序)。

十几岁的时候,PL / 1检出编译器的功能给我留下了深刻的印象,尤其是建议对错别字进行更正。

在接下来的几年中,我在巴黎的德古维特宫科学博物馆里使用了一台旧的CAB / 500计算机和一台IBM / 1620计算机(这两台计算机都够老了,可以放在博物馆里)。CAB / 500于1960年代生产,当我还是婴儿(1958年至1962年)时,父亲写了它的PAF编译器(一种BASIC语言)。

今天,我仍在从事与编译器相关的工作(MELT),并且是可以声称他看到自己的父亲在编写编译器的少数人之一!

在CAB / 500上使用PAF的有趣之处在于它的交互式编辑器(带有物理tty和打孔磁带)能够完成(在关键字上)。它有点像原始的IBM PC,某种程度上是“个人计算机”。

IBM / 1620的有趣之处在于,您必须通过在键盘上输入一些数字来引导它,以加载监视器和Fortran编译器。

请注意,在1950年代,有些计算机甚至还没有打孔的读卡器(AFAIK在IBM650和IBM7094上是可选的),但是我从未见过。

还请注意,在1970年代中期访问计算机是一项巨大的特权(因为它们是昂贵的设备)。也许今天等效的方法可能是使用硅制造机器或数据中心规模的计算能力。


2

这取决于您要走多远。

最早的“编程”使用了看起来像这样的打孔卡(就是cobol)他们用很少的任何交互作用(特别是电气)将代码编写出来,然后(当他们真正有机会的时候)将它们馈入一台计算机进入建筑物,以便代码运行一会儿并吐出某种形式的打印稿。通常会有很多其他人想要使用同一台计算机,因此您必须在任何地方等待几天(如果真的很忙)才能获得结果,这通常不会完全没用(您认为现在遇到语法错误可能会令人沮丧。试想一下,如果您必须完全重写代码的一部分,然后等待一天来编译它)。因为计算机非常稀缺,所以他们不必花太多时间检查输入,也不需要进行可用性测试或任何其他关键测试。

当PDP和等效项变得更加普遍时,程序员(特别是在大学环境中)将把他们的代码写在纸上,然后用PDP预定时间来键入他们的代码并运行几次。除非他们在早上的一小段时间内工作,否则他们没有太多时间,所以人们整夜熬夜只是为了让他们的代码能够正常运行,这种情况并不罕见,而且“真正的” PDP上的时间有限(或等效)导致许多小组建立自己的克隆,以获得更多时间。


1

我想说,在那些日子里,实际上使用计算机程序可能比今天编写一个计算机程序要容易一些。鉴于今天的IDE比当时的计算机程序的用户界面更加用户友好,即使它们具有远程串行终端也是如此。大多数程序使用秘密的未公开密钥序列或命令。

我对古代计算机系统的唯一经验是旧的柯达2610照片彩色打印机。它使用光条读取器从串行TTY引导。在我任职期间,电源故障后只需要重新启动一次即可。

通过串行vt100 tty执行命令控制,但是使用可以读写纸条的机械tty保存和恢复所有配置。


-1

我记得我母亲告诉我她正在大学编程(大约1969年至1970年)。她说,他们使用打孔卡的第一年就很痛苦。第2年,他们获得了PDP-8,这是一台很棒的计算机,我认为他们实际上有一个终端,或者至少有纸带。

我认为她在fortran和lisp中工作。


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.