Stimmt es, dass die ersten Versionen von C-Compilern Dutzende von Minuten liefen und das Austauschen von Disketten zwischen den Phasen erforderten?

15

Inspiriert von dieser Frage .

Ich habe gehört, dass einige sehr sehr frühe Versionen von C-Compilern für Personal Computer (ich denke, es ist um 1980) auf zwei oder drei Disketten gespeichert waren. Um ein Programm zu kompilieren, musste man die Diskette zuerst mit "first pass" einlegen und ausführen den "ersten Durchgang", wechseln Sie dann mit "zweiten Durchgang" auf die Festplatte, führen Sie das aus, und machen Sie dasselbe für den "dritten Durchgang". Jeder Durchgang dauerte Dutzende von Minuten, sodass der Entwickler selbst bei einem Tippfehler viel Zeit verlor.

Wie realistisch ist diese Behauptung? Was waren tatsächliche Zahlen und Details?

scharfer Zahn
quelle
2
Es klingt wie es wahr sein könnte. In den 60er Jahren, als die Programme auf Lochkarten oder Papierbändern liefen, musste ein Programmierer möglicherweise mehr als einen Tag warten, um von einem Tippfehler zu erfahren.
Chris Card
3
Interessante Frage. Wenn dies wahr ist, bin ich froh, dass ich jetzt und nicht dann lebe;)
Anto
2
Ich erinnere mich, dass ich mehrere Male die Festplatten tauschen musste, um Pascal auf dem Amstrad-PC zu kompilieren .
Martin York
Nun, die Sache mit dem Warten am Tag war nicht so sehr die Laufzeit des Jobs, sondern die Warteschlange vor dem Job. Früher gab es Orte, an denen Sie Ihr Kartenspiel abgeben wollten, und einige Nazis in einem weißen Kittel nahmen es weg und legten die Karten nach Belieben in den Trichter. Die Laufzeit beträgt möglicherweise nur einige Minuten oder Sekunden. Die menschliche Bearbeitungszeit betrug oft Stunden.
quick_now
4
Ich habe moderne C ++ - Projekte gesehen, bei denen eine vollständige Bereinigung und Wiederherstellung Dutzende von Minuten dauert und anstelle von CD-Wechseln virtuelle Speicherseiten automatisch über das Betriebssystem erstellt werden. Warum sagen alle immer wieder, dass Computer heutzutage so weit fortgeschritten sind? =)
Patrick Hughes

Antworten:

29

Absolut. Ich hatte Microsoft C (Version 1.0, glaube ich) für einen Zenith Z100-Computer in den frühen 80er Jahren, der auf mehreren 5,25-Zoll-360-K-Disketten ausgeliefert wurde. Der Z100 hatte keine Festplatte, daher musste ich beim Wechseln häufig die Disketten austauschen zwischen dem Editor, dem Compiler und dem Linker. Die Kompilierungs- und Linkzeiten von mehreren Minuten waren nicht ungewöhnlich. Es war so ärgerlich, dass ich 500 US-Dollar für eine 2-MB-Speichererweiterungskarte (ja, Megabyte) bezahlte, damit ich alle Dateien in eine laden konnte RAM-Disk. Das verkürzte die Zeit auf ungefähr 30 Sekunden. Witzig ... Ich habe es damals genossen zu programmieren, weil es Spaß gemacht hat. Heute ist es Arbeit.

SteveM82
quelle
+1 Ich habe jedoch das gegenteilige Gefühl. Nach dem Lesen Ihrer Antwort fühlt sich die Programmierung heute plötzlich lustiger an.
Simon Bergot
Microsoft C 1.0 war tatsächlich eine neu gepackte Version von Lattice C. AFIK, Lattice C war der erste MS-DOS C-Compiler. Es waren zwei separat ausgeführte Compiler-Durchläufe erforderlich.
OldFart
1
Woah! 2 MB! Das war riesig für die Zeit.
System Down
Ich habe Turbo C 1.0 auf den IBM-PCs verwendet (na ja, wirklich ATs, wenn ich mich richtig erinnere) und es war nicht so schlimm. Das waren allerdings schnellere Maschinen.
Gort the Robot
9

