Un portrait du Don

Bonjour
Je ne suis pas tout à fait sûr de la section où poster ça, mais fais toute confiance à nos très respectés modérateurs :-) pour prendre les mesures adéquates s'il s'avère que mon choix n'était pas optimal.

Ce message a essentiellement pour but de signaler aux personnes intéressées ce portrait de Donald E. Knuth publié dans le New-York Times du 17 décembre. Pour les gens qui ne sauraient pas trop qui est Donald Knuth, voici un bref rappel de ses faits et gestes sur lesquels je peux écrire une petite bafouille comme suit avec un espoir raisonnable de ne pas raconter trop de c*nneries.

Knuth est donc un mathématicien et informaticien états-unien né en 1938, qui a beaucoup étudié les algorithmes depuis les années 60 — notamment leur complexité —, en a développé quelques-uns d'un peu célèbres, a écrit Concrete Mathematics, The Art of Computer Programming (premier volume publié en 1968 selon Wikipédia) et, constatant avec horreur que la nouvelle technologie d'impression utilisée pour la seconde édition du second volume de ce dernier opus (1976) ne donnait pas des résultats acceptables pour lui, s'est retroussé les manches et a passé une dizaine d'années de sa vie [1] à écrire TeX, le logiciel (libre) de composition de textes qui n'a pas peur des mathématiques, la fondation sur laquelle LaTeX et ConTeXt sont bâtis.

Ainsi, TeX était né... et il plaçait des boîtes. Des boîtes représentant la place occupée par chaque caractère, par chaque image. Il les plaçait très très bien, avec un super algorithme qui optimise les coupures de lignes sur l'ensemble d'un paragraphe au lieu de procéder ligne par ligne comme on le voit si souvent, avec des résultats peu agréables pour l'œil. Et TeX savait aussi couper les mots en fin de ligne en respectant les règles apprises à l'école, propres à chaque langue. Tout cela concourait à un seul but : éviter au maximum les blancs disgracieux et approcher le Graal du typographe, un gris homogène...

Mais qui va lire une page remplie de petits rectangles ? TeX n'a même pas connaissance du dessin des caractères qu'il place, il ne se soucie que d'agencer les emplacements rectangulaires que ces caractères sont censés occuper. Pour que la Page soit un digne représentant du Texte, il lui fallait désormais une police de caractères pour donner corps à toutes ces « boîtes abstraites ». Et le mathématicien-informaticien de se mettre à dessiner une police dont les caractères latins se marient harmonieusement avec les symboles mathématiques [2]. Mais comment crée-t-on, au juste, une telle police lorsqu'on est en 1977 et qu'on s'appelle D. E. Knuth ? Eh bien, en toute simplicité, on écrit Metafont, un logiciel — toujours libre — dont l'entrée est un programme décrivant des formes géométriques (segments, courbes de Bézier et instructions de remplissage) et la sortie un rendu à la taille et à la résolution souhaitée de chaque glyphe ainsi décrit. Metafont est à la fois le nom du logiciel et du langage compris par ce logiciel, permettant de décrire géométriquement le dessin des caractères d'une police donnée. Comme toujours avec Knuth, tout est abondamment documenté : la série Computers & Typesetting contient cinq volumes [3] dont deux expliquent non pas comment utiliser TeX ou Metafont, mais comment fonctionne leur implémentation (en Pascal[4]).

Mais si l'on peut décrire le dessin des caractères de manière géométrique, on peut aussi décrire des figures géométriques quelconques, des schémas... bref, tout un tas de choses fort utiles qui n'a nullement besoin d'être coincé au fin fond d'une police de caractères. C'est pour cela que le logiciel et le langage Metafont furent par la suite modifiés par un étudiant de Knuth, John D. Hobby, pour donner MetaPost. MetaPost, c'est donc presque comme Metafont : en entrée, une description de figure géométrique — que l'on peut faire largement avec les concepts du plan complexe — et en sortie, la figure dans un format vectoriel ou non (PostScript, SVG ou PNG dans les versions actuelles). Le langage MetaPost a de grandes qualités : résolution automatique et transparente des systèmes linéaires sous-jacents aux relations écrites entre les inconnues, qui peuvent être par exemple les affixes de certains points, les coordonnées $x$ ou $y$ d'autres, des coefficients de la matrice d'une transformation affine du plan, etc. C'est juste dommage qu'il ait été conçu bien avant le format PDF avec sa notion de transparence, et encore plus longtemps avant TikZ et PGF...

Pour revenir à l'article, il retrace les grandes lignes de la vie de Knuth (au moins sa carrière) avec des témoignages de diverses personnes l'ayant cotoyé. On y trouvera quelques anecdotes sympathiques comme celle-ci, que je traduirai si quelqu'un le souhaite :
This decade-long detour took place back in the age when computers were shared among users and ran faster at night while most humans slept. So Dr. Knuth switched day into night, shifted his schedule by 12 hours and mapped his student appointments to Fridays from 8 p.m. to midnight. Dr. Broder recalled, “When I told my girlfriend that we can’t do anything Friday night because Friday night at 10 I have to meet with my adviser, she thought, ‘This is something that is so stupid it must be true.’”

Bonne lecture.

Edit : j'avais initialement présenté l'article comme une interview de Donald Knuth, mais il n'y a guère plus d'une ou deux phrases qui semblent avoir été prononcées par Knuth devant le journaliste. J'ai donc requalifié l'œuvre en portrait.

Notes de bas de page :
  1. Grosso modo de 1977 à 1989, mais les dernières corrections de sa main datent de 2014.
  2. D'après le Wikipédia anglophone, le papa de D. E. Knuth a été patron d'une petite imprimerie et enseignant-bibliothécaire, sans doute cela a-t-il joué un rôle sur la relation de son fils aux ouvrages imprimés.
  3. A - The TeXbook
    B - TeX: The Program
    C - The METAFONTbook
    D - METAFONT: The Program
    E - Computer Modern Typefaces
  4. En fait, en WEB, c'est-à-dire un système qui fait vivre le code avec sa documentation, les deux étant littéralement entremêlés (voir par exemple tex.web). Le programme TANGLE en extrait le code Pascal compilable, tandis que WEAVE se charge de la documentation, formatée avec TeX pour l'impression.
Connectez-vous ou Inscrivez-vous pour répondre.