Nous sommes Charlie

Une escalade vertigineuse, mais invisible

Par le Temps de lecture estimé : 10min 2 Commentaires

Cet article vient d'un post sur Google+ de Jean-Baptiste Quéru, un polytechnicien travaillant sur Android chez Google. Ce post, ainsi que sa traduction par tcit est sous licence CC:BY 3,0. Comme je trouve ce texte génial, j'ai décidé de le partager ! Pour les moins technophiles d'entre vous, pas de problème si cela vous semble obscure, n'ayez pas peur, tant que vous saisissez la complexité, qui ferai faire des cauchemars au plus grand ingénieur ! Pour les problèmes de traduction, il faut voir du côté du blog de tcip !


Vous venez juste d'arriver sur la page d'accueil de Google.
C'est simple, n'est-ce pas ?
Que vient-il de se passer ?

Et bien, lorsque vous connaissez un peu le fonctionnement des navigateurs, ce n'est pas si simple. Vous venez juste de mettre en jeu HTTP, HTML, CSS, ECMAScript (NdT : Javascript standardisé), et autres. Toutes ces choses sont des technologies incroyablement complexes qui feront n'importe quel ingénieur être pris de vertiges s'il pense trop à elles, de telle sorte qu'aucune entreprise aujourd'hui ne peut faire face à toute cette complexité.

Simplifions les choses.

Vous venez juste de connecter votre ordinateur à www.google.com

C'est simple, n'est-ce pas ?

Que vient-il de se passer ?

Et bien, lorsque vous connaissez un peu le fonctionnement des réseaux, ce n'est pas si simple. Vous venez juste de mettre en jeu DNS, TCP, UDP, IP, Wifi, Ethernet, DOCSIS, OC, SONET et d'autres. Ces choses sont en réalité des technologies incroyablement complexes qui feront n'importe quel ingénieur être pris de vertiges s'il pense trop à elles, de telle sorte qu'aucune entreprise aujourd'hui ne peut faire face à toute cette complexité.

Simplifions les choses.

Vous venez juste de taper www.google.com dans la barre d'adresse de votre navigateur.

C'est simple, n'est-ce pas ?

Que vient-il de se passer ?

Et bien, lorsque vous connaissez un peu le fonctionnement des systèmes d'exploitation, ce n'est pas si simple. Vous venez juste de mettre en jeu un noyau (NdT : kernel), une pile hôte USB, un répartiteur d'entrée, un gestionnaire d'événements, un « aligneur de polices », un procédé pour « tramer » des polices, un système de fenêtrage, un pilote graphique, et bien d'autres, tous écrits dans des langages de haut niveau qui doivent être passés à travers des compilateurs, éditeurs de liens, optimiseurs, interpréteurs, et encore d'autres. Ces choses sont en réalité des technologies incroyablement complexes qui feront n'importe quel ingénieur être pris de vertiges s'il pense trop à elles, de telle sorte qu'aucune entreprise aujourd'hui ne peut faire face à toute cette complexité.

Simplifions les choses.

Vous venez juste d'appuyer sur une touche de votre clavier.

C'est simple, n'est-ce pas ?

Que vient-il de se passer ?

Et bien, lorsque vous connaissez un peu le fonctionnement des périphériques, ce n'est pas si simple. Vous venez de mettre en jeu un régulateur de puissance, un capteur de pression, un multiplexeur d'entrée, une pile périphérique USB, une pile hub USB, tout cela implémenté dans une seule puce électronique. Cette puce électronique est construite de fines tranches de lingots de silicium monocristallin hautement purifié, dopé avec des quantités infimes d'autres atomes qui sont projetés dans la structure cristalline, interconnectées avec plusieurs couches de cuivre ou d'aluminium, qui sont elles-mêmes déposées selon des motifs de lumière ultraviolette de haute énergie étant axés avec une précision d'une fraction de micron, reliées au monde extérieur par de minces fils d'or, tous à l'intérieur d'un emballage constitué d'une résine thermiquement et dimensionnellement stable.

Les motifs de dopage et la mise en œuvre des interconnexions entre les transistors, qui sont regroupés pour créer des portes logiques. Dans certaines parties de la puce, les portes logiques sont combinées pour créer des fonctions arithmétiques et bit à bit, qui sont combinées pour créer une ALU. Dans une autre partie de la puce, les portes logiques sont combinées en boucles bistables, qui sont alignées en rangées, qui sont combinées avec des sélecteurs afin de créer une banque de registres. Dans une autre partie de la puce, les portes logiques sont combinées en contrôleurs de bus et de décodeurs d'instructions de microcode pour créer un ordonnanceur d'exécution. Dans une autre partie de la puce, elles sont combinées dans les multiplexeurs d'adresse et de données et de circuits de synchronisation pour créer un contrôleur de mémoire. Il y a même encore plus. Toutes ces choses sont en réalité des technologies incroyablement complexes qui feront n'importe quel ingénieur être pris de vertiges s'il pense trop à elles, de telle sorte qu'aucune entreprise aujourd'hui ne peut faire face à toute cette complexité.