Es ist wahrscheinlich wahr.

In den frühen Tagen der Heimcomputer (für die Kinder / Eltern nicht die Hobiest) Maschinen hatten nicht einmal Festplatten.

Meine Eltern hatten einen Amstrad, auf dem sich das Betriebssystem auf einer Diskette befand, und der es Ihnen ermöglichte, die auszuführende Anwendung auszuwählen, für die möglicherweise ein Wechsel der Diskette erforderlich war (dh die Textverarbeitung befand sich auf einer anderen Diskette) brauchte einige spezialisierte OS-Service.

Ich hatte eine Kopie von Pascal für den Amstrad. Ich erinnere mich, dass sich der Editor auf einem Datenträger befand, aber während der Kompilierung musste zwischen Datenträger1 und Datenträger2 hin und her gewechselt werden, da die Kompilierungsvorgänge fortgesetzt wurden (an bestimmten Stellen in den Prozessen musste möglicherweise sogar auf den Betriebssystemdatenträger gewechselt werden (was ich jedoch nicht bin) also sicher aus)).

Eine gute alte Zeit, in der das gesamte Betriebssystem auf eine einzelne 3,5-Diskette passte (aber sonst nicht viel).

Martin York
quelle
4
Komplett wahr. Als der "Lightspeed C" -Compiler für den Macintosh und "Turbo C" für die MS-DOS-PCs herauskam, waren wir begeistert, weil er in einem einzigen Durchgang lief.
S.Lott
3,5? Amstrad meiner Familie hatte ein 2,5-Zoll-Diskettenlaufwerk. Und ja, CP | M befand sich auf Diskette 1 eines 4er-Satzes und Logo auf Diskette 4. Ich erinnere mich nicht, was sonst noch dort war.
Peter Taylor
@ Peter Taylor: Sie sind mehr als wahrscheinlich richtig. Es ist so lange her (ich fühle mich alt).
Martin York
1
War für mich kein Problem. Als ich C lernte, hatte ich eine schöne große 21 MB Festplatte :-)
dan04 16.03.11
1
@ dan04 - Runter von unseren kollektiven Rasenflächen. Verdammte Whipper Snapper und ihre ausgefallenen Shmancy-Festplatten .....;)
System Down
6

Disketten wurden 1971 eingeführt (das heißt die 8-Zoll-Diskette), waren aber erst Mitte der 70er Jahre (mit den 5,25-Zoll-Disketten) beliebt. C stammt aus dem Jahr 1973, daher hängt die Antwort meines Erachtens stark davon ab, was Sie als "erste Version" bezeichnen und wie der Kompilierungskontext lautete. Denken Sie an diese Variablen:

  • Benutzte Bibliotheken . Wenn Sie eine Bibliothek kompilieren, die sich nicht auf der aktuellen Festplatte befindet, müssen Sie die Disketten dazwischen wechseln.
  • Komplexität des Programms ("Hallo Welt" ist nicht dasselbe wie "der Norton Commander")
  • Hardware (Ich persönlich denke, dass das Kompilieren fast immer auf Großrechnern oder Minicomputern durchgeführt wurde.)

Schließlich dauert das Kompilieren heutzutage noch einige Minuten. Passen Sie einfach den Kompromiss zwischen Ihrer Hardware und der Komplexität des Programms an. Nur der Disketten-Teil ist nicht :-).

Berücksichtigen Sie auch, dass in den 70er Jahren noch viel auf einem Terminal-Mainframe-Computer gearbeitet wurde, so dass das Wechseln von Disketten (zumindest im geschäftlichen Produktionskontext) eher unwahrscheinlich ist. Ich weiß nicht, ob C als "Heim" verwendet wurde " Sprache).

vstrien
quelle
5
Die "erste" Version lief nicht auf Disketten. Es war ein festplattenbasiertes PDP-11-System von AT & T. Die erste Version für einen Computer mit Disketten (z. B. CP / M, MS-DOS usw.) war jedoch ziemlich schwierig zu verwalten.
S.Lott
Ich erinnere mich an eine Diskette (Wechseldatenträger) aus den 60er Jahren. Es war 4 Fuß breit. Sie wurden auf Sperrholz montiert, damit sie im Labor herumgerollt werden konnten. Ich erinnere mich, dass es ungefähr 5 Kilometer waren.
Martin York,
Sie möchten DIESES nicht für jeden Compilerlauf ersetzen! Würde gerne ein Bild davon sehen :-).
Vstrien
6

