Algorithme ou programme, quelle différence ?
La confusion des mots trahit celle des idées que nous nous faisons de l'informatique, pointe Gérard Berry. Et cela n'est pas sans conséquence sur notre compréhension de la notion de bug.
Par Gerard Berry
Dans les médias, on ne parle généralement que de données et d'algorithmes. Pourtant, les calculs ne sont pas faits par les algorithmes, mais par les programmes qui sont exécutés sur les ordinateurs.
Un algorithme est un objet abstrait définissant un calcul, exprimé en langage mathématique, et analysable mathématiquement. A l'inverse, un programme logiciel est un objet éminemment concret, souvent de grande taille. Il est écrit dans un langage de programmation, qui cherche à rendre plus humain les langages cryptiques des machines, mais reste à un niveau de détail très supérieur à celui d'un algorithme. De plus, un programme exprime rarement un seul algorithme : la plupart en emploient plusieurs, voire beaucoup.
Lire aussi :
Le cas de Parcoursup
Le microprocesseur étant d'une obéissance parfaite aux ordres qu'on lui donne, les bugs ne sont jamais des « pannes des programmes », mais des erreurs humaines de programmation. Détecter et corriger les bugs est très difficile en pratique, car le test ne permet que d'en trouver, pas de montrer qu'il n'y en a pas.
De plus, les trous de sécurité informatique viennent souvent de microbugs non fonctionnels introuvables par les tests habituels. Montrer l'absence de bugs est donc une priorité dès qu'un programme fait des choses importantes pour nous, comme de faire voler des avions ou rouler des voitures, mais c'est beaucoup plus dur que de montrer la correction théorique des algorithmes.
Heureusement, les relectures par les pairs, et maintenant les méthodes formelles des mathématiques, permettent dans de plus en plus de cas d'assurer un très haut niveau de qualité.
Un bon exemple est le logiciel national de Parcoursup, essentiel pour l'entrée des étudiants dans l'enseignement supérieur. D'une part, son algorithme et ses programmes ont été rendus publics pour être scrutés par qui le souhaite. D'autre part, et c'est une première, le ministère de l'Enseignement supérieur et de la Recherche démarre un projet de preuve formelle du programme par rapport à l'algorithme, en d'autres termes que le programme s'exécute conformément à l'algorithme. Voilà un exemple à suivre dans bien des domaines, publics ou privés.
Gérard Berry