Pour couper un peu à mon attente fébrile des résultats du premier round d'Innov'game (round de créativité, auquel il faut obtenir au moins 12/20 pour être qualifié pour le concours), je revois à fond mon C et la SDL, et à l'occasion je lis un peu, notamment l'article de Science & vie dont je viens vous parler ici.

Celui-ci évoque un sujet qui nous concerne forcément : les bugs. Vont-ils un jour disparaître, ou au contraire leur augmentation est-elle exponentielle et infinie ?

Comme vous pouvez le penser, l'article reste assez vague, usant principalement des images pour décrire le problème, mais reste néanmoins intéressant : il explique principalement qu'avec l'évolution technologique, les systèmes informatiques chargés de l'exploiter deviennent de plus en plus compliqués, alors que d'un autre côté, les développeurs restent toujours aussi idiots ("Sudo make me a sandwich", si c'est pas une blague à la c** ...), et les possibilités d'erreur humaine grandissant avec cette complexité d'une part, ainsi que les outils de débogage d'autre part sont aujourd'hui insuffisants pour garantir nos logiciels.

En effet, trois grandes voies sont exploitées pour vérifier du code aujourd'hui :

- La vérification humaine du code : forcément imparfaite, il faut que le vérificateur puisse avoir une vision d'ensemble du projet assez précise pour pouvoir parer à toute éventualité. Cependant, quand le projet atteint un million de lignes de code, c'est assez compliqué.

- La vérification par le test (humain ou logiciel) : même si elle permet de détecter ici aussi quelques bugs, il est impossible qu'elle réussisse à envisager toutes les possibilités dans des logiciels comme celui de l'Airbus A380.

- La vérification formelle : c'est la voie la plus prometteuse. Elle applique en quelque sorte des méthodes mathématiques à l'informatique : au lieu de tester le code pour certaines valeurs, elle le vérifiera sur l'intégralité des valeurs possibles. Cependant, il n'existe aucune théorie générale sur laquelle se fonde la programmation (comme le seraient les 5 postulats d'Euclide pour la géométrie, pour les connaisseurs), et les techniques élaborées à ce jour, si elles ont le mérite d'être les plus efficaces, ne sont toujours pas parfaites, mais restent particulièrement onéreuses.

Aujourd'hui, on ne sait donc pas encore détecter un bug. En tout cas, pas infailliblement, loin de là ; ce qui ouvre d'immenses horizons dans la recherche informatique. Surtout quand la complexité des différents systèmes informatiques prend une nouvelle dimension, puisqu'ils sont désormais reliés entre eux ... (Ce qui multiplie les possibilités de bug par ... plus que beaucoup, en tout cas)

Voilà, petit résumé de ce que nous apprenait l'article, qui reste cependant intéressant à lire, puisqu'il est très étayé d'exemples et entre plus dans les détails que cette petite synthèse. Et S&V offre de toute façon chaque mois pléthore d'articles intéressants :) .

(C'est quand même con d'empêcher la moitié de l'Amérique de téléphoner à cause d'une parenthèse oubliée

P-S : à lire dans Science & Vie n°1121, Février 2011, "L'informatique malade des lignes de code", noté en couverture "Bugs : pourquoi il y en a de plus en plus". Vous pouvez le retrouver en ce moment en kiosque. Merci à rhed de m'y avoir fait penser.