code

Voici pourquoi les programmeurs ont besoin de plus de mathématique

Leslie Lamport, un informaticien américain dont les travaux permettent aujourd’hui aux ordinateurs modernes de se coordonner efficacement entre eux, a déclaré récemment que les programmeurs devraient se donner davantage aux mathématiques. Lors d’une récente interview, Leslie Lamport a parlé de l’importance de programmer plutôt que de coder, de la manière dont il a développé les systèmes distribués, ainsi que de la façon dont il fait des mathématiques une discipline clé de la programmation. « Si vous voulez vraiment faire les choses correctement, vous devez écrire votre algorithme dans les termes des mathématiques », a-t-il déclaré.

Leslie Lamport, 81 ans, est un chercheur américain en informatique. Il a obtenu le prix Turing 2013 (considéré comme le prix Nobel de l’informatique, pour ses travaux sur les systèmes distribués) et est le concepteur du logiciel libre de composition de documents LaTeX. Son nom n’est pas connu de tous, mais ses pairs s’accordent à dire que les travaux de Lamport ont rendu possible l’infrastructure cloud de Google et Amazon. Il a également attiré l’attention sur une poignée de problèmes, leur donnant des noms distinctifs comme “l’algorithme de la boulangerie” et “le problème des généraux byzantins”.

Ses travaux dans le domaine de l’informatique ont porté sur les mathématiques, dans le domaine des algorithmes et des démonstrations, ce qui serait quelque peu différent de la programmation, qui à son tour n’aurait pas grand-chose à voir avec le fait de “découper du code” dans un langage quelconque. Pour lui, ce sont des mondes à part, ce qu’il résume en une phrase : « les gens confondent la programmation et le codage. En fait, le découpage du code est pour la programmation ce que la dactylographie est pour la connaissance de l’écriture d’un roman ». Lamport est inhabituellement attentif à la façon dont les gens utilisent et pensent aux logiciels.

Leslie Lamport a révolutionné la façon dont les ordinateurs se parlent entre eux. Il travaille maintenant sur la façon dont les ingénieurs parlent à leurs machines. Dans une interview cette semaine, Lamport est revenu sur quelques-uns de ses travaux, comme le langage de spécification TLA+ (développé par Lamport au cours des dernières décennies, le langage de spécification TLA+ [Temporal Logic of Actions] permet aux ingénieurs de décrire les objectifs d’un programme de manière précise et mathématique), et a également cité quelques-unes des raisons pour lesquelles il accorde une place de choix aux mathématiques dans la programmation.

À propos des mathématiques, Lamport a déclaré qu’il pensait que les programmeurs passent plus de temps à écrire du code qu’à y réfléchir. « L’importance de réfléchir et d’écrire avant de coder doit être enseignée dans les cours d’informatique de premier cycle et elle ne l’est pas. Et la raison en est qu’il n’y a aucune communication entre les personnes qui enseignent la programmation et celles qui enseignent la vérification des programmes. D’après ce que j’ai vu, la faute se situe des deux côtés de ce fossé. Les personnes qui enseignent la programmation ne connaissent pas la vérification qu’ils doivent connaître », a-t-il déclaré.

« Les personnes qui enseignent la vérification ne comprennent pas comment elle doit être appliquée et utilisée en pratique. Tant que ce fossé ne sera pas comblé, TLA+ ne trouvera pas un grand nombre d’utilisateurs. J’espère pouvoir au moins faire comprendre aux personnes qui enseignent la programmation concurrente qu’elles en ont besoin. Alors il y a peut-être un peu d’espoir », a-t-il ajouté. Lamport a déclaré qu’il était insatisfait de la manière dont l’informatique est enseignée de nos jours. Selon lui, les programmes d’enseignement ne mettent pas assez l’accent sur la pensée mathématique. Une situation que le chercheur américain déplore.

« Si vous voulez vraiment faire les choses correctement, vous devez écrire votre algorithme dans les termes des mathématiques », a déclaré Lamport. Alors, comment structureriez-vous un programme de premier cycle ? Lamport a répondu : « je ne suis pas un éducateur, donc je ne sais pas comment leur enseigner. Mais je sais ce que les gens devraient avoir appris. Ils ne devraient pas avoir peur des mathématiques. Il s’agit de mathématiques simples pour lesquelles ils ont probablement suivi un cours, mais ils ne savent pas comment les utiliser. Ils ne savent pas à quoi ça sert. Ils en apprennent assez pour passer l’examen, puis ils l’oublient ».

En référence à la pensée populaire selon laquelle “il y aurait de la beauté dans les mathématiques”, l’on a demandé à Lamport s’il voyait également de la beauté dans les algorithmes. À ce propos, l’informaticien a répondu : « je ne pense pas en matière d’esthétique. Je ressens probablement le même genre de sentiments que les autres, mais j’utilise simplement des mots différents pour les exprimer. Je ne dirais pas qu’un algorithme est beau. Mais la simplicité est une chose à laquelle je tiens beaucoup ». Lamport n’est pas le premier à établir une relation étroite entre la programmation et les mathématiques.

Dans le système universitaire, l’informatique est classée dans les sciences “dures”, par opposition aux sciences sociales et humaines. Par conséquent, l’enseignement des mathématiques et la rigueur qu’elles amènent paraissent donc indispensables dans la filière informatique. « Les mathématiques sont l’outil [incontournable] pour la résolution des problèmes spécialisés », écrivait en 2019 Walter Schulze, un ingénieur de Facebook. Il avait illustré ces propos avec une liste d’au moins trois domaines hors de portée de tiers sans un niveau conséquent en mathématiques : la programmation des jeux vidéos, l’intelligence artificielle et le classement de pages Web.

« En effet, la programmation graphique dans les jeux et les films nécessite des connaissances en physique, mais comme la physique exacte peut être trop coûteuse à simuler correctement, nous utilisons généralement des méthodes numériques issues des mathématiques. Par exemple, l’intégration par la méthode de Verlet pour simuler les poupées de chiffon », précise-t-il. Dans un billet de blogue à l’époque, Walter Schulze a tout simplement déclaré qu’il regrettait d’avoir négligé les mathématiques à l’université. Pourtant, de nombreuses personnes travaillant dans la filière informatique déclarent n’avoir jamais vraiment eu besoin des mathématiques dans leur travail.

Pour rappel, en raison de la pénurie de talents en informatique, certaines personnes ont quitté des emplois sans lien avec l’informatique (restaurateur, chauffeur de taxi, enseignant du primaire, etc.) pour se reconvertir en développeurs au cours de ces dernières années. En outre, une étude publiée en juin 2020 rapportait que des scanners cérébraux ont révélé que le codage utilise les mêmes régions que celles liées au traitement du langage naturel.

L’étude suggère en effet que la programmation requiert plus d’aptitudes en langues qu’en mathématiques. Il semblerait donc que la programmation soit divisée en deux catégories d’emplois : l’une (IA, systèmes distribués, jeux vidéo, etc.) nécessitant une forte connaissance des mathématiques, tandis que l’autre (les développeurs de solutions simples) ne requiert qu’une connaissance partielle.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *