IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Un expert en informatique déclare que les programmeurs ont besoin de plus de mathématiques,
Ajoutant que les écoles devraient repenser la façon dont elles enseignent l'informatique

Le , par Bill Fassinou

1.6KPARTAGES

28  1 
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.

Et vous ?

Quel est votre avis sur le sujet ?
Que pensez-vous des déclarations de Lamport sur les mathématiques ?
Que pensez-vous de l'importance et du rôle des mathématiques dans la programmation ?
Pensez-vous qu'une forte connaissance des mathématiques est nécessaire pour être un bon programmeur ?
Pensez-vous que la programmation comporte des tâches nécessitant une forte connaissance des mathématiques et d'autres non ?

Voir aussi

Plus il y a d'égalité entre les sexes, moins il y a de femmes dans les STIM (la science, la technologie, l'ingénierie et les mathématiques), selon les résultats d'une étude

« Programmer c'est appliquer des concepts mathématiques », d'après un ingénieur chez Facebook, qui regrette d'avoir négligé les maths à l'université

Des scanners cérébraux révèlent que le codage use des mêmes régions que celles liées au traitement du langage naturel, suggérant que la programmation requiert plus d'aptitudes en langues qu'en maths

Faut-il être bon en maths pour être un bon développeur ? Quelle place ont les maths dans votre parcours ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de WhiteCrow
Membre expérimenté https://www.developpez.com
Le 21/05/2022 à 9:43
Bonjour,
c'est dingue comme les esprits se focalisent sur le terme «math» dès qu'il apparaît, sans parler de la terreur qui l'accompagne (cf 2:11). Pourtant Leslie Lamport (qui de mon sens est plus qu'un «expert», mais passons), propose des notions simples qui sembleront évidentes à tous ici. Dans une première partie il dit :

  1. «les gens confondent programmer et coder» (1:17)
  2. «si on apprend à programmer en apprenant à coder, cela n'a pas beaucoup de sens» (1:47)


Comment ne pas être d'accord avec ses propos, surtout si l'on écume les forums de programmation (et pas de codage) ?
Combien de fois rencontre-t-on des questions du genre : «comment je fais [X] en [Y] ?» (snowclone où l'on pourra remplacer X par n'importe quelle demande de base et Y par n'importe quel langage), alors que les vraies questions qu'un apprenant devrait se poser sont «comment je fais [X] ?» puis «comment je vais implémenter cette solution en [Y] ?»
De plus, bien souvent on a aussi droit aux «J'ai fait [X] en [Y], maintenant comment je peux optimiser tout ça ?» et avec des explications plus poussées (parce qu'il faut aussi tirer les vers du nez trop souvent) on se rend compte qu'il faudrait refactorer en profondeur … ce qui n'est plus ou pas possible etc.
On n'a pas inventé l'ampoule en optimisant la bougie …

Il explique que de son point de vue sa formation en math lui a permis de prendre le recul nécessaire pour tout ce qu'il a fait par la suite. Cela s'explique car L. Lamport est plus qu'un «expert», c'est une personne qui a fondé l'informatique moderne telle que nous la connaissons actuellement. Il ne savais pas qu'il était informaticien car «être informaticien» n'existait pas à cette époque. C'est aussi ce que déclarait Tony Hoare (le Hoare de quicksort) par exemple, ou même Knuth.
C'est de cette époque (début 50 jusqu'à fin 70) que nous viennent tous les grands paradigmes de programmation (et pas de codage …) par exemple.

Dans la seconde partie il parle de ce qui lui a permis d'obtenir le prix Turing … là ça tient plus de l'interview que de l'expression d'une opinion.
15  0 
Avatar de jpouly
Membre confirmé https://www.developpez.com
Le 21/05/2022 à 12:15
Pour être clair sur le sujet, et à l'époque lointaine ou j'étais étudiant, il y avait beaucoup de mathématiques dans les cursus scolaires.

A titre d'exemple, j'ai une maîtrise en informatique et mathématiques appliqués. Ce qui pose le sujet.

Et après 20 ans de dev, à quoi ça m'a servit : et bien, pas à grand chose.

Pour un développeur, la logique, avec la rigueur, est ce qu'il y a de plus important. Et la logique va au delà du code. Dans les spécifications par exemple

Pour répondre à l'article, les anglo-saxons ont une autre approche de l'apprentissage, moins théorique et plus pratique.

Et je crois que c'est là le problème en fait.

Je pense que ce que constate Leslie, c'est le manque de connaissance en mathématique des développeurs américains, car ils ne doivent pas beaucoup en faire dans leurs cursus.
Et malgré tout, les mathématiques apportent de la rigueur et de la logique. Pile ce qu'il faut pour bien développer .
13  0 
Avatar de ijk-ref
Membre éclairé https://www.developpez.com
Le 21/05/2022 à 15:13
Citation Envoyé par defZero Voir le message
(...)
D'ailleurs le M. le dit lui même dans son exemple sur la 3D, une physique juste au niveau mathématique et beaucoup trop couteuse à calculer, donc ont fait des approximations.
De fait pour apprendre une méthode approximative, ont n'a pas forcément besoin d'un Doctorat en Mathématique Appliqué.
L'approximation de fonction ce n'est PAS faire des math approximativement !

Approximer un modèle physique complexe, C'EST DES MATHS PURS ! Il faut un très bon bagage mathématique pour s'avoir le faire correctement.

Evidement comme t'essaie de le dire, pas besoin d'un doctorat en math pour uniquement utiliser une méthode toute faite
12  0 
Avatar de tbc92
Rédacteur/Modérateur https://www.developpez.com
Le 21/05/2022 à 12:15
Si on oppose les matheux d'un côté et les informaticiens de l'autre, c'est sûr, on va dire que les informaticiens sont plus doués en informatique que les autres.