Mein erster Versuch, C zu lernen, war in den späten 80er Jahren auf einem Commodore 64 (ja, es gab einen Compiler dafür). Wenn ich mich richtig erinnere, befand sich der Compiler / Editor / Linker auf einer Festplatte und Ihre Quelle auf einer anderen, und Sie mussten während der Kompilierungsphase mindestens einmal tauschen. Natürlich warst du auf der C-64 immer im Austausch.

Für das, was es wert ist, habe ich immer noch die Box und die Dokumentation für diesen Compiler. Macht alle paar Jahre eine nostalgische Lektüre.

DevSolo
quelle
2
Ich habe C auch 1984 auf dem Commodore 64 gelernt. Ich erinnere mich, dass ich während des Kompilierens ziemlich deutlich Disketten getauscht habe. Ich möchte sagen, dass ich einen Compiler von Abacus verwendet habe, aber ich kann mich möglicherweise nicht richtig daran erinnern.
Clint Miller
@Clint, ich bin sicher, du hast recht. Das ist der Name auf der Schachtel.
DevSolo
@Clint: Ich hatte den gleichen Compiler. Der Commodore 64 war ein großartiger Computer, auf dem man Programmieren lernen konnte. Es war fortgeschritten genug, um einige wirklich coole Sachen zu machen, aber einfach genug, um die gesamte Hardware zu verstehen, mit der Sie interagieren mussten. Dies war erforderlich, weil sie damals nicht die Abstraktionsschichten auf hoher Ebene hatten, die sie heute hatten.
Tauchen Sie
6

Mein erster C-Compiler befand sich auf einem TRS-80-Modell 4, auf dem CP / M ausgeführt wurde (das erste Modell, das dies ordnungsgemäß ausführen würde und dessen Speicherplatz nicht dauerhaft dem ROM zugeordnet war). Die Festplatte im ersten Laufwerk musste CP / M enthalten.

Sobald ich mit dem von mir verwendeten Editor fertig war, musste ich das Programm kompilieren, zusammenstellen und verknüpfen, bevor ich es ausführen konnte. Jedes war ein eigener Prozess, der über die Befehlszeile gestartet wurde. Der Compiler, Assembler und Linker passen nicht alle auf eine Diskette. (IIRC, der Assembler und der Linker könnten zusammenpassen.)

Daher würde ich das Programm und den Editor auf der CP / M-Systemplatte haben und die Compiler- und Assembler- / Linker-Platten austauschen.

Ich suchte nach einem Programm, mit dem ich ohne Systemdatenträger arbeiten konnte, und hatte einen Plan (an den ich mich nicht mehr erinnere), um die Dinge so einzurichten, dass ich eine kleine Batchdatei erstellen und die Befehlszeilenaufrufe automatisieren konnte. aber ich bin nie durchgekommen.

Nachdem ich versucht hatte, dieses System zu verwenden, gab ich C so ziemlich auf und kehrte für einige Jahre zu Pascal zurück.

David Thornley
quelle
Wahrscheinlich UCSD P-System Pascal?
quick_now
2
@quickly_now: Etwas, das zu p-Code kompiliert wurde, aber nicht als UCSD abgerechnet wurde. Natürlich habe ich es vor Jahrzehnten losgeworden und erinnere mich wenig daran. Als ich Turbo Pascal bekam, vergaß ich so ziemlich alles.
David Thornley
5

Als ich in der High School war (1989-1990) machten wir Pascal auf einem Apfel II und es war SLOW . Sie können ein Programm mit etwa 100 Zeilen schreiben, wenn Sie auf Kompilieren klicken, dauert es einige Minuten. Ich erinnere mich, dass Sie Zeit hatten, in den Mens Room zu gehen, während er kompiliert wurde, bevor das Programm ausgeführt wurde.

Etwa auf halbem Weg habe ich einen Mac SE bekommen, der so viel schneller war! Denke, Pascal war so viel besser.

