Les perles de l'informatique

Les informaticiens, bien qu'intelligents, logiques et rigoureux, ne sont pas eux non plus épargné par ce mal qui sévit depuis toujours et fait des ravages: la connerie.

Le 4 juin 1996, le premier vol de la fusée Ariane se termine après 37 secondes par un crash qui a coûté 370 millions de dollars.

La cause de ce crash? La conversion d'un nombre de 64 bits en 16 bits provoque un dépassement de capacité, et donc une erreur dans les données qui guident le vole de la fusée.
Le système est programmé en ADA et l'on retrouve là un des vices des langages de programmation qui semblent avoir été conçus pour favoriser les erreurs.

Par exemple, qui a eu un jour l'idée saugrenue d'intégrer l'assignement dans une condition, dans le langage C (comme connerie), idée reprise dans les langages dérivés.
Combien de fois un programmeur aura par mégarde écrit:

if(x = 0)

ce qui provoque la mise à zéro de x alors qu'il voulait comparer x avec zéro, ce qui s'écrit en fait ainsi:

if(x == 0)

Voici quelques exemples d'autres conneries qui peuvent prospérer dans l'industrie.

Azerty

Le clavier Azerty est le standard absolu en informatique (il est différent sur les mobiles). Ce clavier n'a jamais été conçu pour être optimal, pour faciliter la frappe. Au contraire il a été conçu pour les premières machines à taper, pour ralentir la frappe afin que ces machines rudimentaire ne s'emmêlent pas les tiges.

Azerty est resté standard sur les machines à écrire et a été brillamment adopté par les fabricants d'ordinateurs bien qu'une alternative existe, le Dvorak, conçu spécialement pour faciliter l'écriture... Plus fort encore, les anglo-saxons ont adopté Querty qui répond exactement au même principe de ralentissement de la frappe!

Répertoire et téléportation

Lorsque que vous entrez dans un couloir, que vous allez jusqu'à une porte, que vous entrez dans la salle et que vous en sortez, vous vous retrouvez devant la porte. Logique, non?

En informatique, c'est différent. Vous êtes dans un répertoire qui est une sorte de couloir avec une liste de portes, ce sont les fichiers ou les sous-répertoires. Et quand vous sortez d'un sous-répertoire vous vous retrouvez au début du répertoire parent.
En informatique, quand vous sortez d'une salle vous vous retrouvez à l'entrée du couloir. A part le gestionnaire de fichiers Advanced Explorer, il n'y a pas de logiciel qui laisse le curseur sur un répertoire quand on en sort, tous les logiciels vous ramènent en début de répertoire!

Et quand vous cherchez un fichier dans plusieurs sous-répertoire... Imaginez-vous dans un couloir, vous devez ouvrir les portes l'une après l'autre pour voir dans les salles, mais chaque fois que vous refermez la porte vous vous retrouvez à l'entrée du couloir. Enervant, non?

Le langage C

Ce langage est à la programmation ce que Azerty est au clavier. Il a été délibéremment conçu à une époque pour des ordinateurs qui avaient une minuscule mémoire de 16 méga-octets.
Pour réduire la taille du code, tout un tas de symboles ont été mis à contribution: { ] ( ; etc.
Ce type de notation favorise les confusions, les erreurs impossibles à retrouver parceque le code est illisible.
Les programmeurs modernes disposent de grandes quantité de mémoire et d'outils d'auto-complétion et autres qui réduisent la frappe, mais rien n'y fait, les langages continuent d'utiliser la syntaxe très économe en mémoire du C.
Et pire encore, quand on crée un nouveau langage, elle reprend cette syntaxe débile sous prétexte que les programmeurs y sont habitués: cela a été le cas de Java, CSharp, JavaScript, JavaFX Script.... Et d'autres à venir.

Ne jamais changer les habitudes, même si elles deviennent inutiles ou nuisibles, c'est bien le propre de la connerie, c'est pourquoi celle-ci sévit si allégremment dans un domaine où l'on a besoin de standards.

Si vous lisez l'anglais, vous apprécierez cet article, sur le programme Hello World selon les niveaux de programmation!

Ascenceur pour l'échafaud

L'ascenceur, c'est cette barre de défilement à droite avec un bouton qui permet de faire défiler le contenu de la fenêtre.
On l'utilise notamment pour les listes de fichiers dans un répertoire. Mais qui a eu l'idée brillante de faire un bouton d'ascenseur dont la taille se réduit en fonction de la hauteur du contenu de la fenêtre? Lorsqu'il y a 1000 fichiers dans un répertoire, le bouton a l'épaisseur d'un pixel et il faut bien viser pour arriver à poser la souris dessus!
Une taille minimale aurait été la bienvenue, mais apparemment le génie de l'inventeur de la chose en aurait été entâché.

Window's scrolling behaviour critique le fonctionnement de la barre de défilement: pourquoi une zone sensible autour de l'ascenceur? (Anglais).

La valse des onglets

L'avantage d'avoir des onglets pour chaque nouveau fichier ou chaque page Web que l'on charge est d'éviter de les recharger quand on passe d'un document à un autre. Et si on a trois barres d'onglets sur son logiciel de développement, on image le temps économisé en recherche de fichiers dans les répertoires...

Un informaticien fumeur de haschich ou de moquette à eu l'idée géniale un jour de rendre les barres d'onglets dynamiques: quand on clique sur un onglet, la barre se déplace et vient en bas tandis que les autres remontent. A cela on ajoute le fait que l'ouverture ou la fermeture d'un fichier crée un décalage dans la liste des onglets qui passent alors d'une barre à l'autre, on imagine le foutoir... et il devient plus difficile de retrouver un onglet que le fichier lui-même dans les répertoires...

Un peu comme si dans un bureau, chaque fois qu'on prenait un dossier dans un casier, les casiers se mélangeaient et qu'il fallait chercher ensuite le casier de chaque dossier.

Si seulement les géniaux crétins qui inventent les interfaces les utilisaient eux-mêmes de temps en temps, on serait vengé.

Aller plus loin...

Et maintenant, il ne reste plus qu'à installer un système de gestion de contenu comme Joomla ou Drupal, censés épargner au webmaster les tâches de gestion, pour comprendre jusqu'où peut aller le génie informatique quand on veut vraiment se foutre des utilisateurs.