Les programmes Unix les plus merveilleux

L'auteur de l'article, Douglas McIlroy, est un mathématicien, ingénieur et programmeur américain. Il est surtout connu pour avoir développé un pipeline dans le système d'exploitation Unix, des principes de programmation orientée composants et plusieurs utilitaires originaux: épeler, diff, trier, joindre, parler, tr.

Parfois, vous rencontrez des programmes vraiment merveilleux. En fouillant dans ma mémoire, j'ai compilé une liste des vraies perles d'Unix pour toutes les années. Fondamentalement, ce sont des programmes assez rares et pas si nécessaires. Mais ce qui les distingue, c'est l'originalité. Je ne peux même pas imaginer que j'ai moi-même eu l'idée de l'un d'eux.

Partager, quels programmes vous ont aussi autant touché?

PDP-7 Unix


Pour commencer, le système Unix PDP-7 lui-même. Sa simplicité et sa puissance m'ont fait passer d'un ordinateur central puissant à une petite machine. Voici la quintessence du système de fichiers hiérarchique, un shell séparé et un contrôle de processus au niveau utilisateur, que Multics n'a pas pu implémenter sur les mainframes après des centaines d'années-homme de développement. Les inconvénients d'Unix (par exemple, la structure des enregistrements dans le système de fichiers) étaient aussi instructifs et libérateurs que ses innovations (par exemple, la redirection des entrées-sorties dans le shell).

dc


La bibliothèque mathématique de Robert Morris pour une calculatrice de bureau à précision variable a utilisé l'analyse d'erreur inverse pour déterminer la précision nécessaire à chaque étape pour atteindre une précision spécifiée par l'utilisateur. Lors d'une conférence OTAN de génie logiciel de 1968, dans mon rapport sur les composants logiciels, j'ai proposé des procédures de référence qui peuvent produire le résultat de la précision souhaitée, mais je ne savais pas comment les mettre en pratique. dc est toujours le seul programme à ma connaissance qui puisse le faire.

faute de frappe


Typo organise les mots dans le texte en fonction de leur similitude avec le reste du texte. Les lunettes comme «hte» sont généralement en fin de liste. Robert Morris a fièrement déclaré que le programme fonctionnerait aussi bien pour n'importe quelle langue. Bien que la faute de frappe n'aide pas à trouver les erreurs phonétiques, elle est devenue une véritable trouvaille pour quiconque tape, et a fait beaucoup de bien avant qu'une vérification orthographique beaucoup moins intéressante, mais plus précise du dictionnaire n'apparaisse.

La faute de frappe est tout aussi inattendue à l'intérieur qu'à l'extérieur. L'algorithme de mesure de similitude est basé sur la fréquence d'apparition des trigrammes, qui sont comptés dans un tableau de 26 × 26 × 26. Dans la mémoire minuscule, il y avait à peine assez d'espace pour les compteurs à un octet, donc un schéma de compression de grands nombres en petits compteurs a été mis en œuvre. Pour éviter un débordement, les compteurs ont été mis à jour sur une base probabiliste, prenant en charge l'estimation du logarithme de la valeur du compteur.

eqn


Avec l'avènement de la photocomposition, il est devenu possible, mais terriblement fatigant, de dériver la notation mathématique classique. Lorinda Cherry a décidé de développer un langage de description de niveau supérieur et bientôt Brian Kernigan l'a rejoint. Leur brillante décision a été d'exprimer la tradition orale par écrit, de sorte que l'eqn était étonnamment facile à apprendre. Premier pré-processeur du genre pour décrire les expressions mathématiques, eqn ne s'est guère amélioré depuis.

struct


Brenda Baker a commencé le développement de son convertisseur Fortan-to-Ratfor, contrairement aux conseils de son patron - moi. Je pensais que cela pourrait conduire à une réorganisation spéciale du texte source. Il sera exempt de numéros d'opérateur, mais sinon pas plus lisible que le code bien structuré de Fortran. Brenda a prouvé que je me trompais. Elle a découvert que chaque programme Fortran a une forme canonique structurée. Les programmeurs préféraient la forme canonique à ce qu'ils avaient écrit à l'origine.

pascal


Le diagnostic de la syntaxe dans le compilateur créé par le groupe Sue Graham à Berkeley a été le plus utile de tous que j'ai jamais vu - et cela a été fait automatiquement. Avec une erreur de syntaxe, le compilateur suggère d'insérer un jeton pour continuer l'analyse. Aucune tentative d'expliquer ce qui ne va pas. Avec ce compilateur, j'ai appris Pascal en une soirée, sans aucun conseil à portée de main.

les pièces


Caché à l'intérieur du partspackage WWB (Writer's Workbench), le module de Lorinda Cherry détermine les parties du discours pour les mots dans le texte anglais en se basant uniquement sur un petit dictionnaire, des règles d'orthographe et de grammaire. Selon cette annotation, le programme WWB affiche des indicateurs stylométriques du texte, tels que la prédominance d'adjectifs, de clauses subordonnées et de phrases complexes. Lorsque Lorinda a été interviewée sur la chaîne NBC Today et a parlé de vérification grammaticale innovante dans les textes de WWB, ce fut la première mention d'Unix à la télévision.

egrep


Al Aho espérait que son résolveur d'expression régulière déterministe dépasserait le résolveur non déterministe classique de Ken. Malheureusement, ce dernier terminait déjà une passe sur les expressions régulières complexes tout en egrepconstruisant son automatisation déterministe. Pour gagner cette course, Al Aho a contourné la malédiction de la croissance exponentielle de la table d'état de l'automate, inventant un moyen de construire à la volée uniquement les enregistrements de la table qui sont effectivement visités lors de la reconnaissance.

Crabes


Le charmant méta-programme de Luca Cardelli pour le système de fenêtres Blit a produit des crabes virtuels qui parcouraient l'espace vide de l'écran, mordant de plus en plus sur les bords des fenêtres actives.

Quelques réflexions générales


Bien que cela ne soit pas visible de l'extérieur, la théorie et les algorithmes ont joué un rôle décisif dans la création de la plupart de ces programmes: typo, dc, struct, pascal, egrep. En fait, la chose la plus surprenante est l'application inhabituelle de la théorie.

Les auteurs originaux de près de la moitié de la liste - pascal, struct, parts, eqn - étaient des femmes, ce qui dépasse considérablement la part démographique des femmes dans le domaine de l'informatique.

Douglas McIlroy
mars 2020

All Articles