Zachary K
quelle
2
+1 für die Erwähnung des Mac SE. Ich erinnere mich, dass ich eine externe 20-MB-Festplatte für meinen Mac SE bekommen habe. Es war so groß, dass der gesamte Mac darauf saß.
Philosodad
Ich hatte eine interne, aber ich könnte auch eine davon gehabt haben. Sehr schönes Design wirklich.
Zachary K
5

Der Vater eines Freundes von mir war damals ein bekannter Programmierer. Er wurde müde, auf die Ergebnisse seiner Zusammenstellungen zu warten, Tage, manchmal Wochen. Meistens von zu Hause aus gearbeitet, das Programm geschrieben, die Karten gestanzt, überfahren, die Box dem Bediener übergeben und eine Weile darüber streiten, dass sein Code wichtiger war als alle anderen und warten.

Manchmal erreichte der Code nie den Computer, mein Freund erzählte mir die Geschichte der Zeit, als sein Vater wirklich, ich meine WIRKLICH sauer auf ihn wurde. Er hat nie wirklich verstanden, warum bis viel später im Leben, aber Junge, diese Schachtel voller starrer Papiere sah aus wie Spaß ... Hey, sie sind auch voller Löcher !!!

Eines Tages nahm er die Auseinandersetzung mit dem Management auf, und ich glaube, er machte eine gute Sache, weil sie einen Mini-Computer zu seinem Haus lieferten. Ich sollte erwähnen, dass der Computer bis dahin den größten Teil des Wohnzimmers einnahm, was natürlich verboten war.

Also ja, das Austauschen von Datenträgern zwischen den Phasen in einer Zusammenstellung ist definitiv eine Möglichkeit und vertraue mir, wenn ich sage, dass es eine VAST Verbesserung gegenüber dem war, was vorher verfügbar war !!!

Warten Sie 20 Jahre oder so, ich kann mir vorstellen, dass jemand eine Frage stellt, die etwa so aussieht:

Stimmt es, dass sie früher ihren Code Buchstabe für Buchstabe über Tastatur eingeben mussten?

Newtopian
quelle
3

Ich weiß nichts über C, aber in dieser Zeit hatte ich einen Microsoft Fortran-Compiler, der zwei Durchgänge benötigte. Nicht nur das, aber ich hatte ein seitenlanges Programm, bei dem es falsch lief (ich bin sicher, der Quellcode war richtig), also gab ich das Kompilieren für den PC auf. Es waren Tage vor dem Internet, und der PC gehörte meinem Arbeitgeber. Es war immer noch toll, den PC zu haben, ich konnte die Arbeit auf eine Diskette legen und sie mit nach Hause nehmen und bearbeiten. Als ich also am nächsten Tag zur Arbeit ging, hatte ich bereits ein bearbeitetes Programm und keine handschriftlichen Notizen.

Sogar in den viel früheren Tagen, als ich mit der Programmierung des Frühjahrs 70 begann, war der Compiler ein einzelner JCL-Befehl auf einem Großrechner-Betriebssystem mit Stapelverarbeitung. Es ist genau wie oben beschrieben. Sie haben in der Schlange auf einen Schlag gewartet und Ihre Holerith-Karten gestanzt. Dann gaben Sie sie durch ein Fenster an einen Bediener weiter. Abhängig von der Farbe Ihres PNC (im Grunde genommen eine Lochkarte mit Kontonummer / Passwort) erhalten Sie Ihre Ergebnisse möglicherweise 1 bis 24 Stunden später zurück. Niedrigstufige Studenten hatten den späteren Turnaround. Es war wirklich eine Herausforderung, die "Hallo Welt" -Aufgabe in den dafür vorgesehenen zwei Wochen zu erledigen! Ein paar Jahre später bekam ich einen Teilzeitjob als Programmierer und konnte nachts im Rechenzentrum rumhängen. Einige von uns könnten den Kartenleser sogar selbst füttern. Dann dauert es nur noch ein paar Minuten. Aber das konnte man erst spät in der Nacht.

