Script de la vidéo:
Portrait: Kenneth Thompson
—————————————
Bonjour tout le monde. Voici un nouveau format sur la chaîne, qui vous plaira je l’espère ! Je vais faire ici quelques portraits de figures marquantes, en tous cas pour moi, du monde de l’informatique. Et pour inaugurer ce nouveau format, je vous propose de parler de Kenneth Lane Thompson. Thompson avec un p !
Ce cher Ken, oui on va l’appeler Ken pendant cette vidéo, ce cher Ken donc, est né le 4 février 1943 à la Nouvelle Orléans aux États Unis. Fasciné depuis toujours par la logique, il poursuit un premier cycle universitaire à Berkeley en Californie. Évidemment, quand il a la possibilité de mettre la main sur un ordinateur, sa passion pour la logique aidant, il va se jeter dessus. Il va passer quelques années comme ça, à étudier pleins de domaines, et à devenir, selon ses propres termes, un étudiant professionnel. Il travaillait beaucoup, apprenait plein de choses, mais ce n’est pas le genre de type avec une grande ambition. Il apprenait pour lui, pour comprendre, sans vraiment chercher à savoir quoi faire de ses connaissances. Il était vraiment chez lui à l’université, un peu à la maison. D’ailleurs, le plus gros ordinateur de l’université était utilisé de 8h du matin à minuit. Une fois minuit arrivée, il sortait ses clés, et allait dans la salle de l’ordinateur pour s’en servir de son coté. Jusqu’à 8h du matin. Il avait le plus gros ordinateur de l’université comme ordi personnel… Alors il va apprendre la programmation et d’autres choses. Mais son manque d’ambition fait qu’il ne s’inscrit même pas en troisième cycle, en Graduate School comme c’est appelé là bas.
Parmi ses professeurs, se trouve une personne qui est là pour enseigner juste une année et qui travaille habituellement aux Bell Laboratories, aussi appelés Bell Labs. Alors pour bien comprendre de quoi il s’agit, je vais déjà faire une petite aparté sur Les Bell Labs.
Les Bell Labs sont très vieux, c’est l’avatar d’un laboratoire créé à la fin du XIX° siècle. Il s’agit du département de Recherche et Développement de l’American Telephone & Telegraph Company, plus connue sous le nom de AT&T. Alors je sais, c’est un peu plus compliqué que ça, ça a appartenu à Graham Bell au début, mais c’est pas le sujet de la vidéo. AT&T a eu le monopole sur les lignes téléphonique pendant la majeure partie du XX° Siècle. Et du coup, chaque fois qu’un appel était passé aux États Unis, un petit pourcentage de la facturation était dédié à la R&D, et donc aux Bell Labs. Autant dire qu’ils avaient des budgets assez incroyable. Et les résultats sont là. On compte pas moins de 9 prix Nobel, et 4 Turing Awards pour des travaux faits conjointement avec Les Bell Labs.
Revenons-en à Ken Thompson. Arrivé à la fin de sa dernière année de second cycle, il ne prend même pas la peine de vérifier si il a validé son diplôme, ni même de s’inscrire dans le troisième cycle. En gros, ce qui l’intéresse, c’est d’apprendre des trucs, et de jouer avec les ordinateurs qu’il a à sa disposition. L’été se passe, et il a la surprise que ce prof temporaire qui bosse aux Bell Labs lui envoie un emploi du temps pour la rentrée, en troisième cycle ! Non seulement il a eu son diplôme de second cycle, mais en plus il a été inscrit pour le troisième cycle sans même en avoir fait les démarches…
Il commence alors son troisième cycle. Beaucoup de recrutements et de tentatives de recrutements ont lieu durant cette année là. Pas mal d’entreprises montent des petits stands dans le gymnase pendant des sessions où les élèves rencontrent les entreprises. Ken ne se rend pas à ces réunions dans lesquels les stands sont alignés les uns à coté des autres dans le gymnase. À plusieurs reprises, il a rendez vous avec des recruteurs des Bell Labs, mais à chaque fois il zappe complètement le rendez vous, en étant occupé à une autre tâche. Il se qualifie lui même à l’époque de sans ambitions. Il ne voit pas la possibilité de valoriser ses connaissances avec un métier. Il profite juste de l’université pour apprendre, pour partager ce qu’il apprend.
À force de ne pas réussir à discuter avec KT, le recruteur des Bell Labs prend une décision radicale. Un soir, il va directement sonner à la porte de l’appartement de Ken Thompson. Ce dernier le reçoit avec plaisir, et ils vont discuter autour de bières et de Ginger Schnapps. Mais Ken est assez mal à l’aise de se faire payer un voyage sur la côte Est des États Unis alors qu’il sait très bien que sa réponse finale sera non, qu’il ne souhaite pas travailler pour les Bell Labs. Devant l’insistance du recruteur qui lui assure qu’il n’y a aucun problème, il finit par accepter et va en profiter pour rendre visite à des amis qu’il a sur la cote Est et sur le trajet vers la cote Est. Il négocie pour que la rencontre avec les Bell Labs, passe de deux jours d’entretiens, à une seule journée. Car il en est convaincu, il n’est pas intéressé pour travailler là bas.
Vous devez vous en douter, tout ne se passera pas comme prévu une fois arrivé aux Bell Labs.
Le premier endroit que Ken va découvrir, c’est le couloir du Computer Science Research chez Bell Labs. Et là, il va être très surpris. Il connait chacun des noms sur les portes des bureaux du couloir du bâtiment. C’est un vrai choc pour lui… Il passe alors un entretien avec deux personnes, dont Shen Lin, un mathématicien, qui est notamment l’auteur d’un algorithme pour résoudre le problème du voyageur de commerce, qui est un problème classique en informatique et en algorithmique. L’entretien se passe bien.
À la fin de la journée, Ken reprend sa voiture de location et repart de la côte Est des États-Unis pour rentrer à Berkeley. Il fait plusieurs étapes pour voir ses amis qui sont dans la région, et à sa surprise, à son troisième arrêt, une proposition des Bell Labs l’attend chez son pote ! Il repart avec l’offre sous le bras, et pendant son trajet d’environ deux heures jusqu’à l’étape suivante, il n’arrête pas d’y penser. Forcément, à la quatrième étape, il finit par téléphoner aux Bell Labs depuis chez ses amis. Il accepte l’offre. Il restera aux Bell Labs pendant 35 ans !
À cette époque, la plupart des ordinateurs étaient limités à une seule tâche. Au MIT, fin 1961, début 1962, un système qui permet à plusieurs programmes de fonctionner simultanément sur l’ordinateur est présenté. Il s’agit de CTSS, le Compatible Time Sharing System. Ce dernier fonctionne sur un IBM 7090, et présente pleins de nouveautés qui nous sont familères aujourd’hui. C’est par exemple le premier système d’exploitation qui permet de se connecter avec un identifiant et un mot de passe. C’est également sur CTSS que Louis Pouzin, alors membre du MIT, écrit un programme qui s’appelle RUNCOM et qui a pour objectif d’exécuter des commandes que l’on a mise dans un fichier. C’est l’ancêtre des scripts Shell. Et enfin, on trouve QED, l’ancêtre de ed et donc de vi ou vim sous Unix. Bref, c’est un système révolutionnaire qui préfigure les systèmes d’aujourd’hui.
General Electric, gros consortium industriel américain, construit un ordinateur dont l’objectif est de fonctionner avec un système d’exploitation en Time Sharing. Il s’agit du GE 645. Le MIT s’y associe pour écrire un système encore plus aboutit que CTSS. Mais il ne font que la conception des éléments du système. Ce sont les Bell Labs dans lesquels l’implémentation, ou la programmation du système est réalisée en suivant les demandes du MIT. Il y a environ 25 personnes qui travaillent sur ce nouveau système appelé MULTICS, pour Multiplexed Information and Computing Services.
Ken Thompson fait partie de l’équipe de développement, mais le travail n’est pas très intéressant pour eux. Il ne font que réaliser des éléments, sans avoir une vision d’ensemble claire, et sans vraiment pouvoir s’épanouir. L’encadrement chez les Bell Labs va se rendre compte du peu d’intérêt de ses ingénieurs, et va donc se retirer du projet. General Electric se retire d’ailleurs aussi, pour passer la main à Honeywell qui vendra MULTICS plus tard pendant des années.
Mais les Bell Labs se sont retiré du projet avec un goût amer dans la bouche. Chez les Bell Labs maintenant c’est, pas de systèmes d’exploitation. Ce n’est pas notre métier. On ne fait pas de systèmes d’exploitations. Et là au milieu se trouve Ken Thompson qui lui veut bosser sur des systèmes d’exploitation !
Alors il va trouver dans les locaux ce qu’ils appelaient une workstation ou station de travail, qui était un ordinateur PDP-7 de chez DEC. Il était utilisé comme outil de conception électronique. On dessinait un certain nombre d’éléments sur un écran cathodique à l’aide d’un stylet(DEC 340 ou 635), puis le PDP-7 envoyait ça à une plus grosse machine pour faire des calculs. Et le résultat était ensuite accessible sur le PDP-7. Il a alors pris cette machine et a développé des jeux dessus ! Il va par exemple développer un shoot’em up dans lequel deux joueurs se chassent et le premier qui tue l’autre a gagné. Pour faire ça, il va installer son système sur plusieurs PDP-7 dans les Bell Labs, et utiliser la liaison téléphonique entre eux pour faire passer les informations. C’est carrément un jeu en réseaux. Ah oui, parce que Ken, je ne vous l’ai pas dit, mais c’est un gamer. Et pas facile d’être un gamer dans les années 60-70, il n’y a pas de consoles, il n’y a pas de PC, rien de tout ça.
Mais il y a un autre truc qui est intéressant avec ce PDP-7. Et ce truc c’st un disque dur. Alors, bon, tout le monde sait ce que c’est qu’un disque dur aujourd’hui, mais à l’époque, ce disque dur faisait pas loin de 2m de haut, et un seul plateau. Qui était d’ailleurs positionné verticalement. Pour la petite histoire, il y a une légende avec ce disque dur, qui était qu’on ne se mettait jamais devant ou derrière lui. Au cas où. Un disque de deux mètres qui tourne à grande vitesse et qui se détache, ça peut faire mal !
Et ce disque était très rapide, bien plus rapide que la machine. Ce qui était un peu dommage. Du coup, Ken s’est mis à écrire un algorithme d’ordonnancement pour optimiser le débit de ce disque, histoire d’avoir les meilleures performances possibles. Mais pour le tester, il faut avoir des données à manipuler. Là il ne s’agit pas de mesurer la vitesse de lecture séquentielle du disque, mais de mesurer la vitesse d’un usage réel, et de pouvoir comparer ça avec les autres algorithmes qui existaient. Il a donc écrit quelques programmes qui manipulaient des données, je pense qu’il a écrit aussi de quoi avoir des fichiers. Et au bout d’un moment, il se rend compte qu’il n’est pas très loin d’avoir écrit les bases d’un système d’exploitation, en utilisant son expérience acquise lors de l’épisode MULTICS. Quand je dis pas très loin, il faut comprendre à 3 semaines de boulot. En effet, il lui manque un éditeur, pour écrire d’autres programmes directement sur son système. Un assembleur pour transformer le code écrit dans cet éditeur en programme exécutable. Et une interface qui lui permet d’accéder à ses fichiers, un embryon de noyau en fait. Et totalement par hasard, pile à ce moment, son épouse part en vacances 3 semaines avec leur enfant d’un an, chez ses parents à elle, de l’autre coté des États Unis, en Californie… Il a donc 3 semaines où il va être 100% disponible pour son projet ! Il réalise donc son petit projet, qui va ensuite fonctionner sous le nom de UNICS ! Les systèmes Unix étaient nés. Alors par la suite il va inventer le mécanisme des Pipe sous Unix, il va créer la commande grep, enfin tout un ensemble de choses qui sont fondamentales encore aujourd’hui sur Linux ou les systèmes Unix. Il a également écrit le langage B qu’il va ensuite modifier à l’aide de Dennis Ritchie pour créer le langage C.
Mais si je me suis dit que j’allais écrire un portrait de Ken Thompson, c’est parce qu’il ne s’est pas arrêté là. Tout à l’heure, je disais que c’était un gamer. Alors quand on n’a pas de Overwatch ou de Wow Classic pour jouer, on trouve des alternatives. Et une de ses alternatives était le jeu d’échec. Et là, ça commence assez tôt, car il s’intéresse aux échecs alors qu’il est grosso modo en classe de cinquième. C’est l’époque à laquelle un petit génie des échecs fait la une des journaux, un certain Bobby Fischer. Vu qu’ils ont quasiment le même âge, ça donne l’idée à Ken de s’intéresser aux échecs. Il s’inscrit au club de son école, mais c’est moins intéressant qu’il n’y parait. Il n’aime pas trop gagner par exemple, car il se sent mal pour son adversaire qui y a investi beaucoup d’énergie et de cœur. Évidemment il n’aime pas trop perdre non plus… Bon c’est compliqué là pour lui, ça limite quand même les options !
Mais c’est bon, là il a quand même pris le virus des échecs. Plutôt en tant que spectateur au final, comme ça il n’a pas à gagner ou à perdre, mais il peut apprécier la beauté des stratégies et l’élégance de certains mouvements. Encore aujourd’hui il est capable de se lever vers 4h du matin pour suivre un match de l’autre coté de la planète !
Du coup, il décide d’écrire un programme de jeu d’échecs. En 1972, l’ACM, l’association for computing machinery fait son premier tournois de jeux d’échec dans sa compétition annuelle. Il s’y inscrit donc avec un programme de jeux d’échecs écrit dans ce nouveau langage C. L’expérience de ce tournoi lui apprend une chose, c’est que seule la vitesse de calcul compte. Il va travailler pour améliorer ça. Ce qu’il va créer est une machine autonome pour jouer aux échecs. Cette fois c’est plus qu’un programme puisque c’est un système autonome, matériel et logiciel. En 1978, il retourne au tournoi de l’ACM et cette fois, il va en sortir vainqueur ! Ce qui ne sera pas le cas de l’année suivante. Entre temps, il va faire la connaissance de Joe Condon, un autre ingénieur qui bosse régulièrement aux Bell Labs, et qui est particulièrement doué dans la conception de cartes électroniques. Ensemble ils vont construire Belle, le successeur de son petit système autonome, mais d’un niveau incomparable. En 1980, Belle va être le premier ordinateur dédié aux échecs à gagner le championnat du monde de jeux d’échecs informatiques, enfin le World Computer Chess Championship. Il gagnera également le tournoi de l’ACM 5 années d’affilé. Belle va même servir de modèle pour la conception de ChipTest, l’ancêtre de Deep Blue.
Alors on se dit que c’est déjà un type qui a apporté pas mal à l’informatique. Vous pensiez que c’était tout ? Mais que nenni ! Il va encore faire un coup d’éclat ! Pour ce nouveau coup d’éclat, on va aller au début des années 1990. À cette époque, les systèmes informatiques commencent à être bien démocratisés, mais le problème du support des différentes langues est très présent. En effet, la plupart des systèmes dérivent directement ou indirectement de la représentation des alphabets avec l’encodage ASCII. Qui ne représente guère que certains alphabets latins de façon interopérable. Si vous voulez mieux comprendre le problème, j’avais fait une petite vidéo sur le sujet, je vous la met en fiche ici, et dans la description de la vidéo. Donc, début des années 1990, Ken travaille sur un système d’exploitation appelé Plan 9. Pour le rendre vraiment interopérable, il était prévu d’utiliser la norme ISO 10646 pour que plan 9 supporte les tables de caractères sur 16 bits ce qui aurait permis d’avoir pas mal d’alphabets dans la table de caractères. Il bosse dessus avec Rob Pike, un ingénieur canadien qui bosse aussi aux Bell Labs. Peu de temps avant de publier Plan 9, Rob Pike se souvient avoir reçu un coup de fil de la part d’une personne de chez IBM, qui faisait partie du comité X/Open. Bon, un peu de contexte s’impose, car je mets X/Open dans la boucle, mais qu’est ce que c’est que ce machin ? Pour le comprendre, il faut savoir que les années 1990 ont été assez difficiles pour les systèmes Unix, car il y en a beaucoup de variantes et celles-ci ne sont pas toujours interopérables, c’est à dire qu’un programme qui tourne sur une version d’Unix ne va pas forcément être facilement adaptable sur une autre version dUnix. Pour compenser ça, plusieurs organismes sont créés, comme la X/Open Company, qui a pour but de définir et de mettre en place des normalisations. On lui doit par exemple, la SUS, la Single Unix Specification, le protocole LDAP, CORBA, et d’autres trucs que les informaticiens peuvent connaître. Donc, le type appelle Rob Pike pour que la norme de représentation des caractères utilisée dans Plan 9 ne soit pas celle de la norme ISO, mais celle définie par la X/Open Company. Mais là, Rob va comprendre qu’il y a une belle opportunité pour concevoir un meilleur standard et d’avoir le X/Open qui le met en avant. Il va donc proposer ça, et le type accepte que Pike et Thompson proposent leur standard, si c’est fait de façon très rapide. Du coup, en septembre 1992, Ken et Rob décident de diner ensemble, et pendant le dîner vont concevoir UTF-8. Quand ils ont envoyé leur proposition à X/Open après le dîner, la réponse a été que cette proposition était meilleure que le projet sur lequel le X/Open travaillait ! C’était un mercredi soir. Le X/Open leur demanda quand il pourrait avoir une version à présenter, car le vote de décision était imminent. Le lundi suivant, ils avaient un système fonctionnel. Et UTF-8 était inventé et mis en avant par le X/Open. Aujourd’hui le standard UTF-8 est le standard utilisé quasiment partout pour écrire du texte, pages web, documents textes etc etc, et ça dans les différents alphabets, ainsi que dans les langues qui ne sont pas basées sur des alphabets. Ça prend en compte plein de choses, comme le sens de lecture des caractères et la possibilité d’y mettre autre chose que des alphabets associés aux langues. C’est grâce à UTF-8 qu’on peut s’envoyer des émojis par exemple.
Bon allez, encore un pti truc pour finir. Aujourd’hui Ken Thompson bosse chez Google, et il y a co-écrit le langage Go. Mais comme on peut le voir, le monde de l’informatique moderne lui doit beaucoup !
Pour cette vidéo je me suis inspiré d’une interview extra ordinaire qu’il a donnée ce printemps à Brian Kernighan et dans laquelle il y a une tonne d’anecdotes que je n’ai pas mentionnées. Je vous la mets en référence, ainsi que quelques autres sources qui m’ont permis de faire cette vidéo.
Voilà pour ce premier portrait. J’espère que ça vous a plu, je compte en faire quelques autres, mais ça va être compliqué d’arriver à ce niveau quand même ! Tout le monde n’est pas Ken Thompson. En tous cas, si ça t’a plu, tu peux t’abonner, j’ai vu que la très grande majorité de ceux qui regardent des vidéos ne sont pas encore abonnés ! Tu peux aussi partager la vidéo à ceux que ça pourrait intéresser. En plus, j’ai mis en place un serveur Discord pour ceux qui voudraient qu’on discute en dehors des vidéos, le lien est, évidemment dans la description. Et moi je vous dis, à la prochaine ! Ciao les Geeks !
——
https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
https://www.youtube.com/watch?v=EY6q5dv_B-o