Die wunderbarsten Unix-Programme

Der Autor des Artikels, Douglas McIlroy, ist ein amerikanischer Mathematiker, Ingenieur und Programmierer. Er ist am besten dafür bekannt, eine Pipeline im Unix-Betriebssystem, Prinzipien der komponentenorientierten Programmierung und mehrere ursprüngliche Dienstprogramme zu entwickeln: buchstabieren, unterscheiden, sortieren, verbinden, sprechen, tr.

Manchmal stößt man auf wirklich wundervolle Programme. Ich stöbere in meinem Gedächtnis und habe eine Liste der echten Perlen von Unix für all die Jahre zusammengestellt. Grundsätzlich sind dies ziemlich seltene und nicht so notwendige Programme. Aber was sie auszeichnet, ist Originalität. Ich kann mir gar nicht vorstellen, dass ich selbst auf die Idee gekommen bin.

Teilen Sie, welche Programme haben Sie auch so sehr getroffen?

PDP-7 Unix


Für den Anfang das PDP-7 Unix-System selbst. Aufgrund seiner Einfachheit und Leistung wechselte ich von einem leistungsstarken Mainframe zu einer winzigen Maschine. Hier ist die Quintessenz des hierarchischen Dateisystems, einer separaten Shell- und Prozesssteuerung auf Benutzerebene, die Multics nach Hunderten von Mannjahren Entwicklungszeit nicht auf Mainframes implementieren konnte. Die Nachteile von Unix (zum Beispiel die Struktur von Datensätzen im Dateisystem) waren ebenso aufschlussreich und befreiend wie seine Innovationen (zum Beispiel die Umleitung von Eingabe / Ausgabe in der Shell).

dc


Die Mathematikbibliothek von Robert Morris für einen Desktop-Rechner mit variabler Genauigkeit verwendete eine umgekehrte Fehleranalyse, um die Genauigkeit zu bestimmen, die bei jedem Schritt erforderlich ist, um eine benutzerdefinierte Genauigkeit zu erzielen. Auf einer NATO-Softwareentwicklungskonferenz von 1968 schlug ich in meinem Bericht über Softwarekomponenten Referenzverfahren vor, mit denen das Ergebnis mit jeder gewünschten Genauigkeit erzielt werden kann, aber ich wusste nicht, wie ich sie in die Praxis umsetzen sollte. dc ist immer noch das einzige mir bekannte Programm, das dies kann.

Tippfehler


Tippfehler ordnet die Wörter im Text entsprechend ihrer Ähnlichkeit mit dem Rest des Textes. Brillen wie 'hte' stehen normalerweise am Ende der Liste. Robert Morris sagte stolz, dass das Programm für jede Sprache gleich gut funktionieren würde. Obwohl Tippfehler nicht dazu beitragen, phonetische Fehler zu finden, wurde sie für jeden, der tippt, zu einer echten Entdeckung und hat viel Gutes getan, bevor eine viel weniger interessante, aber genauere Rechtschreibprüfung im Wörterbuch erschien.

Tippfehler sind innen genauso unerwartet angeordnet wie außen. Der Algorithmus zur Ähnlichkeitsmessung basiert auf der Häufigkeit des Auftretens von Trigrammen, die in einem Array von 26 × 26 × 26 gezählt werden. In einem winzigen Speicher war kaum Platz für Einzelbyte-Zähler vorhanden, sodass ein Schema zum Komprimieren großer Zahlen in kleine Zähler implementiert wurde. Um einen Überlauf zu vermeiden, wurden die Zähler auf probabilistischer Basis aktualisiert, um die Schätzung des Logarithmus des Zählerwerts zu unterstützen.

Gl


Mit dem Aufkommen der Fotokomposition wurde es möglich, aber schrecklich anstrengend, die klassische mathematische Notation abzuleiten. Lorinda Cherry beschloss, eine übergeordnete Beschreibungssprache zu entwickeln, und bald schloss sich Brian Kernigan ihr an. Ihr brillanter Schritt war es, die mündliche Überlieferung schriftlich auszudrücken, so dass Gleichung überraschend leicht zu erlernen war. Als erster seiner Art Präprozessor der Sprache zur Beschreibung mathematischer Ausdrücke hat sich Gl. Seitdem kaum verbessert.

struct


Brenda Baker begann entgegen dem Rat ihres Chefs - mir - mit der Entwicklung ihres Fortan-Ratfor-Konverters. Ich dachte, dass dies zu einer speziellen Neuordnung des Quelltextes führen könnte. Es ist frei von Betreibernummern, aber ansonsten nicht besser lesbar als Fortrans gut strukturierter Code. Brenda hat bewiesen, dass ich falsch liege. Sie entdeckte, dass jedes Fortran-Programm eine kanonisch strukturierte Form hat. Programmierer bevorzugten die kanonische Form gegenüber dem, was sie ursprünglich selbst geschrieben hatten.

Pascal


Die Diagnose der Syntax in dem von der Sue Graham-Gruppe in Berkeley erstellten Compiler war die nützlichste von allen, die ich je gesehen habe - und sie wurde automatisch durchgeführt. Bei einem Syntaxfehler schlägt der Compiler vor, ein Token einzufügen, um das Parsen fortzusetzen. Kein Versuch zu erklären, was falsch ist. Mit diesem Compiler lernte ich Pascal an einem Abend ohne Anleitung.

Teile


Das Modul von partsLorinda Cherry ist im WWB-Paket (Writer's Workbench) versteckt und definiert die Wortarten für Wörter in englischem Text basierend auf nur einem kleinen Wörterbuch, Rechtschreib- und Grammatikregeln. Entsprechend dieser Anmerkung zeigt das WWB-Programm stilometrische Indikatoren des Textes an, wie z. B. das Überwiegen von Adjektiven, Nebensätzen und komplexen Sätzen. Als Lorinda auf dem NBC-Kanal Today interviewt wurde und über innovative Grammatikprüfungen in WWB-Texten sprach, war dies die erste Erwähnung von Unix im Fernsehen.

egrep


Al Aho hoffte, dass sein deterministischer Resolver für reguläre Ausdrücke Kens klassischen nicht deterministischen Resolver überholen würde. Leider hat letzterer bereits komplexe reguläre Ausdrücke weitergegeben und gleichzeitig egrepseine deterministische Automatisierung aufgebaut. Um dieses Rennen zu gewinnen, umging Al Aho den Fluch des exponentiellen Wachstums der Zustandstabelle des Automaten und erfand eine Möglichkeit, im laufenden Betrieb nur die Aufzeichnungen der Tabelle aufzubauen, die während der Erkennung tatsächlich besucht wurden.

Krabben


Luca Cardellis charmantes Metaprogramm für das Blit-Fenstersystem produzierte virtuelle Krabben, die den leeren Raum des Bildschirms durchstreiften und immer mehr die Ränder aktiver Fenster abbeißen.

Einige allgemeine Gedanken


Obwohl dies von außen nicht sichtbar ist, spielten Theorie und Algorithmen eine entscheidende Rolle bei der Erstellung der meisten dieser Programme: Tippfehler, Gleichstrom, Struktur, Pascal, Egrep. In der Tat ist das Überraschendste die ungewöhnliche Anwendung der Theorie.

Die ursprünglichen Autoren von fast der Hälfte der Liste - Pascal, Struct, Parts, Eqn - waren Frauen, was den demografischen Anteil von Frauen im Bereich der Informatik deutlich übersteigt.

Douglas McIlroy
März 2020

All Articles