Daher habe ich versucht, ein bisschen nachzuforschen, indem ich nach Handbüchern für PDP-10 / TOPS-10 gesucht habe, um herauszufinden, wie der Stand der Technik vor Pfeifen war. Ich fand diese , aber TOPS-10 bemerkenswert schwer zu Google. Es gibt ein paar gute Referenzen auf der Erfindung des Rohres: ein Interview mit McIlroy , über die Geschichte und Wirkung von UNIX .
Sie müssen dies in einen historischen Kontext stellen. Es gab nur wenige moderne Werkzeuge und Annehmlichkeiten, die wir für selbstverständlich halten.
"Zu Beginn programmierte Thompson nicht einmal auf dem PDP selbst, sondern verwendete stattdessen eine Reihe von Makros für den GEMAP-Assembler auf einem GE-635-Computer." (29) Auf dem GE 635 wurde ein Papierband erzeugt und dann getestet der PDP-7, bis laut Ritchie "ein primitiver Unix-Kernel, ein Editor, ein Assembler, eine einfache Shell (Befehlsinterpreter) und einige Dienstprogramme (wie die Befehle Unix rm, cat, cp) fertiggestellt wurden Punkt, das Betriebssystem war selbsttragend, Programme konnten geschrieben und getestet werden, ohne auf Papierband zurückgreifen zu müssen, und die Entwicklung des PDP-7 selbst wurde fortgesetzt. "
Ein PDP-7 sieht so aus . Beachten Sie das Fehlen einer interaktiven Anzeige oder einer Festplatte. Das "Dateisystem" würde auf dem Magnetband gespeichert. Es gab bis zu 64 KB Speicher für Programme und Daten.
In dieser Umgebung tendierten Programmierer dazu, die Hardware direkt anzusprechen, beispielsweise durch Ausgabe von Befehlen, um das Band hochzufahren und Zeichen nacheinander zu verarbeiten, die direkt von der Bandschnittstelle gelesen wurden. Darüber lieferte UNIX Abstraktionen, sodass sie nicht als separate Schnittstellen "read from teletype" und "read from tape" zusammengefasst wurden, sondern mit dem entscheidenden Zusatz "read from output of other program", ohne eine temporäre Kopie auf der Festplatte zu speichern oder Band ".
Hier ist McIlroy über die Erfindung von grep
. Ich denke, dass dies eine gute Arbeit ist, um den Arbeitsaufwand in der Umgebung vor UNIX zusammenzufassen.
"Grep wurde für mich erfunden. Ich habe ein Programm zum Vorlesen von Text mit einem Sprachsynthesizer erstellt. Während ich die phonetischen Regeln erfand, überprüfte ich das Wörterbuch von Webster auf Wörter, an denen sie scheitern könnten. Wie gehen Sie beispielsweise mit dem Digraphen um?" ui ', was auf viele verschiedene Arten ausgesprochen wird:' fruit ',' guile ',' guilty ',' qual ',' intuit ',' beguine '? Ich würde das Wörterbuch in Teile aufteilen, die in den begrenzten Puffer und die begrenzte Verwendung von ed passen ein globaler Befehl zum Auswählen einer Liste. Ich würde diese Liste durch wiederholtes Scannen mit ed verkleinern, um zu sehen, wie jede vorgeschlagene Regel funktioniert. "
"Der Vorgang war langwierig und furchtbar verschwenderisch, da das Wörterbuch geteilt werden musste (man konnte es sich nicht leisten, eine geteilte Kopie online zu lassen). Dann kopierte ed jeden Teil nach / tmp und scannte ihn zweimal, um den Befehl g auszuführen. und warf es schließlich weg, was auch Zeit braucht. "
"Eines Nachmittags fragte ich Ken Thompson, ob er den Erkenner für reguläre Ausdrücke aus dem Editor herausheben und ein One-Pass-Programm erstellen könne, um dies zu tun. Er sagte ja. Am nächsten Morgen fand ich eine Notiz in meiner Mail, in der ein Programm namens grep angekündigt wurde. Es funktionierte wie ein Zauber. Auf die Frage, was dieser lustige Name bedeutete, sagte Ken, dass es offensichtlich sei. Es stand für den von ihm simulierten Editorbefehl g / re / p (globaler Ausdruck für reguläre Ausdrücke). "
Vergleichen Sie den ersten Teil davon mit dem cat names.txt | awk '{print $2 ", " $1}' | sort | uniq | column -c 100
Beispiel. Wenn Sie die Option "Befehlszeile erstellen" oder "Programm eigens für diesen Zweck in Assembler von Hand schreiben" wählen, lohnt es sich, die Befehlszeile zu erstellen. Auch wenn es einige Stunden dauert, die (Papier-) Handbücher zu lesen. Sie können es dann zur späteren Bezugnahme aufschreiben.