当程序员使用打孔卡时,编程如何工作?


11

我看到了这一点:学习如何在打孔卡上编程

而且我已经看到了:http : //en.wikipedia.org/wiki/Computer_programming_in_the_punched_card_era

但是他们还有很多不足之处。

谁能向我解释程序员使用打孔卡时如何编程?具体地说,输入计算机系统用于从打孔卡本身获取指令。

我对逆向计算机不太了解,因此您熟悉的任何一种输入系统都可以。也应理解更一般的答案。

Answers:


16

一句话,很差。

至少在任何机器上我曾经使用过或听说过,你也不能喂卡一次一个虽然。有自动读卡器,每分钟送入和读取数百张卡(大约为1000 /分钟,但我不确定确切的规格)。

在典型情况下,您是手工编写代码,然后将其打孔到卡上。每张卡包含一行代码(最多80列)。您已经拿走了卡片组来执行。根据积压,从一个小时左右到一天左右不等的任何时间,您都可以收回笔录,并打印出结果。

我可能应该补充一点:由于您的卡片组是作为一项工作而运行的,因此您不仅要提交程序本身的代码,还必须编写类似于批处理文件/ shell脚本的代码,并说明如何编译和执行您的程序。码。例如,IBM JCL仍然受到其Hollerith卡起源的严重影响。

另一个小问题:在大多数系统上,我记得您通常在每个打孔卡上都包含一个行号。显然,如果可能的话,您最好避免丢下一个套牌,但是当(不是)一个套牌掉落时,这实际上并不是很多人想象的悲剧。有趣的一点:至少我看到的卡片分类器使用了基数排序-他们根据行号的一位将卡片分成10个纸箱,然后将它们“合并”在一起(将所有卡片放到一个纸箱中)顺序排列),然后重复您在行号中包含数字的次数。

Hollerith卡极具影响力-80列的极限仍然可以承受到几乎令人不安的程度。至少在Control Data大型机上,文件系统之类的东西也受到了很大的影响。在Hollerith卡大部分都消失了之后,它们的残余物在OS中就可见了-例如,文本文件通常存储为一系列80个字符的记录,而不管一行实际包含多少个字符。我仍然记得我对Unix之类的系统的“落后性”感到惊讶,在该系统中,您必须阅读所有前几行才能找到文本文件的N行,而不仅仅是能够直接查找它。


我认为您所描述的是一种更现代的做事方式。卡分类器和进纸器?天哪,我妈妈会为此而杀...:-D
littleadv 2012年

@littleadv:Hollerith卡和进纸器早于计算机。我不太确定分拣机,但我很确定他们也这样做。
杰里·科芬

1
我们以前常常将COBOL和RPGIII手工写在纸上,然后自己打卡。卡上右边的4个字符用于程序的“行号”。是的,我之前放了一盘纸牌,我们在与钥匙孔同一个房间里有一个纸牌分类器。请记住,COBOL和RPGIII是非常严格格式化的语言。您的代码必须按特定顺序运行。然后,将纸牌送入运行,然后操作员进行作业,将您的打印输出与纸牌一起送给您。希望您没有犯错。
MB34 2012年

4
我们有一间有两台029按键打孔机的房间,但没有分类器。因此,即使卡片已编号,我们也经常像这样在顶部绘制对角线。如果确实放了一箱汽车,通常它们会分成几组落在地板上,您可以根据这些路线将它们很好地拼凑在一起,然后通过验证卡号是否正确来完成工作。
tcrosley 2012年

2
不仅程序被打在卡上,输入数据和输出数据也被打在卡上。卡是70年代末和80年代初的主要存储形式。磁盘空间太昂贵了,无法用于除编译器和加载器以外的任何其他功能。
吉尔伯特·勒布朗克

6

您使用打卡机作为编辑器。

  • 插入==打一张新卡。
  • 移动==拿起卡并将其移动到正确的位置。
  • 删除==取出卡并将其扔进垃圾箱
  • 复制-更好的打卡机具有复制功能,可以逐列复制另一张卡。
  • 重复字符-使用复制功能,但是在到达需要替换的字符时键入替换字符。
  • 删除角色-使用复制功能,但按住复制的卡片可使其停止移动,并在每个要“删除”的角色上打上空格
  • 插入字符-使用复制功能,但在输入新文本时保持原卡不动。

大多数情况下,卡片是“不可变的”,但是您可以通过使用不透明的细胶带在孔上敲击来删除字符。

您读入了由适当的JCL包围的程序,并等待打印机吐出结果。(可能是几个小时!)


4

非常缓慢地。

我母亲是一位程序员,所以我长大后在家有很多这样的卡。他们要做的是对卡上的程序进行编码,然后将卡一张一张地送入读卡器(类似于现在的投票机工作方式)。如果您丢下了卡片,将会遇到很多麻烦,因为您只分配了X台机器时间,因此必须按正确的顺序安排它们,然后重新开始重新喂入机器,然后尝试重新制作在下一个程序员将​​您踢出之前按时完成。一个琐碎的程序(按照我们当前的标准)可能需要数百(如果不是数千)张这样的卡,以及数小时的机器时间来加载和运行它。

非常乏味。


另一方面,该行业中的寄生虫可能很多:)
haylem 2012年

取决于您如何定义“寄生虫”。...:)
littleadv 2012年

不幸的是,我不是那个时候的著名“臭虫”,而是成群结队地跳入IT潮流的人们。
haylem 2012年

哦,怀旧……过去的世界真是个好地方!但实际上,主要是因为我们倾向于忘记不好的东西。有成群的人跳上各种各样的潮流,过去一直而且永远都会。
littleadv 2012年

嘘 那些日子。就这样。(我实际上不知道,我当时不在那儿。)
haylem 2012年

1

在某些方面“不太不同”,在某些方面“非常不同”。

他们通常在纸上写源代码。然后将其重新键入打孔卡(每张卡的一行源代码,通常带有行号,因此当源代码以错误的顺序结束时,您可以轻松地修复源代码)。

然后在程序的前面加上卡片,其中包含有关如何编译程序的说明,并在其后缀有有关如何运行程序以及要使用哪些数据文件(或装入磁带等)的说明。

然后将其提交给操作员,操作员将这些卡加载到速度读取器中,运行作业并在打印输出上返回结果。

由于典型的编辑/编译/结果周期为“明天”,因此人们倾向于更加偏执地对代码进行语法检查。

不可能进行交互式调试,唯一跟踪执行的方法是在执行过程中打印调试行。

在某些地方,代码将在打孔带上而不是在打孔卡上。

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.