Daher waren Compiler lange Zeit hauptsächlich eine Sache für Großrechner (Maschinen der Millionen-Dollar-Klasse, die sehr großen Organisationen gehören). Und die wenigen Minicomputer in der Umgebung mussten oft auf seltsame und knifflige Weise programmiert werden. Ich habe mit einem Mini-Computer Seismogramme digitalisiert. Es dauerte ungefähr 10-15 Minuten, bis das Papierband durch das Betriebssystem gelaufen war, und dann machten Sie Ihr Ding auf dem Digitizer-Tisch.

Omega Centauri
quelle
2

Ja sicher. Ich habe auf diesen alten CP / M-Maschinen kein C verwendet, sondern CB-80. Kompiliertes BASIC. (Und ja, es war ziemlich schrecklich). Auf einem Heath / Zenith Z-89 mit 2 Diskettenlaufwerken, die jeweils 89 KB fassen.

Die Kompilierung einer einzelnen Festplatte war so schrecklich, dass man sie vergessen musste. Zu viel Plattenwechsel. 2 Diskettenlaufwerke war LUXUS! Quelle auf der einen, Compiler auf der anderen Seite. Stellen Sie eine Zusammenstellung auf und gehen Sie auf eine Tasse Tee weg, während die Maschine klirrend klirrte, während die Disketten ein- und ausgeschaltet wurden und die Köpfe herumknallten.

Der Chef kaufte eine 5-MB-Festplatte mit einer Größe von etwa 18 x 18 x 8 Zoll, die separat mit Strom versorgt und mit einem ca. 2 m langen Flachbandkabel an der Rückseite des H89 befestigt wurde.

Oh die Geschwindigkeit! und die Kapazität! mit 5 MB Speicher.

schnell_nun
quelle
1

Ich kenne C nicht (mein erster C-Compiler lief von einer Festplatte und war nicht schnell), aber der erste von mir verwendete Macro Assembler (C64) erforderte einen Diskettenwechsel (einer zum Laden des Assemblers, der andere zum Laden des Code), dauerte mehr als 20 Minuten, um das System zu erstellen, und nach einigen Monaten der Entwicklung waren sowohl das Diskettenlaufwerk als auch das Motherboard überhitzt und abgestorben.

Steven A. Lowe
quelle
1

College 1988 = Fortran auf einem PC, 8088 512 K (das ist ein K !!) RAM und ein einzelnes Diskettenlaufwerk Das Kompilieren dauerte 20-30 Minuten, ich musste keine Disketten austauschen, weil ich eine dieser neuen 720 K hatte.

Ein Sun3 (68030 1Mb RAM) und 24 VT100 Terminals für die ganze Klasse.

Martin Beckett
quelle
1

Vor meiner Zeit, nehme ich an. Meine erste "echte" Programmierung (jedenfalls auf PCs) war COBOL. Zu dieser Zeit verwendeten wir IBM-PCs. Sie hatten 2 360k-Diskettenlaufwerke; Einer hatte den Compiler und der andere hatte Ihren Quellcode.

Ich weiß, dass sogar meine einfachen College-Projekte buchstäblich 15 Minuten brauchten, um das Laufen auf diesen Disketten zu kompilieren - ich bin in die Cafeteria gelaufen, um Kaffee zu trinken, während es kompiliert wurde. Dann habe ich für das Abschlussprojekt in meinem Buddy-Haus daran gearbeitet. Er hatte gerade eine brandneue Maschine mit dem Namen Festplatte bekommen - 10 Megabyte! Unser Projekt wurde in weniger als einer Minute zusammengestellt. Es hat mich total umgehauen.

zpasternack
quelle
Wahrscheinlich haben Sie keine Festplattenpuffer eingerichtet. Nur wenige haben Wunder gewirkt.
1

Ich musste den Floppy Dance auf meinem alten 128K-Mac für verschiedene Anwendungen ausführen, daher bezweifle ich dies keine Minute, obwohl ich keine Details nennen konnte. Es würde mich nicht wundern, wenn dies nicht dazu beiträgt, dass BASIC-Interpreter auf frühen Personalcomputern so allgegenwärtig waren (keine Notwendigkeit für mehrere Durchläufe, Symboltabellen usw.).

John Bode
quelle