Les programmes Unix les plus remarquables

L'auteur de l'article, Douglas McIlroy, est un mathématicien, ingénieur et programmeur américain. Il est surtout connu pour le développement du pipeline dans le système d'exploitation Unix, des principes de la programmation orientée composant et de plusieurs utilitaires originaux : spell, diff, sort, join, speak, tr.

Parfois, vous tombez sur des programmes véritablement remarquables. En fouillant dans ma mémoire, j'ai dressé une liste de véritables joyaux d'Unix au fil des ans. En général, ce sont des programmes assez rares et pas nécessairement essentiels. Mais ce qui les distingue, c'est leur originalité. Je ne peux même pas imaginer que j'aurais pu avoir l'idée de l'un d'eux moi-même.

Partagez, quels programmes vous ont également autant impressionné ?

PDP-7 Unix

Pour commencer, le système lui-même, PDP-7 Unix. Sa simplicité et sa puissance m'ont poussé à passer d'un puissant mainframe à une petite machine. C'est ici que réside l'essence du système de fichiers hiérarchique, un shell séparé et la gestion des processus au niveau de l'utilisateur, ce que Multics sur les mainframes n'a pas pu réaliser après des centaines d'années de développement. Les inconvénients d'Unix (comme la structure des enregistrements dans le système de fichiers) étaient tout aussi instructifs et libérateurs que ses innovations (comme la redirection d'entrée-sortie dans le shell).

dc

La bibliothèque mathématique pour calculatrice de bureau à précision variable de Robert Morris utilisait l'analyse rétroactive des erreurs pour déterminer la précision requise à chaque étape afin d'atteindre la précision souhaitée par l'utilisateur. Lors de la conférence de l'OTAN sur l'ingénierie logicielle de 1968, dans ma présentation sur les composants logiciels, j'ai proposé des procédures de référence qui peuvent donner un résultat d'une précision souhaitée, mais je ne savais pas comment les mettre en œuvre dans la pratique. Dc reste le seul programme que je connaisse capable de cela.

typo

Typo organise les mots dans le texte en fonction de leur similitude avec le reste du texte. Les fautes de frappe comme ‘hte’ tendent à se retrouver en fin de liste. Robert Morris était fier de dire que le programme fonctionnerait tout aussi bien pour n'importe quelle langue. Bien que typo ne puisse pas aider à trouver des erreurs phonétiques, elle est devenue une véritable aubaine pour quiconque tape du texte, apportant beaucoup d'avantages avant l'arrivée d'une vérification orthographique beaucoup moins intéressante, mais plus précise, basée sur un dictionnaire.

La typographie est aussi inattendue à l'intérieur qu'à l'extérieur. L'algorithme de mesure de la similarité est basé sur la fréquence d'apparition des trigrammes, qui sont comptés dans un tableau de 26×26×26. Dans une mémoire minuscule, il n'y avait guère de place pour les compteurs d'un octet, c'est pourquoi un schéma de compression de grands nombres en petits compteurs a été mis en œuvre. Pour éviter le débordement, les compteurs étaient mis à jour sur une base probabiliste, maintenant une estimation du logarithme de la valeur du compteur.

. Il est remarquable en ce sens que pour afficher une formule, le développeur doit simplement la décrire avec des mots et des symboles simples. Les mots-clés permettent de déplacer les signes mathématiques verticalement et horizontalement, de changer leurs tailles et d'autres paramètres. Si l'on transmet à l'utilitaire une chaîne :

Avec l'avènement de la phototaxie, il est devenu possible, bien que terriblement fastidieux, de produire une notation mathématique classique. Lorinda Cherry a décidé de développer un langage de description de plus haut niveau, et bientôt, Brian Kernighan s'est joint à elle. Leur brillante stratégie consistait à exprimer la tradition orale par écrit, rendant ainsi eqn étonnamment simple à apprendre. Le premier préprocesseur du langage décrivant des expressions mathématiques, eqn n'a presque pas été amélioré depuis.

struct

Brenda Baker a lancé le développement de son convertisseur Fortran vers Ratfor malgré les conseils de son patron — moi. J'ai pensé que cela pourrait mener à une réorganisation spéciale du texte source. Il serait exempt de numéros d'opérateurs, mais ne serait pas plus lisible que du code Fortran bien structuré. Brenda a prouvé que j'avais tort. Elle a découvert que chaque programme Fortran a une forme canonique structurée. Les programmeurs préféraient la forme canonique plutôt que celle qu'ils avaient initialement écrite.

pascal

Le diagnostic de syntaxe dans le compilateur créé par le groupe de Sue Graham à Berkeley était le plus utile que j'aie jamais vu — et il se faisait automatiquement. En cas d'erreur de syntaxe, le compilateur propose d'insérer un lexème pour continuer l'analyse syntaxique. Aucune tentative n'est faite pour expliquer ce qui ne va pas. Avec ce compilateur, j'ai appris Pascal en une soirée, sans avoir de manuel à portée de main.

parts

Le module caché à l'intérieur du paquet WWB (Writer’s Workbench) parts Lorinda Cherry définit les parties du discours pour les mots dans un texte en anglais sur la base d'un petit dictionnaire, des règles d'orthographe et de grammaire. Grâce à cette annotation, le programme WWB génère des indicateurs stylométriques du texte, tels que la prépondérance des adjectifs, des subordonnées et des phrases complexes. Lorsque Lorinda a été interviewée dans l'émission Today sur NBC et a parlé de l'innovation de vérification grammaticale dans les textes de WWB, c'était la première fois que Unix était mentionné à la télévision.

egrep

Al Aho s'attendait à ce que son analyseur déterministe d'expressions régulières dépasse l'analyseur non déterministe classique de Ken. Malheureusement, ce dernier avait déjà terminé son parcours à travers des expressions régulières complexes pendant qu'il egrep construisait son automate déterministe. Pour finalement gagner cette course, Al Aho a contourné la malédiction de la croissance exponentielle de la table d'états de l'automate en inventant un moyen de construire à la volée uniquement les enregistrements de la table qui sont réellement visités pendant la reconnaissance.

crabes

Le charmant méta-programme de Luca Cardelli pour le système de fenêtres Blit produisait des crabes virtuels qui erraient dans l'espace vide de l'écran, grignotant 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. Ce qui est en fait le plus surprenant, c'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 de loin la part démographique des femmes dans le domaine de l'informatique.

Douglas McIlroy
Mars 2020


Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster