Die besten Unix-Programme

Der Autor des Artikels, Douglas McIlroy, ist ein amerikanischer Mathematiker, Ingenieur und Programmierer. Er ist vor allem für die Entwicklung der Pipeline im Unix-Betriebssystem, der Prinzipien der komponentenorientierten Programmierung und mehrerer origineller Dienstprogramme bekannt: Spell, Diff, Sort, Join, Speak, Tr.

Manchmal stößt man auf wirklich wunderbare Programme. Nachdem ich mein Gedächtnis durchforstet hatte, stellte ich im Laufe der Jahre eine Liste echter Unix-Juwelen zusammen. Im Grunde handelt es sich hierbei um recht seltene und nicht so notwendige Programme. Aber was sie auszeichnet, ist ihre Originalität. Ich kann mir nicht einmal vorstellen, dass ich selbst auf die Idee gekommen bin.

Teilen Sie mit, von welchen Programmen Sie auch so beeindruckt sind?

PDP-7 Unix

Zunächst einmal das PDP-7 Unix-System selbst. Seine Einfachheit und Leistung veranlassten mich, von einem leistungsstarken Großrechner zu einer winzigen Maschine zu wechseln. Es ist die Quintessenz eines hierarchischen Dateisystems, einer separaten Shell und einer Prozesssteuerung auf Benutzerebene, die Multics auf dem Mainframe nach Hunderten von Mannjahren der Entwicklung nicht erreichen konnte. Die Unzulänglichkeiten von Unix (z. B. die Datensatzstruktur des Dateisystems) waren ebenso lehrreich und befreiend wie seine Innovationen (z. B. die Shell-I/O-Umleitung).

dc

Die Variable Precision Desktop Calculator Math Library von Robert Morris verwendete eine inverse Fehleranalyse, um die Präzision zu bestimmen, die bei jedem Schritt erforderlich ist, um eine vom Benutzer festgelegte Ergebnisgenauigkeit zu erzielen. Auf der NATO-Software-Engineering-Konferenz 1968 habe ich in meinem Bericht über Softwarekomponenten Referenzverfahren vorgeschlagen, die jede gewünschte Genauigkeit liefern könnten, aber ich wusste nicht, wie ich sie in die Praxis umsetzen sollte. dc ist immer noch das einzige mir bekannte Programm, das das kann.

typo

Typo ordnet Wörter im Text entsprechend ihrer Ähnlichkeit zum Rest des Textes an. Rechtschreibfehler wie „hte“ stehen meist am Ende der Liste. Robert Morris sagte stolz, dass das Programm für jede Sprache gleichermaßen gut funktionieren würde. Obwohl Tippfehler nicht dabei helfen, phonetische Fehler zu finden, war es ein echter Segen für alle Schriftsetzer und hat viel Gutes bewirkt, bevor die viel weniger interessante, aber genauere Rechtschreibprüfung für Wörterbücher auf den Markt kam.

Tippfehler sind im Inneren ebenso unerwartet wie im Äußeren. Der Algorithmus zur Ähnlichkeitsmessung basiert auf der Häufigkeit des Auftretens von Trigrammen, die in einem 26×26×26-Array gezählt werden. Da der winzige Speicher kaum Platz für Ein-Byte-Zähler bot, wurde ein Schema implementiert, um große Zahlen in kleine Zähler zu komprimieren. Um einen Überlauf zu vermeiden, wurden die Zähler auf Wahrscheinlichkeitsbasis aktualisiert, wobei eine Schätzung des Logarithmus des Zählerwerts beibehalten wurde.

Gl

Mit dem Aufkommen des Fotosatzes wurde es zwar möglich, aber furchtbar mühsam, die klassische mathematische Notation zu drucken. Lorinda Cherry beschloss, eine Beschreibungssprache auf höherer Ebene zu entwickeln, und bald schloss sich Brian Kernigan ihr an. Ihr brillanter Schachzug bestand darin, die mündliche Überlieferung schriftlich festzuhalten, sodass Gleichungen bemerkenswert leicht zu erlernen waren. eqn, der erste Präprozessor für mathematische Ausdruckssprachen seiner Art, wurde seitdem nicht wesentlich verbessert.

struct

Brenda Baker begann gegen den Rat ihres Chefs, mich, mit der Entwicklung ihres Fortan-zu-Ratfor-Konverters. Ich dachte, dass dies zu einer besonderen Neuordnung des Originaltextes führen könnte. Es enthält keine Anweisungsnummern, ist aber ansonsten nicht besser lesbar als gut strukturierter Fortran-Code. Brenda hat mir das Gegenteil bewiesen. Sie entdeckte, dass jedes Fortran-Programm eine kanonisch strukturierte Form hat. Die Programmierer bevorzugten die kanonische Form gegenüber dem, was sie ursprünglich selbst geschrieben hatten.

pascal

Die Syntaxdiagnose im Compiler, die von Sue Grahams Gruppe in Berkeley erstellt wurde, war die hilfreichste, die ich je gesehen habe – und sie wurde automatisch durchgeführt. Bei einem Syntaxfehler fordert Sie der Compiler auf, ein Token einzufügen, um mit der Analyse fortzufahren. Kein Versuch zu erklären, was falsch ist. Mit diesem Compiler habe ich Pascal an einem Abend gelernt, ohne ein Handbuch zur Hand zu haben.

Teile

Versteckt im WWB-Modul (Writer's Workbench). parts Lorinda Cherry bestimmt Wortarten für Wörter in einem englischen Text auf der Grundlage nur eines kleinen Wörterbuchs sowie Rechtschreib- und Grammatikregeln. Basierend auf dieser Anmerkung zeigt das WWB-Programm stilometrische Indikatoren des Textes an, beispielsweise die Häufigkeit von Adjektiven, Nebensätzen und komplexen Sätzen. Als Lorinda in der NBC-Sendung „Today“ interviewt wurde und über die innovative Grammatikprüfung in WWB-Texten sprach, war es die erste Erwähnung von Unix im Fernsehen.

egrep

Al Aho erwartete, dass sein deterministischer Resolver für reguläre Ausdrücke Kens klassischen nichtdeterministischen Resolver überholen würde. Leider war Letzterer bereits damit beschäftigt, komplexe reguläre Ausdrücke zu durchlaufen egrep baute seine eigene deterministische Automatisierung. Um dieses Rennen dennoch zu gewinnen, umging Al Aho den Fluch des exponentiellen Wachstums der Zustandstabelle des Automaten, indem er eine Möglichkeit erfand, im laufenden Betrieb nur die Einträge in der Tabelle aufzubauen, die während der Erkennung tatsächlich besucht wurden.

Krabben

Luca Cardellis charmantes Metaprogramm für das Blit-Fenstersystem ließ virtuelle Krabben frei, die über den leeren Bildschirmraum streiften und immer mehr die Ränder aktiver Fenster abbissen.

Einige allgemeine Gedanken

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

Fast die Hälfte der Liste – Pascal, struct, parts, eqn – wurde ursprünglich von Frauen geschrieben, was bei weitem die Zahl der Frauen in der Informatik übertrifft.

Douglas McIlroy
März 2020


Source: habr.com

Kommentar hinzufügen