Echo à un Troll
Je lis de temps en temps la presse informatique, même si une bonne partie des publications dans ce domaine ne sont que des articles fades ou des comparatifs inutiles. J’ai essayé l’Ordinateur Individuel, Science et Vie Micro, PC Expert, Programmez!, Hacking School Magazine, et j’en passe, mais aucun ne m’a vraiment plu. Et il y a quelques mois, j’ai lu un article d’un certain JP Troll dans GNU/Linux Magazine : « Parce qu’il y en a marre » (qui est peut-être une chronique, je ne sais pas trop). L’article traite de la complexité des langages de programmation : l’auteur dénonce la sur-enchère technologique dans la conception des langages, qui nuit à leur efficacité et à celle des programmeurs qui les utilisent. Les nombreux concepts présents dans le C++, comme l’héritage multiple, l’héritage virtuel, la surcharge des opérateurs et les références, sont utiles dans l’absolu, mais au final ils dénaturent le langage de base et le rendent inutilement complexe. Et je suis bien d’accord avec lui.
Souvent, ces nouvelles technologies et ces nouvelles syntaxes sont mises en place pour simplifier la solution à un problème courant (par exemple, la gestion des erreurs, avec les exceptions). Le concept est bien pensé, a priori utile. Pourtant, ce n’est pas forcément bénéfique à long terme : on introduit du vocabulaire nouveau, donc un débutant aura plus de mal à maîtriser l’ensemble du langage, mais aussi des problèmes nouveaux, ou en tout cas des subtilités superflues. La plupart du temps, il existe une alternative à ces solutions clinquantes, qui est moins élégante mais qui a le mérite de n’utiliser que des concepts déjà définis (et donc plus facilement compréhensibles). Un code exclusivement écrit avec des instructions élémentaires (disons, un code en C) n’est pas forcément plus lourd à lire qu’un code à la syntaxe riche (comme en C++, en utilisant les technos les plus poussées). Avec un nombre restreint d’instructions, on peut rapidement connaître le langage sur le bout des doigts, et les syntaxes complexes deviendront plus naturelles à lire.
Finalement, le problème est : a-t-on besoin de transformer les langages pour les rendre toujours plus haut niveau ? On pourrait considérer que, les programmeurs écrivant des applications de plus en plus abstraites du matériel, les langages doivent évoluer avec eux. Je ne suis pas sûr que ce soit aussi simple. Enfin, n’ayant jamais vraiment participé à un projet de grande ampleur en tant que programmeur, je peux me tromper. Personnellement, l’expérience qui m’a le plus convaincu de l’absurdité d’une telle « course à l’abstraction » est la découverte des « design patterns », ou patrons de conception en bon français. Ce sont des méthodes pour résoudre des problèmes classiques en POO (Programmation Orientée Objet), qui ont été testées par de nombreux éminents gourous du code et donc considérées comme les bons principes de programmation. Ces patrons sont effectivement bien pensés, mais quand on les découvre on a tout de suite tendance à vouloir les caser partout, alors que ça ne sert pas à grand-chose, à part à garder son code à la mode.
Au bout du compte, on retombe sur un problème bien plus général : celui de l’évolution de l’informatique en général. Les machines sont toujours plus puissantes à des prix toujours plus compétitifs, mais en parallèle les systèmes d’exploitation (enfin, LE système d’exploitation) est toujours plus gourmand, sans être beaucoup plus efficace. Beaucoup diront que c’est un consensus entre les grands acteurs du secteur qui se liguent pour obliger le pauvre petit consommateur à acheter un ordinateur tous les 2 ans sans que ses besoins aient évolué. Pourquoi pas. Mais j’ose espérer qu’on puisse sortir de cette logique.
Un des symptômes de cette évolution exponentielle et gratuite qui m’impressionne le plus, c’est l’usure des ordinateurs. Je conçois très bien qu’un ordinateur puisse se dégrader de manière matérielle, mais l’usure des données et des logiciels qu’ils contient est assez curieuse : comme cette usure dépend exclusivement de la mémoire morte de l’ordinateur, dont on peut contrôler chaque bit, pourquoi ne pourrait-on pas inventer des logiciels inaltérables, ou en tout cas s’en approcher ? Le plus fort est que la mise au rebut d’un ordinateur vient dans la plupart des cas de l’usure logicielle plus que matérielle. Ceci dit, je comprends bien d’où vient ce vieillissement malsain et pourquoi il est difficile à éradiquer. La plus grosse partie vient peut-être de l’attitude de l’utilisateur vis-à-vis de sa machine : les gens qui savent entretenir un ordinateur correctement ne courent pas les rues. Le reste de la dégradation logicielle vient du fait que les systèmes d’exploitation ont toujours des mécanismes qui sont utiles dans l’absolu, mais qui contribuent à surcharger l’ordinateur. En tout cas, je trouve qu’il serait bien plus intéressant de développer une machine durable et propre qu’ajouter des GHz ou des To aux modèles actuels.
Pourtant, on pourrait penser que la conjoncture est propice à un changement de cap. Il y a quelques années déjà, une des lois fondatrices de l’évolution que je mentionne a été un peu amochée : il s’agit de la loi de Moore. Cette loi dit tout simplement que tous les 18 mois, le nombre de transistors des processeurs double. Elle suppose donc que la capacité de calcul des machines est exponentielle. Mais ces dernières années, à force d’ajouter toujours plus de transistors dans un espace toujours plus réduit, des effets parasites sont apparus. Pour carricaturer, ces effets sont à l’informatique ce que l’épuisement des ressources pétrolières est à l’industrie automobile. Finalement, le problème a été contourné en créant des processeurs à coeurs multiples. Autre évènement qui pourrait favoriser un changement de tendance : la sortie de Vista, qui a fait beaucoup de bruit, notament à cause de sa lenteur et des ressources matérielles nécessaires pour le faire tourner. Le fait que Microsoft conçoive un Windows Seven plus économe que son grand-frère Vista est quand-même une première.
Il existe déjà quelques initiatives intéressantes, comme le Linutop par exemple. Mais dans l’ensemble, la sphère de l’informatique reste très mauvaise élève sur les sujets de durée de vie, d’accessibilité, d’économie d’énergie, et tout ce qui n’est pas directement lié aux performances. Mais défendre un avis comme celui-là n’est pas toujours très bien vu : on est directement relié à des tendances politiques (l’écologie, ou même… la décroissance, brr) et surtout, on se détache du comportement technophile de base. Bienvenue du côté des réfractaires, des conservateurs qui déplorent les effets redoutables de toute cette technologie fourmilliante.