Le pionnier Unix Brian Kernighan aime toujours AWK après toutes ces années

Brian Kernighan est peut-être ce qui se rapproche le plus d’une légende vivante. Il a inventé le terme “Unix” en 1970 et est reconnu pour son travail de pionnier aux Bell Labs (où le système d’exploitation est né). En tant que co-auteur de l’outil AWK d’Unix, même le nom de Kernighan perdure dans nos environnements de développement, puisque la dernière initiale de Kernighan a fourni à la fois le « k » au nom d’AWK – et le « K » lorsque les gens citent l’emblématique livre « K&R » de 1978. sur la programmation C.

Plus tôt ce mois-ci, Kernighan a accordé une interview à la chaîne YouTube Computerphile (qui compte 2,18 millions d’abonnés). En discutant avec David F. Brailsford, professeur d’informatique à l’Université de Nottingham, Kernighan a pesé sur tout, de la meilleure programmation pour les 10 ans à ses souvenirs du “cycle de développement très court d’AWK en 1977”.

En décrivant l’utilité d’AWK, succinctement et clairement, Kernighan devient presque un évangéliste accidentel, appelant AWK “un exemple de ce qui est le bon outil pour le travail”.

Et quel genre de travail est-ce? “Quelque chose que vous savez dans votre cœur, vous pourriez probablement l’écrire en une ligne si vous aviez la bonne langue. AWK est le langage qui vous permet de l’écrire sur une seule ligne. Parce qu’il prend en charge une grande partie des bagages dont vous auriez autrement besoin dans une autre langue.

Kernighan admet que Python est le langage si vous n’en choisissez qu’un pour le reste de votre vie. Mais avec Python, “vous avez besoin de savoir comment obtenir l’entrée ? Comment le diviser en différents composants ? Comment l’écrivez-vous? Toutes ces choses se produisent gratuitement dans AWK, et c’est l’une des raisons pour lesquelles les programmes AWK ont tendance à être très très courts par rapport aux programmes dans d’autres langues.

“Ils fonctionnent à peu près à la même vitesse qu’ils le feraient en Python.”

Entrez l’Unicode

Mais six minutes plus tard, Brailsford pose une question révélatrice : Kernighan maintient-il AWK sous maintenance active ? Kernighan dit qu’il est sur GitHub depuis “un bon moment” maintenant, sans calendrier de publication officiel, et attribue au programmeur Unix de longue date Arnold Robbins “la plupart du travail actif”. Robbins est également le mainteneur actuel de la version d’AWK du projet GNU, et Kernighan décrit Robbins comme “incroyablement doué pour ce genre de choses” et “un très bon ami… Je pense à lui comme en fait la personne qui garde un œil dessus, pour la plupart. Robbins a même augmenté les propres suites de tests de Kernighan pour AWK.

Mais Kernighan n’a pas complètement abandonné le développement d’AWK.

“Cela a toujours été gênant qu’AWK ne fonctionne qu’avec des entrées ASCII, ou peut-être 8 bits, mais il ne gère pas du tout Unicode. Et donc il y a quelques mois », a déclaré Kernighan.

Unicode est le successeur de l’ancien jeu de caractères ASCII beaucoup plus limité, incorporant les langues et les emojis du monde

Avec un rire d’anticipation, Kernighan a déclaré: “J’ai passé du temps à travailler avec un programme incroyablement ancien – et je l’ai à ce stade où il gérera réellement UTF-8 [a Unicode subset] entrée et sortie, de sorte que vous puissiez avoir des expressions régulières qui, vous savez, prennent des caractères japonais ou quelque chose comme ça. Et cela semble fonctionner correctement.

Kernighan note que Robbins a également travaillé sur egrep, un outil doté d’un mécanisme de reconnaissance de modèles avec une analyse qui est “essentiellement la même” que celle d’AWK. « Le code est joli — quel est le mot technique correct ? — impénétrable.” Kernighan rit. “Mais heureusement, j’ai pu en comprendre suffisamment pour pouvoir intégrer le traitement UTF et le traitement Unicode à l’intérieur.”

Kernighan décrit ses mises à jour comme “en quelque sorte dans la version intermédiaire” sur GitHub. Mais à la question de savoir s’il travaille toujours sur AWK, 45 ans plus tard, la réponse est oui : « c’était du vrai travail, essayer de comprendre l’ancien code et y insérer quelque chose. je pense J’ai raison, mais… il faut plus de tests.

“L’autre chose que j’ai faite était juste une chose rapide et sale pour permettre de gérer les entrées CSV – des variables séparées par des virgules. Parce que cela n’a jamais vraiment été fait, et donc maintenant si vous avez le genre d’entrée CSV simple… il gérera cela correctement en entrée. C’est essentiellement tout le développement que j’ai fait.

Et puis il part pour une discussion sur la façon dont les programmes doivent être testés, qualifiant le problème de « difficile ».

Et les acclamations d’Internet

C’était amusant de voir les réactions. “La légende Unix, qui ne nous doit rien, continue de réparer le code AWK fondamental”, lit-on dans un titre sur Ars Technica, tout en s’émerveillant du texte d’un e-mail que Kernighan a envoyé en mai à Robbins au lieu d’un message de validation git plus long). “Brian Kernighan a dit bonjour, a demandé comment se passait leur visite aux États-Unis et a déposé des centaines de lignes de code qui pourraient ajouter le support Unicode pour AWK, l’outil d’analyse de texte qu’il a aidé à créer pour Unix aux Bell Labs en 1977.”

