Les meilleurs programmes Unix

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é le pipeline dans le système d'exploitation Unix, les principes de programmation orientée composants et plusieurs utilitaires originaux : sort, diff, sort, join, speak, tr.

Parfois, vous tombez sur des programmes vraiment géniaux. Après avoir fouillé dans ma mémoire, j'ai compilé une liste de certains des véritables joyaux d'Unix au fil des ans. Fondamentalement, ce sont des programmes assez rares et pas si nécessaires. Mais ce qui les distingue, c'est leur originalité. Je ne peux même pas imaginer que j’ai eu l’idée de l’un d’entre eux moi-même.

Partagez, quels programmes vous ont aussi autant impressionné ?

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. Il s'agit du système de fichiers hiérarchique par excellence, d'un shell séparé et d'un contrôle de processus au niveau de l'utilisateur que Multics sur les mainframes n'a pas pu mettre en œuvre après des centaines d'années-homme de développement. Les défauts d'Unix (comme la structure d'enregistrement du système de fichiers) étaient aussi instructifs et libérateurs que ses innovations (telles que la redirection des E/S du shell).

dc

La bibliothèque mathématique de la calculatrice de bureau à précision variable de Robert Morris a utilisé l'analyse d'erreur inverse pour déterminer la précision requise à chaque étape afin d'obtenir un résultat de précision spécifié par l'utilisateur. Lors de la Conférence OTAN sur le génie logiciel de 1968, dans mon article sur les composants logiciels, j'ai proposé des procédures de référence capables de produire des résultats avec la précision souhaitée, mais je ne savais pas comment les mettre en pratique. dc est toujours le seul programme que je connaisse capable de faire cela.

typo

Une faute de frappe classe les mots dans le texte en fonction de leur similitude avec le reste du texte. Les fautes d'orthographe comme « hte » ont tendance à se retrouver à la fin de la liste. Robert Morris a déclaré avec fierté que le programme fonctionnerait aussi bien dans n'importe quelle langue. Bien que les fautes de frappe ne vous aident pas à trouver les erreurs phonétiques, elles étaient une aubaine pour tous les compositeurs et étaient très utiles avant l'arrivée de la vérification orthographique du dictionnaire, beaucoup moins intéressante mais plus précise.

Une faute de frappe est aussi inattendue à l’intérieur qu’à l’extérieur. L'algorithme de mesure de similarité est basé sur la fréquence d'apparition des trigrammes, qui sont comptés dans un tableau 26x26x26. Il y avait à peine assez d'espace dans la petite mémoire pour les compteurs à un octet, c'est pourquoi un système a été mis en œuvre pour compresser les grands nombres dans de petits compteurs. Pour éviter tout débordement, les compteurs ont été mis à jour sur une base probabiliste, en maintenant une estimation du logarithme de la valeur du compteur.

équi

Avec l’avènement de la photocomposition, il est devenu possible, mais terriblement fastidieux, de produire une notation mathématique classique. Lorinda Cherry a décidé de développer un langage de description de niveau supérieur et Brian Kernighan l'a rapidement rejoint. Leur idée géniale a été d’exprimer la tradition orale par écrit, c’est pourquoi l’eqn s’est avéré étonnamment facile à apprendre. Premier préprocesseur de langage d'expression mathématique de ce type, eqn a connu peu d'améliorations depuis lors.

struct

Brenda Baker a commencé à développer son convertisseur Fortan-to-Ratfor contre l'avis de son patron, moi. J'ai pensé que cela pourrait entraîner une réorganisation spéciale du texte original. Il sera exempt de numéros d'opérateur, mais autrement pas plus lisible qu'un code Fortran bien structuré. Brenda m'a prouvé le contraire. Elle a découvert que chaque programme Fortran a une forme canoniquement structurée. Les programmeurs préféraient la forme canonique plutôt que celle qu’ils avaient eux-mêmes écrite à l’origine.

pascal

Les diagnostics syntaxiques du compilateur construit par le groupe de Sue Graham à Berkeley étaient les plus utiles que j'aie jamais vus – et ils étaient automatiques. S'il y a une erreur de syntaxe, le compilateur vous invite à insérer un jeton pour continuer l'analyse. Aucune tentative pour expliquer ce qui ne va pas. Avec ce compilateur, j'ai appris Pascal en une soirée, sans aucun manuel sous la main.

les pièces

Module caché dans le package WWB (Writer's Workbench) parts Lorinda Cherry détermine les parties du discours des mots dans un texte anglais en se basant uniquement sur un petit dictionnaire, des règles d'orthographe et de grammaire. Sur la base de cette annotation, le programme WWB affiche des indicateurs stylométriques du texte, tels que la prévalence des adjectifs, des propositions subordonnées et des phrases complexes. Lorsque Lorinda a été interviewée dans l'émission Today de NBC et a parlé de la vérification grammaticale innovante de WWB, c'était la première mention d'Unix à la télévision.

égrep

Al Aho espérait que son analyseur d'expressions régulières déterministe surpasserait l'analyseur non déterministe classique de Ken. Malheureusement, ce dernier effectuait déjà un passage à travers des expressions régulières complexes jusqu'à ce que egrep construit sa propre automatisation déterministe. Pour remporter encore cette course, Al Aho a contourné la malédiction de la croissance exponentielle de la table d'état de l'automate en inventant un moyen de construire à la volée uniquement les entrées de table réellement visitées lors de la reconnaissance.

Crabes

Le charmant méta-programme de Luca Cardelli pour le système de fenêtrage Blit a libéré des crabes virtuels qui erraient dans l'espace vide de l'écran, mordant de plus en plus 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éterminant dans la création de la plupart de ces programmes : typo, dc, struct, pascal, egrep. En fait, c’est l’application inhabituelle de la théorie qui est la plus surprenante.

Les auteurs originaux de près de la moitié de la liste (pascal, struct, parts, eqn) étaient des femmes, ce qui dépasse largement la part démographique des femmes dans l'informatique.

Douglas McIlroy
Mars, 2020


Source: habr.com

Ajouter un commentaire