Je n'arrive pas à passer l'article en bêta pour d'éventuelles relectures (est-ce que pour les tutos ?). Je propose un extrait concernant Ken Thompson ci-dessous.
Je vous remercie de lire et de donner un avis sur le style, l'exactitude des infos (si jamais) et aussi la précision (est-ce trop peu abordé, trop précis, trop technique ou pas assez…).
Cela m'aidera à savoir comment rédiger les autres de la meilleure manière possible.
Merci d'avance.
EDIT : j'ajouterais bien entendu des images, des liens pour approfondir des notions ou lire des travaux plus exacts. Des extraits de langages de programmations seront aussi proposés mais tout ceci ne sert qu'à embellir l'article.
Cet article est le premier d'une longue série censée rendre hommage à des personnages qui ont façonné profondément l'histoire de l'informatique en tant que science et en tant que technique.
Aujourd'hui, nous allons aborder la naissance d'un système d'exploitation de 1970, dont ses principes sont toujours d'actualité 40 ans plus tard. De plus, de part son influence, nous allons voir des personnalités qui se sont basées sur UNIX pour aller plus loin encore.
La naissance d'UNIX est particulièrement liée à l'histoire des Bell Labs, des laboratoires qui verront la naissance du transistor, du laser, d'UNIX, du langage C et C++ ou encore de la fibre optique.
Ken Thompson
Naissance d'UNIX
Kenneth Lane Thompson est né le 4 février 1943 aux États-Unis à la Nouvelle Orléans.
En 1966, il ressort de la célèbre université de Berkeley, en Californie, avec une maîtrise en électronique et science informatique. Peu après, il va rejoindre l'équipe de développement au Bell Labs du système d'exploitation Multics où il va rencontrer Dennis Ritchie.
Le système Multics hérite d'un système plus anciens CTSS, dont la principale caractéristique était d'être à temps partagé et non en traitement par lot. Plusieurs utilisateurs pouvaient utiliser la machine en même temps pour des tâches différentes. Le système d'invite de commande et de traitement de texte va être les précurseur du shell et de Troff au sein d'UNIX.
Mais en plus de cet héritage, Multics va inclure le support du terminal distant permettant à chacun d'exécuter des tâches depuis son terminal dans son bureau sur l'ordinateur central. Pour mener cela à bien, un système d'anneaux de sécurité va se mettre en place permettant aux applications de se lancer avec des droits plus ou moins restreints. Technique que l'on va retrouver dans l'architecture des processeurs modernes comme le x86. Le système de fichier hiérarchisée va servir de référence au rootfs d'UNIX.
Cependant, en 1969 le travail de Dennis Ritchie et de Ken Thompson s'arrêtera sur Multics, les Bell Labs se retirent du projet. Cela va laisser le champ libre à la création d'UNIX. Ken profita du temps libéré pour créer son nouveau système, the New Ken's System sur un PDP-7 et le tout écrit dans un langage d'assemblage.
Son collègue Brian Kernighan suggéra de renommer le système en Unics car contrairement à Multics, il n'y avait qu'une seule méthode pour faire les choses. Pour des raisons obscures, sans doute commerciale, Unics deviendra UNIX.
Le problème de ce système est sa difficulté à être portée. Ken travaillait en parallèle sur un langage de programme nommé le B qui descend du BCPL. Ce langage est le prédécesseur du C et est nommé en hommage à sa femme nommée Bonnie. Cependant UNIX ne sera pas porté en B, en effet ce langage n'avait pas de types considérant comme pointeur ou entier suivant le contexte et la taille standard d'une variable dépendant du mot de l'architecture de l'ordinateur. UNIX a faillit être porté à ce moment là en TMG ou Fortran.
En 1969 et 1970, Ritchie travailla sur le langage C pour succéder au B. Après sa disponibilité en 1971, Ken s'attela à porter UNIX en C sur un PDP-11, cet ordinateur ouvrait la porte du traitement de texte avec le langage roff et ses descendants futurs. À partir de 1972, UNIX est enfin portable et sa diffusion pourra bientôt commencer.
Ken restera jusqu'à la diffusion de la version 6 en 1975. Les versions 4, 5 et 6 avaient apporté notamment le pipe permettant de lier les programmes entre eux. Cette année là UNIX commença à quitter le Bell Labs.
Pendant son travail sur UNIX, il sera à l'origine des utilitaires grep et ed, l'éditeur de texte qui servira de base à la création de vi et Vim. En effet, à cette époque les informaticiens étaient souvent proches des mathématiques et Ken Thompson va exploiter des travaux récents dans le milieu. Dans les années 1940 et 1950, Michael Rabin et Dana Scott vont travailler sur la formalisation des expressions régulières. Ken Thompson va être le premier à exploiter cette découverte mathématique dans l'éditeur de texte qed sur CTSS avant de poursuivre ce travail sur UNIX avec ed et grep. Par la suite la plupart des logiciels de gestion du texte ou les langages de programmations vont reprendre ces concepts.
Ken Thompson n'a eu aucun regret sur la conception d'UNIX, quand on lui demandait ce qu'il aurait changé avec le recul dans UNIX, il répond avec humour "J'aurais orthographié creat avec un e". La fonction système creat() n'est pas correctement orthographié sans raison apparente, l'orthographe réelle rentrant dans les 6-8 caractères qui était une limite à cette époque.
Les jeux d'échecs
Après avoir quitté le développement d'UNIX, il va s'atteler à une autre passion, les échecs avec l'ordinateur Belle. Avec Joe Condon, il va modifier un PDP-11/23 pour créer un ordinateur capable de jouer aux échecs, de manière similaire au célèbre projet Deep Blue de IBM deux décennies plus tard. Entre 1978 et 1986, cet ordinateur gagnera de nombreux championnats dont celui des ordinateurs d'échecs en Amérique du Nord. L'ordinateur a été confisqué temporairement par les États-Unis lors d'une volonté de participer à un match soviétique en URSS. En pleine guerre froide, cela a été annulé pour éviter un transfert illégal de technologies à une puissance ennemie.
Pendant ces années là, il travaillera également sur les tables de finale aux échecs pour trouver les coups lorsqu'il reste 3 à 5 pièces qui permettent de gagner. Pour sa part, il se concentrera sur la manière d'obtenir la promotion des pions restants afin de renverser la situation du jeu en fin de partie (sans préciser si cela mènera effectivement à une victoire ou à une défaite).
Cela est à mettre en relation avec son travail sur le moteur de base de données (non relationnelles) dbm en 1979 qui met l'accent sur la performance par le stockage de données via une clé primaire et des fonctions de hashages extensibles.
La création de Plan 9
Il ne s'arrêta pas là, à la fin des années 80, il va s'occuper de son dernier projet au sein des Bell Labs, le système d'exploitation Plan 9. Selon lui, les défauts d'UNIX étaient trop profonds pour nécessiter de simple correctifs, d'où ce changement de projet et d'architecture. Tout d'abord, depuis la naissance d'UNIX l'informatique a eu des évolutions importantes : interface graphique, le réseau mais aussi l’internationalisation du secteur et ces éléments ne sont pas inclus dans l'architecture du système ce qui la rend moins puissante.
Plan 9 va inclure dans le concept "tout est fichiers" de son prédécesseur le réseau et l'interface graphique. Le dialogue avec ces concepts se fera à travers le système de fichier virtuel /proc dont les sous-espace contient des fichiers où l'écriture dedans permet le dialogue effectif avec le réseau ou l'IHM. Ce répertoire /proc fera partie intégrante du système ce qui est plutôt novateur pour dialoguer avec les processus et le noyau. Le protocole 9P sera conçu pour limiter la quantité d'appels systèmes pour exploiter le réseau ou le dialogue entre processus ou encore les systèmes de fichiers distribués.
L'union des répertoires fera partie intégrante du système pour permettre de fusionner des sous-espaces du système de fichiers au delà d'un simple lien symbolique avec la commande bind.
La dernière problématique de Plan 9 est l’internationalisation, à savoir que tout le système puisse interpréter les langues non-latines comme le chinois et qu'un système non chinois puisse interpréter les caractères chinois donc sans changer forcément d'encodage de caractères. Au cours d'un repas au restaurant avec Rob Pike, il vont mettre en place ce qui sera l'encodage UTF-8 au sein du format Unicode et qui permet effectivement avec un seul système d'encoder n'importe quel caractère existant, d'être compatible avec les anciennes normes comme l'ASCII mais aussi d'économiser de la place car les caractère latin ne seront encodés que sur un octet contre quatre pour un idéogramme chinois. Ce système de caractères encodés sur des longueurs variables rendra ce système plus complexe à réaliser. Aujourd'hui UTF-8 est presque partout, dans la plupart des systèmes d'exploitations, des logiciels ou des langages de programmations modernes comme sur ce site.
Le langage Go
Il prendra sa retraite en 2000 des Bells Labs, sera un conseiller pour Entrisphere avant de rejoindre Google en 2006. C'est là bas qu'il participera au dernier projet de sa vie, le langage de programmation Go avec encore et toujours Rob Pike qu'il a rejoint chez Google.
Fort de son expérience passée, après avoir reconçu UNIX avec Plan 9 il va s'atteler à essayer de reconcevoir le langage C avec les dernières évolutions de l'informatique.
Ce langage va notamment reprendre l'aspect de programmation concurrente nécessaire avec les ordinateurs à plusieurs cœurs, incorporer un ramasse miette pour la gestion de la mémoire, une simili gestion des exceptions et un typage bien plus fort pour être plus sûr.
Épilogue
Ken Thompson est comme nous avons pu le voir un programmeur d'exception qui a su participer à de nombreux projets d'envergure et dont la plupart ont été une grande source d'inspiration pour les logiciels actuels.
C'est pour cela qu'il a été, comme avec ses collègues des Bell Labs, souvent récompensé. Il a reçu notamment le prix Turing, la National Medal of Technology et la médaille Richard Hamming souvent en compagnie de Dennis Ritchie.