Je suis abonné à The Daily WTF (“What The Fuck?” étant une expression d’interrogation et de surprise ébahie devant un problème contrariant), site répertoriant périodiquement un grand nombre d’abominations informatiques rencontrées dans la vie réelle, des messages d’erreur absconts et amusants aux tragiques sites bancaires développés par des débutants autodidactes qui réinventent la roue, mais carrée.

Une livraison de février attirait l’attention sur un script de Solaris (/bin/true), dont la seule utilité est de renvoyer la valeur vraie pour indiquer qu’il s’est exécuté correctement. Il y a aussi un /bin/false. Laissons de côté l’hypothétique utilité (je suis preneur d’exemples pour ma culture). Le commentateur avait été horrifié par le copyright, et le numéro de version 1.6 (!). Le fichier faisait plus de 300 octets de commentaires (aucun code exécutable, la fin du fichier menant à une sortie avec un code de succès).

Et sous mes OS favoris ?

  • Sur Mac OS :

$ ll /usr/bin/true
-r-xr-xr-x   1 root  wheel  13580 Mar 21  2005 /usr/bin/true

$ file /usr/bin/true
/usr/bin/true: Mach-O executable ppc (oui, j’ai un vieux Mac).

  • Sous Linux Debian Etch :

$ ll /bin/true
-rwxr-xr-x 1 root root 11680 2007-01-30 19:51 /bin/true

Soit de 11 à 13 ko pour... rien ! Ou plutôt, juste une valeur true, soit un bit d’information. Il a existé des ordinateurs qui avec beaucoup moins de kilooctets de mémoire ont calculé des choses bien plus complexes (genre tables balistiques ou calculs scientifiques pour concevoir une bombe A ou H, ou quoi que ce soit qu’un ordinateur devait faire en 1945).

Dans les deux cas, on n’a pas de script comme l’exemple du WTF sous Solaris, mais des exécutables complets. Que contiennent-ils ? Je n’ai pas pris la peine de charger le code source mais j’ai juste fait un strings sur la version Linux à la recherche des chaînes incluses, et au milieu d’un kilooctet et demi de texte je trouve :

Jim Meyering
5.97
GNU coreutils
write error

Written by %s.
Written by %s and %s.
Written by %s, %s, and %s.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

Enfoncé, Solaris et sa version 1.6 ! GNU est déjà à la 5.97.

Bon, je veux bien que true ne soit que l’un des nombreux utilitaires de coreutils, d’où le numéro, et que par défaut n’importe quel exécutable doit chez GNU répondre à divers critères, dont répondre aux paramètres --help et --version, et que de toute façon tout cela n’a aucune importance vu que le moindre shell (même dash) possède en réalité la commande true en interne, qui ne renvoie rien (et donc cet exécutable est en plus inutile en plus d’être boursouflé !).

Si un bit occupe 11 à 13 ko sur tous les Unix du monde, quel est l’ordre de grandeur du gaspillage de l’informatique au niveau mondial ? Quiconque a utilisé Vista, BO XI... sait que les marges de progression sont encore énormes, même si la loi de Moore devenait caduque demain.