Pouvons nous encore plus simplifier ?

En fait, et c'est effrayant, non, nous ne pouvons pas. Nous pouvons à peine comprendre la complexité d'une seule puce dans un clavier d'ordinateur, et pourtant il n'y a pas de niveau plus simple. L'étape suivante nous emmène au niveau du logiciel utilisé pour concevoir la logique de la puce, et ce logiciel lui-même a un niveau de complexité qui nécessite de revenir au début de la boucle.

Aujourd'hui, les ordinateurs sont si complexes qu'ils ne peuvent être conçus et fabriqués avec des ordinateurs un peu moins complexes. À leur tour, les ordinateurs utilisés pour la conception et la fabrication sont si complexes qu'ils ne peuvent eux-mêmes être conçus et fabriqués avec des ordinateurs un peu moins complexes. Il faudrait ainsi passer par de nombreuses boucles de tels revenir à un niveau qui pourrait être reconstruit à partir de zéro.

Une fois que vous commencez à comprendre comment nos appareils modernes fonctionnent et comment ils ont été créés, il est impossible de ne pas être pris de vertige devant l'immensité de tout ce qui est en jeu, et de ne pas être en admiration devant tout ce qui fonctionne, alors que la loi de Murphy dit qu'ils ne devraient tout simplement pas fonctionner.

Pour les non-technophiles, tout cela est une boîte noire. C'est un grand succès de la technologie : tous les niveaux de complexité sont entièrement cachés et les gens peuvent les utiliser sans même savoir qu'ils existent. C'est la raison pour laquelle beaucoup de gens peuvent trouver des ordinateurs très frustrants dans leur utilisation : il y a tellement de choses qui peuvent mal se passer que certaines se passeront inévitablement, mais la complexité est tellement immense qu'il est impossible pour la majorité des utilisateurs d'être en mesure de faire quelque chose face à une erreur.

C'est aussi pourquoi il est si compliqué pour les technophiles et les non-technophiles de communiquer entre eux : les technophiles en savent trop sur trop de niveaux et les les non-technophiles en connaissent trop peu sur quelques niveaux pour pouvoir établir une communication directe efficace. Le fossé est si large qu'il n'est même plus possible qu'une personne soit un intermédiaire entre ces deux groupes, et c'est par exemple pourquoi nous nous retrouvons avec ces techniques alambiquées de centres d'appels d'aide ou de S.A.V et de leurs multiples niveaux. Sans ces structures de soutien profondes, vous vous retrouvez avec la situation frustrante que nous voyons lorsque les utilisateurs finaux ont accès à une base de données de bugs directement utilisée par les ingénieurs : ni les utilisateurs finaux, ni les ingénieurs obtiennent l'information dont ils ont besoin pour atteindre leurs objectifs.

C'est pourquoi la presse grand public et l'utilisateur moyen a tant parlé de la mort de Steve Jobs et en comparaison tellement peu de celle de Dennis Ritchie : l'influence de Steve était sur une couche que la plupart des gens pourraient voir, tandis que celle de Dennis était beaucoup plus cachée. D'un côté, je peux imaginer comment serait le monde de l'informatique sans le travail que que Jobs fit et les gens qu'il inspira : probablement un peu moins brillant, un peu plus beige, un peu plus carré. Au fond, cependant, nos appareils fonctionneraient toujours de la même façon et feraient toujours les mêmes choses. De l'autre côté, je ne peux littéralement pas imaginer comment le monde de l'informatique serait sans le travail qu'effectua Ritchie et les
gens qu'il inspira. Au milieu des années 80, l'influence de Ritchie avait pris le desssus, et même avant cela il restait vraiment peu de chose du monde pré-Ritchie.

Pour finir, et c'est très important, c'est pour cette raison que notre système de brevets ne fonctionne pas : la technologie a tellement fait le travail incroyable de cacher sa complexité que les personnes régulant et faisant fonctionner le système de brevets sont tout juste conscients de la complexité de ce qu'ils régulent et font fonctionner. C'est l'exemple ultime du problème connu de « la couleur de l'abri à vélos » : tout comme les les discussions proverbiales à la mairie au sujet d'une centrale nucléaire finissent par se porter sur la couleur de la peinture pour la remise à vélos de la centrale, les discussions de brevets sur les systèmes informatiques modernes finissent par porter sur la taille des écrans ou l'organisation des icônes, car dans les deux cas ils sont le seul aspect que les personnes impliquées dans la discussion sont capables de discuter, même si elles ne sont pas pertinentes à la fonction effective de l'ensemble du système en cours de discussion.


Qwerty
Gravatar @tcit
Oh, cool.
Corrige juste mon pseudo, ça évidera d'égarer les gens. :)

Sinon, pour la traduction, j'ai eu en effet quelques soucis, surtout avec Font hinting et Font rasterization qui ne semblent pas avoir de traduction française. Du coup, s'il y a des gens qualifiés, qu'ils se manifestent et me ridiculisent !
Gravatar @qwerty
Oups, OK ;)
Le site fait de la modération a priori : votre commentaire apparaîtra après validation.