Die bemerkenswertesten Unix-Programme

Der Autor des Artikels Douglas McIlroy ist ein amerikanischer Mathematiker, Ingenieur und Programmierer. Er ist am bekanntesten für die Entwicklung der Pipeline im Betriebssystem Unix, die Prinzipien der komponentenorientierten Programmierung und mehrere originale Tools: spell, diff, sort, join, speak, tr.

Manchmal entdeckt man wirklich bemerkenswerte Programme. Nach sorgfältiger Überlegung habe ich eine Liste von echten Perlen von Unix im Laufe der Jahre zusammengestellt. Im Großen und Ganzen sind dies recht seltene und nicht unbedingt notwendige Programme. Aber was sie hervorhebt, ist ihre Originalität. Ich kann mir nicht einmal vorstellen, dass mir die Idee für eines dieser Programme selbst gekommen wäre.

Was sind die Programme, die Sie ebenfalls so beeindruckt haben?

PDP-7 Unix

Als Ausgangspunkt dient das System PDP-7 Unix selbst. Seine Einfachheit und Kraft haben mich dazu gebracht, von einem leistungsstarken Mainframe auf eine winzige Maschine umzusteigen. Hier steht die Essenz des hierarchischen Dateisystems, eine separate Shell und die Prozessverwaltung auf Benutzerebene, was Multics auf Mainframes nach hunderten von Mannjahren Entwicklung nicht umsetzen konnte. Die Nachteile von Unix (zum Beispiel die Struktur der Datensätze im Dateisystem) waren ebenso lehrreich und befreiend wie ihre Neuerungen (zum Beispiel die Umleitung von Ein- und Ausgaben in der Shell).

dc

Die mathematische Bibliothek für den Desktop-Rechner mit variabler Genauigkeit von Robert Morris nutzte die Rückwärtsanalyse von Fehlern, um die erforderliche Genauigkeit in jedem Schritt zur Erreichung der vom Benutzer gewünschten Genauigkeit des Ergebnisses zu bestimmen. Auf der NATO-Konferenz zur Softwaretechnik im Jahr 1968 schlug ich in meinem Vortrag über Softwarekomponenten Referenzverfahren vor, die ein Ergebnis mit beliebiger gewünschter Genauigkeit liefern können, aber ich wusste nicht, wie ich sie in der Praxis umsetzen sollte. dc bleibt bis heute das einzige mir bekannte Programm, das das kann.

typo

Typo sortiert Wörter in einem Text nach ihrer Ähnlichkeit mit dem restlichen Text. Tippfehler wie „hte“ neigen dazu, am Ende der Liste zu erscheinen. Robert Morris sagte stolz, dass das Programm für jede Sprache gleichermaßen gut funktioniert. Obwohl typo nicht hilft, phonetische Fehler zu finden, war es eine echte Entdeckung für alle, die Text eingeben, und brachte viel Nutzen, bevor eine weit weniger interessante, aber genauere Rechtschreibprüfung im Wörterbuch auftauchte.

Der Typo ist innen ebenso überraschend gestaltet wie außen. Der Algorithmus zur Messung der Ähnlichkeit basiert auf der Häufigkeit des Auftretens von Trigrammen, die in einem 26×26×26 Array gezählt werden. Der winzige Speicher bot kaum Platz für einbyte-Zähler, weshalb ein Komprimierungsansatz für große Zahlen in kleine Zähler implementiert wurde. Um Überläufe zu vermeiden, wurden die Zähler auf wahrscheinlicher Basis aktualisiert, um die Schätzung des Logarithmus des Zählerwerts zu unterstützen.

eqn

Mit dem Erscheinen von Fotohandbuch wurde es möglich, aber schrecklich mühsam, klassische mathematische Notationen auszugeben. Lorinda Cherry entschloss sich, eine Sprache zur Beschreibung auf höherer Ebene zu entwickeln, und bald gesellte sich Brian Kernighan zu ihr. Ihre brillante Idee bestand darin, die mündliche Tradition schriftlich zu fassen, weshalb eqn erstaunlich einfach zu erlernen war. Als erster seiner Art war der Preprozessor für die Beschreibung mathematischer Ausdrücke, eqn, seitdem kaum verbessert worden.

struct

Brenda Baker begann, ihren Konverter von Fortran nach Ratfor entgegen dem Rat ihres Chefs – mir – zu entwickeln. Ich dachte, das könnte zu einer speziellen Umstellung des Quelltexts führen. Er würde frei von Operatornummern sein, wäre aber ansonsten nicht lesbarer als gut strukturierter Fortran-Code. Brenda bewies, dass ich mich irrte. Sie stellte fest, dass jedes Fortran-Programm eine kanonisch strukturierte Form hat. Programmierer bevorzugten die kanonische Form anstelle dessen, was sie ursprünglich geschrieben hatten.

pascal

Die syntaxüberprüfung im Compiler, den das Team von Sue Graham in Berkeley entwickelt hat, war die nützlichste, die ich je gesehen habe – und sie wurde automatisch durchgeführt. Bei einem Syntaxfehler schlägt der Compiler vor, ein Lexem einzufügen, um die syntaktische Analyse fortzusetzen. Es gab keine Versuche, zu erklären, was falsch war. Mit diesem Compiler habe ich Pascal an einem Abend gelernt, ohne ein Handbuch zur Hand zu haben.

parts

Ein Modul, das in das WWB-Paket (Writer’s Workbench) integriert ist parts Lorinda Cherry bestimmt die Wortarten von Wörtern im englischen Text basierend auf einem kleinen Wörterbuch sowie Rechtschreib- und Grammatikregeln. Anhand dieser Annotation liefert das WWB-Programm stilometrische Kennzahlen des Textes, wie die Häufigkeit von Adjektiven, Nebensätzen und komplexen Sätzen. Als Lorinda in der NBC-Show Today ein Interview gab und über die innovative Grammatikprüfung in den Texten von WWB sprach, war dies die erste Erwähnung von Unix im Fernsehen.

egrep

Al Aho erwartete, dass sein deterministischer regulärer Ausdrucksparser den klassischen nichtdeterministischen Parser von Ken übertreffen würde. Leider war letzterer bereits dabei, komplexe reguläre Ausdrücke zu verarbeiten, während egrep er seine deterministische Automatentechnik aufbaute. Um in diesem Rennen dennoch zu gewinnen, umging Al Aho den Fluch des exponentiellen Wachstums der Zustandsübergangstabelle des Automaten, indem er einen Weg erfand, nur die Tischdatensätze zu generieren, die während der Erkennung tatsächlich besucht werden.

krabben

Das charmante Metaprogramm von Luca Cardelli für das Fenstersystem Blit erzeugte virtuelle Krabben, die durch den leeren Raum des Bildschirms schlichen und dabei immer mehr von den Rändern aktiver Fenster abknabberten.

Einige allgemeine Gedanken

Obwohl von außen nicht sichtbar, spielten Theorie und Algorithmen eine entscheidende Rolle bei der Schaffung der meisten dieser Programme: typo, dc, struct, pascal, egrep. Tatsächlich erstaunt am meisten die ungewöhnliche Anwendung der Theorie.

Die ursprünglichen Autoren von fast der Hälfte der Liste – pascal, struct, parts, eqn – waren Frauen, was signifikant über dem demografischen Anteil von Frauen im Bereich der Informatik liegt.

Douglas McIlroy
März 2020


Quelle: habr.com

60GB SSD 8Gb DDR4