L'éminent informaticien Leslie Lampport, lauréat du prix Turing 2013, s'exprimant lors du dialogue organisé conjointement avec le SMU-Global Young Scientists Summit 2020. Crédit :Rebecca Tan
Avez-vous déjà suivi une recette pour faire du pain? Si tu as, toutes nos félicitations; vous avez exécuté un algorithme. Les algorithmes qui nous suivent sur Internet pour suggérer des articles qui pourraient nous plaire, et ceux qui contrôlent ce qui apparaît dans nos flux Facebook peuvent parfois sembler mystérieux et étranges. Encore, un algorithme est simplement un ensemble d'instructions à compléter dans une séquence spécifiée, que ce soit par des boulangers humains ou des programmes informatiques.
La différence, cependant, réside dans la façon dont l'algorithme est exprimé. Les recettes sont écrites en anglais ou dans d'autres langues parlées tandis que les programmes informatiques sont écrits en langages de programmation ou en code. Selon Leslie Lampport, lauréat du prix Turing 2013, penser mathématiquement peut être une étape utile pour spécifier l'algorithme des programmes informatiques, car cela peut aider les programmeurs à clarifier leur pensée et à rendre les programmes plus efficaces.
« La plupart des programmeurs commencent à écrire du code ; ils ne savent même pas quel est l'algorithme. C'est comme commencer à construire sans plan, " a déclaré le Dr Lampport, s'exprimant lors d'un dialogue exclusif à la Singapore Management University (SMU) le 14 janvier 2020, organisé conjointement avec le SMU-Global Young Scientists Summit 2020.
« Et le résultat ? Le programme est difficile à déboguer et inefficace car vous essaieriez d'optimiser au niveau du code plutôt qu'au niveau de l'algorithme. Nous devrions faire ce que font presque tous les autres domaines de la science et de l'ingénierie :d'abord décrire le problème avec maths à la place."
Pourquoi les mathématiques sont meilleures que le code
En utilisant l'algorithme d'Euclide comme exemple, Le Dr Lamport a expliqué à l'auditoire comment un algorithme peut être exprimé avec précision et simplicité en mathématiques. Décrit par le mathématicien grec Euclide en 300 av. L'algorithme d'Euclide est une méthode pour identifier le plus grand commun diviseur (GCD) de deux nombres, C'est, le plus grand nombre qui peut diviser les deux nombres sans laisser de reste. Par exemple, le PGCD des nombres 15 et 12 est 3.
La méthode est simple :soustraire le plus petit nombre du plus grand nombre, puis répétez cette opération jusqu'à ce que les deux nombres soient identiques ; le nombre résultant est le PGCD. Toute la procédure peut être décrite dans une seule formule mathématique, dit le Dr Lampport, qui est reconnu pour développer le format de fichier LaTex largement utilisé, en plus de son travail de pionnier sur les systèmes informatiques distribués.
En revanche, écrire l'algorithme d'Euclide en code est plus long et fastidieux, et donc plus difficile à déboguer s'il ne fonctionne pas correctement. "Le programme d'Euclide devrait contenir beaucoup de détails de niveau inférieur, comme ce que vous devriez faire si l'un des nombres est inférieur ou égal à zéro, " a déclaré le Dr Lamport. " Vous devriez décider que si vous écrivez un programme informatique, mais ce n'est pas le problème de l'algorithme. "
Dans quelle mesure l'utilisation des mathématiques au lieu du code serait-elle plus efficace ? Lorsque les ingénieurs ont utilisé TLA+, un langage de spécification formelle de haut niveau basé sur les mathématiques développé par le Dr Lamport pour modéliser, documenter et vérifier les systèmes informatiques concurrents, ils ont pu réduire considérablement la taille d'un système d'exploitation utilisé à l'origine pour contrôler certaines expériences sur le vaisseau spatial Rosetta. "L'un des résultats de la spécification de la logique logicielle avec TLA+ était que la taille du code a pu être réduite à environ dix fois moins que l'original, " a déclaré le Dr Lamport. " Vous ne réduisez pas la taille du code de dix fois par un meilleur codage; vous le faites par une architecture plus propre, ce qui n'est qu'un autre mot pour un meilleur algorithme."
En plus d'être plus efficace, adopter une approche mathématique a l'avantage supplémentaire de faciliter le débogage. Les ingénieurs d'Amazon Web Services et de Microsoft Azure utilisent TLA+ pour leurs services cloud, Le Dr Lampport a dit :et grâce à cela, ils ont trouvé des bogues dans la conception de leurs systèmes qui ne pouvaient être trouvés par aucune autre technique.
Se familiariser avec les mathématiques
Bien que les mathématiques soient à la fois puissantes et élégantes lorsqu'il s'agit de décrire des algorithmes, de nombreuses personnes, y compris des programmeurs informatiques et des ingénieurs, en sont intimidées et hésitent à l'utiliser. "Certains étudiants nous ont demandé quand peuvent-ils arrêter de faire et de réviser les mathématiques et commencer la programmation du logiciel, " a déclaré le professeur Steven Miller, Vice Provost (Recherche) à SMU et anciennement Doyen Fondateur de l'École des Systèmes d'Information.
Le Dr Lamport croit que s'habituer à « parler » en mathématiques est une question d'exposition. « Pourquoi « deux plus deux égalent quatre » est-il considéré comme simple, mais une opération logique comme « un élément de » est difficile à comprendre pour la plupart des gens ? Des opérations logiques telles que « élément de » signifient simplement que quelque chose fait partie d'un tas d'autres choses Ce concept ne vous oblige pas à apprendre quelque chose de compliqué comme compter, comme compter est en fait assez compliqué, " il a dit.
« Pourquoi « élément de » devrait-il sembler effrayant alors que « plus » semble si facile ? C'est juste une question de ne pas être familier avec, et ce n'est pas entièrement de votre faute - les mathématiciens sont terribles à l'enseigner."
Pour le Dr Lampport, maîtriser les mathématiques est la première étape, mais pour que la pensée mathématique ait vraiment un impact sur la façon dont les algorithmes sont écrits, il doit changer notre façon de penser. "Je tiens à souligner que les mathématiques ne résolvent pas le problème pour vous ; vous devez résoudre le problème, " dit-il. " Penser mathématiquement vous aidera à résoudre le problème; et les mathématiques aident à s'assurer que la solution était la bonne."