Et leur message a attiré 360 commentaires – plus d’un exprimant un soulagement, ils ne sont pas les seuls à avoir des problèmes avec Git. “Personne ne comprend le git cli”, a écrit un commentateur. “Certaines personnes viennent de mémoriser plus de commandes que d’autres.” (Ce commentaire a attiré 249 votes positifs.

Donc, le geekery continue à venir. Plus tard dans l’interview, Kernighan dit même qu’il a eu des conversations avec les deux autres auteurs originaux d’AWK – tous deux maintenant dans les années 80 – et l’éditeur Addison Wesley, pour savoir s’ils doivent mettre à jour leur livre de 1988.

Kernighan ironise sur le fait que la nouvelle version “traiterait des choses comme, ‘Eh bien, nous pouvons maintenant représenter les caractères Unicode de manière au moins plausible.'”

« Mais je pense que plus généralement, l’environnement informatique est incroyablement différent aujourd’hui de ce qu’il était il y a 35 ou 40 ans. Les machines sont, vous savez, cent à mille fois plus rapides. Les souvenirs sont un million de fois plus grands. Et cela change votre façon de penser les choses.

“Auparavant, vous ne pouviez pas s’offrir pour exécuter des programmes AWK sur de grandes données, et maintenant ce n’est pas vrai. Il traite des mégaoctets en millisecondes. Et donc cela change les compromis que vous pourriez faire.

Kernighan n’a pas non plus pu s’empêcher de remarquer à quel point nos outils ont changé depuis la première version du livre en 1988 – qui a été écrit à l’apogée de l’outil de formatage de document Unix troff.

À un moment donné, Kernighan dit qu’il a toujours le fichier original du livre AWK de 1988 – enregistré au format de fichier PostScript – qui est même antérieur à .PDF.

Publier et s’engager

Alors qu’est-ce que Kernighan a fait d’autre ces derniers temps ?

Il s’avère – beaucoup.

Brian Kernighan a eu 80 ans en janvier – et il publie régulièrement, selon la page Web de Kernighan à l’Université de Princeton.

  • L’année dernière, Kernighan a publié un nouveau livre explorant “les problèmes sociaux, politiques et juridiques créés par les nouvelles technologies”. Le titre du livre : Comprendre le monde numérique : ce que vous devez savoir sur les ordinateurs, Internet, la confidentialité et la sécurité.
  • En 2019, Kernighan a également auto-publié un ebook Kindle intitulé Unix : une histoire et un mémoireexplorant non seulement les origines d’Unix, mais “comment il est né et pourquoi c’est important”.
  • En 2018, Kernighan a également publié Des millions, des milliards, des zillions : se défendre dans un monde de trop nombreux chiffres.que son site Web décrit comme “un guide de survie essentiel pour un monde submergé de données volumineuses et souvent mauvaises”.
  • En 2015, Kernighan a même co-écrit un livre sur le langage de programmation Go pour Addison-Wesley.

Et bien sûr, en 1978, Kernighan est l’auteur de ce qu’on a appelé le tout premier programme “Hello, world” au monde – et en 1988, Kernighan a co-écrit un livre sur le langage de programmation Awk.

Les intérêts de Kernighan sont étonnamment éclectiques. En 2020, Kernighan a également co-écrit un article sur les défis réels de l’application de la reconnaissance optique des caractères à 180 000 pages de dossiers judiciaires de 1674 à 1913. Les “Procédures de l’Old Bailey” – les dossiers officiels du tribunal pénal central d’Angleterre et du Pays de Galles – a offert “une référence idéale” pour tester les performances de la reconnaissance optique des caractères sur les documents historiques, leurs notes papier.

Et puisque des transcriptions humaines existent déjà pour les 180 000 pages, ils ont pu les utiliser pour tester la précision des trois principaux services OCR basés sur le cloud : Textract d’Amazon Web Services ; Cognitive Services de Microsoft Azure et Vision de Google Cloud Platform.

“Nos résultats ont révélé qu’AWS avait le taux d’erreur médian le plus bas, Azure avait le temps d’aller-retour médian le plus bas et Google Cloud Platform avait la meilleure combinaison d’un faible taux d’erreur et d’une courte durée.”

Depuis 2000, Kernighan fait partie de la faculté d’informatique de l’Université de Princeton (où ce printemps a enseigné un cours sur les «humanités numériques» explorant comment les représentations numériques (et d’autres technologies) sont utilisées pour tout, de la littérature, des langues et de l’histoire à la musique, l’art et religion (“Les données des humanités numériques sont intrinsèquement désordonnées”, explique la description du cours, “et il y a toujours un effort considérable consacré à les nettoyer avant même que l’étude ne puisse commencer”.)

La classe de Kernighan promet un séminaire « visant à créer des outils et à développer des techniques qui aideront les universitaires en sciences humaines à travailler plus efficacement avec leurs données. Cela pourrait inclure l’apprentissage automatique, le traitement du langage naturel, la visualisation des données, le nettoyage des données et la conception de l’interface utilisateur pour mettre les processus à la disposition des chercheurs qui débutent dans la technologie.

Alors peut-être était-il inévitable que Kernighan commence à penser aux caractères Unicode…


Image vedette via Wikipédia.

Leave a Comment