L'article ne cherche pas à opposer 2 groupes. Il dit en quelque sorte que 'qui peut le plus peut le moins' , il dit qu'un type qui a un niveau 'avancé' dans 2 domaines a plus de potentiel qu'un type qui a le même niveau 'avancé', mais dans un seul domaine.
10  1 
Avatar de SimonKenoby
Membre confirmé https://www.developpez.com
Le 21/05/2022 à 19:58
Je ne sais pas comment ça fonctionne ailleurs, mais moi personnellement en 1ere année a l'université j'avais beaucoup plus de cours de math et de physique que de programmation.

Analyse, algèbre et autres. Seulement 3 cours de programmations, un sur le C, un autre sur la complexité algorithmique, récursivité et ce genre de chose et le 3eme il me semble que c'était uniquement des projets pour mettre en pratique ce qu'on avait appris dans les deux autres.

Les années suivantes j'ai pas eu plus de cours de programmation, non plus, mais des cours d'optimisation (mathématique), d'algorithmique, et ce genre de chose.

Et au final je trouve ça totalement logique, parce qu'une fois qu'on sait programmer dans un langage c'est facile de passer a un autre, tandis qu'apprendre de nouveau concepts théorique c'est moins facile.

Et même si certains de ces cours ne me servent plus directement, leur enseignement s'avère toujours utile. Par exemple, même si personne ne code d'algo de tri lui même, je trouve qu'il est utile de savoir pourquoi on utilise quicksort plutôt que bubblesort.
9  0 
Avatar de WhiteCrow
Membre expérimenté https://www.developpez.com
Le 22/05/2022 à 0:11
@23JFK … «Une fonction récursive c'est mal car ça fait exploser la pile»

Comment te dire … utiliser la récursivité quand on programme c'est une chose, l'utiliser quand on code c'est une autre chose, et, comme le rappelle L. Lamport, malheureusement vous êtes bien trop nombreux à ne pas faire la différence.
Là où éventuellement je pourrais peut-être te rejoindre est qu'il ne faut pas l'utiliser juste pour l'utiliser. Il faut simplement l'utiliser là où elle est utile voire nécessaire. Personne ne l'utiliserait, hors apprentissage et exemple, pour un calcul de factorielle. Tout le monde a intérêt à l'utiliser quand on manipule des sdd récursives et elles sont nombreuses et utilisées partout.
Elles sont utiles et utilisées car elles rendent le code plus lisible et plus maintenable, sans compter que le code est plus facilement débugable et ne t'en déplaise vérifiable. Si tu n'en veux pas tu vas de toute façon utiliser une version «dérécursivée» et tu feras sans doute un moins bon job avec.
Maintenant si j'extrapole ce Lamport raconte, c'est que pour ce cas, le grand avantages est de penser bien avant le code comment on doit ou peut faire. Si tu n'as jamais fait ça tu n'y arriveras pas et tu resteras enfermé dans un mode de pensée qui ne te permettra pas d'avancer. Tu ne découvriras jamais l'approche de la programmation dynamique par exemple.

Il faut arrêter de penser immédiatement que le code qui implémente un programme sera traduit mot à mot par le compilo … une récursivité terminale est éliminable facilement et le sera par tout compilo moderne … y compris pour la factorielle si elle est bien codée.

Quant aux «algorithmes mathématiques inutilisables», pense simplement à un quicksort, un A*, un LCS … parce que oui, l'algo c'est des math et les algos servent aussi à produire du code efficace.
T'es pas obligé d'être bon en math pour savoir coder, mais pour coder efficacement c'est un avantage indéniable, tout comme comprendre la récursivité est un atout.
9  0 
Avatar de tbc92
Rédacteur/Modérateur https://www.developpez.com
Le 21/05/2022 à 11:34
Descartes disait : L'intelligence est la chose la mieux répartie au monde, chacun pense qu'il en est suffisamment pourvu, même ceux qui sont les plus difficiles à satisfaire en tout, puisque c'est avec ce qu'ils ont qu'ils jugent.
8  0 
Avatar de tbc92
Rédacteur/Modérateur https://www.developpez.com
Le 21/05/2022 à 21:08
Citation : de très beaucoup concepts mathématiques donnent de la bonne grosse merde en programmation exemple: la récurrence.

Une phrase comme ça, c'est quasiment le plus bel argument pour dire : de meilleures connaissances en maths, ce serait quand même un plus pour les informaticiens.
7  1 
Avatar de WhiteCrow
Membre expérimenté https://www.developpez.com
Le 21/05/2022 à 12:02
Citation Envoyé par commandantFred Voir le message
[...]

Transposé aujourd'hui, c'est le gars qui ne touche pas une ligne de code et qui explique leur boulot aux développeurs. Humm...
C'est le gars qui a fait LaTex …
8  3 
Avatar de Mingolito
Membre extrêmement actif https://www.developpez.com
Le 21/05/2022 à 16:38
Il a pas tord mais il a pas raison non plus. On peut être développeur gestion ou web tout en étant nul en maths, il faut bien vivre

Par contre si tu veux programmer le logiciel d'un vaisseau spatial ou d'un avion il vaux mieux se débrouiller en maths, donc mon avis : ça dépend

Dans la réalité c'est le cas, tu peux être ingénieur Bac+5/+8 et très fort en maths et aller bosser chez Airbus, Dassault ou Arianespace, ou alors être nul en maths, avoir un Bac pro, faire un an de bootcamp Développement web et aller bosser dans une web agency ou dans une startup.
4  0