Wie hat die Programmierung funktioniert, als Programmierer Lochkarten verwendeten?

11

Ich habe Folgendes gesehen: Programmieren auf Lochkarten lernen

und ich habe dies gesehen: http://en.wikipedia.org/wiki/Computer_programming_in_the_punched_card_era

aber sie lassen zu wünschen übrig.

Kann mir jemand erklären, wie Programmierer programmiert haben, als sie Lochkarten verwendet haben? Insbesondere das System von Eingabecomputern, das verwendet wird, um Anweisungen von der Lochkarte selbst abzuleiten.

Ich weiß nicht viel über Retrocomputer, daher wäre jedes Ihnen bekannte Eingabesystem in Ordnung. Allgemeinere Antworten werden ebenfalls geschätzt.

Thomas Dignan
quelle

Antworten:

16

Mit einem Wort, schlecht.

Zumindest auf jedem Computer, den ich jemals benutzt oder gehört habe, haben Sie jedoch nicht einzeln Karten eingezogen. Es gab automatisierte Kartenleser, die Hunderte von Karten pro Minute fütterten und lasen (wahrscheinlich um die 1000 pro Minute, aber ich bin mir nicht sicher, welche genauen Spezifikationen vorliegen).

In einem typischen Fall haben Sie den Code von Hand geschrieben und dann auf Karten gestanzt. Jede Karte enthält eine Codezeile (bis zu 80 Spalten). Sie haben das Kartenspiel zur Ausführung genommen. Je nach Auftragsbestand, zwischen einer Stunde oder einem Tag oder später, haben Sie Ihr Deck zusammen mit einem Ausdruck der Ergebnisse zurückbekommen.

Ich sollte wahrscheinlich hinzufügen: Da Ihr Kartenspiel als Job ausgeführt wurde, haben Sie nicht nur den Code für das Programm selbst eingereicht - Sie mussten etwas schreiben, das einem Batch-Datei- / Shell-Skript mit den Anweisungen zum Kompilieren und Ausführen Ihres Programms vage ähnlich ist Code. IBM JCL (zum Beispiel) bleibt stark von den Ursprüngen der Hollerith-Karte beeinflusst.

Ein weiterer kleiner Punkt: Bei den meisten Systemen, an die ich mich erinnere, haben Sie normalerweise eine Zeilennummer auf jeder Lochkarte angegeben. Sie haben es offensichtlich vermieden, ein Deck fallen zu lassen, wenn Sie konnten, aber als (nicht wenn) eines fallen gelassen wurde, war es nicht annähernd die Tragödie, die sich viele vorstellen. Interessanter Nebenpunkt: Zumindest die Kartensortierer, die ich gesehen habe, haben eine Radix-Sortierung verwendet - sie haben die Karten basierend auf einer Ziffer der Zeilennummer in 10 Fächer aufgeteilt und diese dann "zusammengeführt" (alle Karten zu einer einzigen ablegen) bin in der Reihenfolge) und wiederholen Sie dann so oft, wie Sie Ziffern in den Zeilennummern hatten.

Hollerith-Karten waren äußerst einflussreich - 80 Spalten als Grenze überleben immer noch in einem fast beunruhigenden Ausmaß. Zumindest auf den Control Data-Mainframes wurden auch Dinge wie das Dateisystem ziemlich stark beeinflusst. Nachdem die Hollerith-Karten größtenteils verschwunden waren, waren Reste davon im Betriebssystem sichtbar. Beispielsweise wurden Textdateien häufig als eine Reihe von Datensätzen mit 80 Zeichen gespeichert, unabhängig davon, wie wenige / viele Zeichen eine Zeile tatsächlich enthielt. Ich kann mich noch an meine Überraschung über die "Rückständigkeit" eines Systems wie Unix erinnern, bei dem Sie alle vorhergehenden Zeilen lesen mussten , um Zeile N einer Textdatei zu finden, anstatt nur direkt danach suchen zu können.

Jerry Sarg
quelle
Ich denke, was Sie beschreiben, ist eine viel modernere Art, Dinge zu tun. Kartensortierer und Feeder? Meine Güte, meine Mutter hätte dafür getötet ...: - D
littleadv
@littleadv: Hollerith-Karten und Feeder stammen aus der Zeit vor Computern. Ich bin mir bei Sortierern weniger sicher, aber ich bin mir ziemlich sicher, dass sie es auch tun.
Jerry Coffin
1
Wir haben COBOL und RPGIII von Hand auf Papier geschrieben und dann die Karten selbst gestanzt. Die rechten 4 Zeichen auf der Karte wurden für die "Zeilennummer" des Programms verwendet. Ja, ich habe schon einmal ein Kartenfach abgelegt. Wir hatten einen Kartensortierer im selben Raum wie der Schlüssel. Denken Sie daran, COBOL und RPGIII waren SEHR streng formatierte Sprachen. Ihr Code musste in bestimmten Reihenfolgen ausgeführt werden. Dann wurden die Kartenfächer zum Ausführen genommen, und der Bediener führte den Auftrag aus, sodass Sie Ihren Ausdruck zusammen mit Ihren Kartenfächern erhielten. Hoffentlich hatten Sie keine Fehler.
MB34
4
Wir hatten ein Zimmer mit zwei 029 Keypunch-Maschinen , aber keinen Sortierer. Also auch wenn die Karten gezählt waren, haben wir diagonale Linien über die Spitzen zeichnen wie folgt . Wenn Sie eine Kiste mit Autos fallen lassen, landen diese normalerweise in mehreren Gruppen auf dem Boden, die Sie anhand dieser Zeilen zunächst recht gut zusammensetzen und dann den Auftrag beenden können, indem Sie überprüfen, ob die Kartennummern in Ordnung sind.
Tcrosley
2
Die Programme wurden nicht nur auf Karten gestanzt, die Eingabedaten und Ausgabedaten wurden auch auf Karten gestanzt. Karten waren in den späten 70ern und frühen 80ern die primäre Form der Aufbewahrung. Der Speicherplatz war zu teuer, um für andere Zwecke als den Compiler und den Loader verwendet zu werden.
Gilbert Le Blanc
6

Sie haben den Kartenstempel als Editor verwendet.

  • Einlegen == eine neue Karte stanzen.
  • Bewegen == Nimm die Karte und bewege sie an die richtige Stelle.
  • Löschen == Nehmen Sie die Karte heraus und werfen Sie sie in den Papierkorb
  • Kopieren - Bessere Kartenstempel hatten eine Kopierfunktion, mit der eine andere Karte spaltenweise kopiert werden konnte.
  • Zeichen ersetzen - Verwenden Sie die Kopierfunktion, geben Sie jedoch die Ersatzzeichen ein, wenn Sie das zu ersetzende Zeichen erreichen.
  • Zeichen löschen - Verwenden Sie die Kopierfunktion, halten Sie jedoch die kopierte Karte gedrückt, um die Bewegung zu stoppen, und drücken Sie die Leertaste für jedes Zeichen, das Sie "löschen" möchten.
  • Zeichen einfügen - Verwenden Sie die Kopierfunktion, halten Sie jedoch die Originalkarte unbeweglich, während Sie den neuen Text eingeben.

Die Karten waren größtenteils "unveränderlich", aber Sie konnten Zeichen entfernen, indem Sie die Löcher mit dünnem undurchsichtigem Klebeband abkleben.

Sie haben Ihr Programm in der entsprechenden JCL eingelesen und darauf gewartet, dass der Drucker die Ergebnisse ausspuckt. (Könnte Stunden sein!)

James Anderson
quelle
4

Sehr langsam.

Meine Mutter war so eine Programmiererin, also hatte ich Tonnen dieser Karten zu Hause, als ich aufwuchs. Sie würden das Programm auf den Karten codieren und die Karten dann einzeln in den Kartenleser einspeisen (ähnlich wie die Abstimmungsgeräte jetzt funktionieren). Wenn Sie die Karten fallen lassen würden, wären Sie in großen Schwierigkeiten, da Ihnen nur X Maschinenzeit zugewiesen ist und Sie sie in der richtigen Reihenfolge anordnen und die Maschine erneut neu füttern und versuchen müssten, sie herzustellen es pünktlich, bevor der nächste Programmierer Sie rauswirft. Ein triviales Programm (in unseren aktuellen Standards) hat möglicherweise Hunderte, wenn nicht Tausende solcher Karten und Stunden Maschinenzeit benötigt, um es zu laden und auszuführen.

Sehr langweilig.

littleadv
quelle
Auf der anderen Seite gab es wahrscheinlich viel weniger Parasiten in der Branche :)
Haylem
hängt davon ab, wie Sie "Parasit" definieren .... :)
littleadv
Leider meinte ich nicht die berühmten "Bugs" von damals, sondern die Horden von Leuten, die jetzt auf den IT-Zug gesprungen sind.
Haylem
Oh die Nostalgie ... die Welt war in alten Zeiten so ein besserer Ort! Aber wirklich, hauptsächlich, weil wir dazu neigen, die schlechten Sachen zu vergessen. Es gab alle Horden von Menschen, die auf alle Arten von Bandwaggons sprangen, immer gewesen sind und immer sein werden.
littleadv
Pssst. Das waren die Tage. Das ist alles. (Ich weiß eigentlich nicht, ich war nicht da.)
Haylem
1

In gewisser Hinsicht "nicht zu unterschiedlich", in gewisser Weise "sehr unterschiedlich".

Sie schrieben Quellcode, normalerweise auf Papier. Dies wurde dann erneut auf Lochkarten eingegeben (eine Zeile Quellcode pro Karte, normalerweise mit Zeilennummern, sodass Sie Ihren Quellcode leicht reparieren konnten, wenn er in der falschen Reihenfolge endete).

Dem Programm wurden dann Karten mit Anweisungen zum Kompilieren des Programms vorangestellt und Anweisungen zum Ausführen des Programms und zu den zu verwendenden Datendateien (oder Bändern zum Mounten usw. usw.) angehängt.

Dies wurde dann an die Bediener weitergeleitet, die die Karten in einen Geschwindigkeitsleser laden, den Job ausführen und die Ergebnisse auf Ausdrucken zurückgeben würden.

Da ein typischer Bearbeitungs- / Kompilierungs- / Ergebniszyklus in der Größenordnung von "morgen" liegt, tendierten die Leute dazu, ihren Code paranoider auf Syntaxfehler zu überprüfen.

Ohne die Möglichkeit eines interaktiven Debuggens wäre die einzige Möglichkeit, die Ausführung zu verfolgen, das Debuggen von Zeilen, die während der Ausführung gedruckt werden.

An einigen Stellen befand sich der Code eher auf Lochstreifen als auf Lochkarten.

Vatine
quelle