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 !

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

Le , par Patrick Ruiz

192PARTAGES

12  1 
Que se passe-t-il dans la tête des programmeurs lorsqu'ils sont lancés dans leur exercice de mise sur pied de logiciels ? En s’appuyant sur des techniques d’imagerie issues des neurosciences, il est possible de déterminer quelles zones du cerveau sont en fonctionnement pour des activités données. C’est l’approche qu’a adoptée une équipe de chercheurs allemands pour savoir lesquelles le sont lors de la lecture et de la compréhension de programmes informatiques. Résultat : les régions cérébrales les plus actives au moment de la réalisation de ces activités sont celles qui sont également pertinentes dans le traitement du langage naturel.

En 1980 déjà, les travaux du célèbre informaticien néerlandais Edsger Dijkstra l’avaient mis en avant : la compréhension du langage naturel joue un rôle central dans la programmation informatique. En d’autres termes, la filière (programmation informatique) fait plus appel à des qualités linguistiques qu’à d’autres, d’après ce qui ressort de cette publication de recherche.

« À notre surprise, nous n'avons observé aucune activité dans le sens du raisonnement mathématique ou logique, ce qui serait conforme à la perspective selon laquelle la programmation est un processus formel, logique et mathématique. Le résultat le plus frappant est une activation de certaines zones de l’hémisphère gauche du cerveau lors des activités de compréhension de programmes », indiquent les chercheurs.

L’équipe de chercheurs s’est appuyée sur la méthode de soustraction qui a fait ses preuves en neurosciences. Tout en étant exposés à un dispositif d’imagerie par résonance magnétique fonctionnelle, les sujets ont travaillé sur une première tâche qui consistait en la compréhension d’un extrait de code informatique. Après une courte période de repos, on leur a demandé de vérifier un extrait de code pour détecter de simples erreurs de syntaxe – une tâche de routine pour les travailleurs de la filière programmation informatique. La procédure a fait l’objet de plusieurs répétitions. Par la suite, les images de l'activité cérébrale pendant le traitement de la tâche de routine ont été soustraites de celles du test de compréhension. Ne restaient alors que les régions du cerveau utilisées en particulier dans le cadre de la compréhension des programmes.




Si l’étude retient l’attention, c’est parce qu’elle intervient dans un contexte global où l’on ne dissocie pas la programmation informatique des aptitudes nécessaires en maths pour être un acteur de la filière. Elle fait suite à une autre publication de recherche qui, pour sa part, dit : doué en apprentissage de langues donc doué en programmation informatique.

La série de conclusions de l’étude en question est le résultat d’une batterie de tests centrés autour du langage Python. Les chercheurs y ont soumis une trentaine d’adultes n’ayant jamais appris à coder, ce, pour évaluer leurs compétences cognitives sur divers axes (compétences mathématiques, linguistiques, attention, résolution de problèmes, mémoire...). Il en est ressorti que ceux qui ont appris Python le plus rapidement et avec une grande précision sont ceux qui possèdent un mélange de fortes capacités de résolution de problèmes et d’apprentissage de langues étrangères. Dans les chiffres de la part de compétences nécessaires à l’apprentissage du langage Python et publiés par l’équipe de chercheurs, les mathématiques expliquent seulement 2 % de la capacité d’apprentissage.


« C'est parce que l’écriture du code informatique implique également l'apprentissage d'une seconde langue, la capacité d'apprendre le vocabulaire et la grammaire de cette langue et la façon dont ils travaillent ensemble pour communiquer des idées et des intentions. La recherche décrite ici est motivée par un changement de paradigme conceptuel, à savoir que l'apprentissage des langages de programmation modernes ressemble à l'apprentissage d'une langue naturelle, comme le français ou le chinois, à l'âge adulte. De façon plus précise, nous soutenons que la recherche sur les bases neurocognitives de l'aptitude à la programmation a largement omis le fait que les langages de programmation informatique sont conçus pour ressembler à la structure de communication du programmeur (les langages humains) », précise cette équipe de recherche. Dans le cadre de cette étude, Python avait été choisi pour sa ressemblance avec la langue anglaise, ce qui peut expliquer les résultats obtenus.

Du coup, doué en apprentissages de langues donc doué en apprentissage de langages de programmation serait plus admissible au vu des contenus de la publication, mais il y a que les chercheurs généralisent leurs résultats à la programmation informatique au sens le plus large : « De nombreux obstacles à l'entrée dans la filière de la programmation informatique, partant des prérequis aux stéréotypes sur ce à quoi ressemble un bon programmeur, sont centrés sur l'idée que la programmation repose fortement sur les aptitudes en mathématiques, mais cette idée ne se dégage pas de nos données. »

Les conclusions mises en avant par ces équipes de recherche sont à confronter avec celles d’intervenants de la filière pour lesquels programmer c’est mettre en oeuvre des concepts algorithmiques pour la résolution de problèmes dans divers domaines. C’est de la capacité d’abstraction de l’intervenant à user d’outils mathématiques plus ou moins avancés pour proposer des solutions informatiques dont on parle ici. Dans le processus de l’implémentation de la solution, la connaissance d’une langue, en l’occurrence l’anglais, peut être d’une précieuse aide, notamment, pour la maîtrise d’outils comme les EDI.

Source : étude

Et vous ?

Quelle pertinence accordez-vous aux conclusions de cette étude ?
Les maths sont-elles inutiles ou centrales dans votre travail et votre parcours de travailleur de la filière programmation informatique ? Pourquoi ?
Faut-il être matheux pour être bon en programmation ?

Voir aussi :

Les professeurs des classes prépas alertent sur le faible niveau en sciences du bac S, une menace pour l'enseignement supérieur en informatique ?
Réforme du lycée : les maths ne sont-elles utiles que dans les domaines scientifiques et informatiques pour être reléguées au rang de spécialité ?
Que faire pour minimiser l'impact des interruptions sur l'activité de développement de logiciels ? Appliquer les méthodes Agile ?
Y a-t-il une corrélation entre diplôme et succès en tant que développeur de logiciels ? Un acteur de la sphère donne son avis
Pourquoi réécrire un projet en partant de zéro ? Parce que l'ancien code est un fatras ou qu'il est plus facile d'écrire que de lire un code ?
Que pensez-vous des formations intensives en programmation ? Sont-elles plus efficaces que les formations classiques en informatique ?

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

Avatar de scandinave
Membre éclairé https://www.developpez.com
Le 07/06/2020 à 12:34
Conclure qu'il suffirait d'être bon en langue ou en Math pour être informaticien serait une erreur. Le mec juste bon en langue, va peut-être apprendre tous les langages informatiques de la planète en un rien de temps, mais si il n'est pas capable de s'en servir pour conceptualiser et résoudre des problèmes cela ne servira à rien.

De la même manière, le math-eu qui ne vois l'outil informatique que comme un instrument permettant d'aller plus vite et qui va partir dans des délires d'abstraction que seul lui sera capable de comprendre, qui n'en aura rien à faire de savoir si le programme est bien structuré, testé, ou respect bien les normes, ne servira pas à grand chose non plus. Je vais sûrement me faire insulter pour ce que je vais dire, mais ce n'est pas pour rien que le monde scientifique utilise python. C'est un langage ne demandant pas un grand investissement pour avoir quelque chose de fonctionnel, même si l'on peut très bien faire de bonne chose avec.

Bref encore une fois la vérité se trouve certainement au milieu. C'est pour ça qu'avoir de bon informaticiens est compliqué et ne se résume pas à envoyer tous les gosses étudier les mathématiques à la chaîne et prendre les meilleurs en se disant qu'ils feront de parfait développeur. A l'inverse envoyer un tas de gens dans des formations de 6 mois pour apprendre la syntaxe du dernier langage à la mode, ne fera pas non plus d'eux des informaticiens.

A mon sens, ce qui ferait le plus grand bien à cette profession, serait qu'elle soit détachée du monde scientifique et rattaché à celui de l'artisanat. Le développement informatique demande un savoir faire et une expertise propre à l'artisan et ce n'est surtout pas une science exacte comme le sont les mathématiques. Avoir une filière accessible dès la fin de 3ème pour éviter que des gamins potentiellement doués échouent parce qu'ils doivent se taper un bac S spé math + un master en informatique/mathématique pour qu'ont les reconnaissent comme de vrai développeur serait une immense avancée. L'immense majorité des développeurs n'ont pas besoin au quotidien d'inventer de nouveau modèle mathématique, mais juste de les comprendre pour savoir les appliquer.
26  0 
Avatar de Neckara
Expert éminent sénior https://www.developpez.com
Le 07/06/2020 à 15:35
On demande à des personnes de lire du code et on observe que ça met en jeu des parties du cerveau dédié à la langue... no fucking shit...

Et si je leur demande de recopier du code, ça va mettre en jeu des zones psycho-moteur du cerveau (main/doigts/etc.)... ça veut dire que les athlètes sont de meilleurs codeurs .

La programmation, c'est pas uniquement lire (ou écrire) un code, mais c'est aussi réfléchir à la manière de le faire. De déterminer et comprendre le problème qu'on cherche à résoudre. De trouver une solution algorithmique satisfaisante à ce problème. De structurer le code proprement, d'implémenter l'algorithme de manière efficace. Et ça, ça va bien plus loin que du "simple" langage, de l'écriture ou de la lecture.

Les deux expériences qu'on nous a présentés sont construites de sorte à trouver le résultat qu'ils obtiennent.
Moi ce que j'aimerais savoir c'est ce qu'ils essayent de pousser derrière grâce à ces expériences biaisées.
13  1 
Avatar de Matthieu Vergne
Expert éminent https://www.developpez.com
Le 07/06/2020 à 14:09
Même avis que scandinave :
- un bon programmeur est un bon artisan : il doit savoir associé la technique (programme qui compile, tests qui passent, performances) et l'esthétique (nomenclature claire, code bien structuré).
- la maîtrise des maths est importante pour la partie technique
- la maîtrise des langues est importante pour la technique (apprentissage du langage) et esthétique (choix des noms pertinents)

La maîtrise des langues est donc importante, et cette étude fait bien de le souligner car il est vrai que beaucoup passent à côté de ça et ça se ressent sur la qualité de leur code. Mais ce n'est pas suffisant pour faire un bon dév.
9  1 
Avatar de air-dex
Membre expert https://www.developpez.com
Le 07/06/2020 à 16:49
Comme le dit scandinave la vérité est au milieu, à savoir un mélange de linguistique et de logique (et pas de maths, hormis bien évidemment les bases) :
  • Un langage informatique c'est d'abord l'implémentation de concepts et c'est là que se trouvent les similarités avec les langues. Que t'appelle ça une voiture, a car, un coche, ein wagen, un'automobile... ne change rien au fait que ça reste une bagnole avec 4 roues et un volant. C'est exactement pareil en programmation. Une boucle if ça reste une boucle if que ça soit en C, C++, Java, C#, Rust, Fortran, COBOL, PHP, Python, Go, Dart, Swift, JavaScript, Sass... Idem avec les boucles itératives, les variables, les fonctions, les classes, les énumérations, les pointeurs, les références, les 5 opérations mathématiques de base, les 4 opérateurs de comparaison de base, les 3 opérateurs logiques de base... Pas besoin qu'on te les réexplique dans un énième langage sachant que c'était déjà exactement la même chose dans tous les autres langages que t'as vu jusque là. La seule chose que t'as besoin d'apprendre c'est comment le dire dans le nouveau langage.
  • Mais coder c'est aussi de l'algorithmique. C'est donc aussi un exercice de réflexion. C'est seulement là que les mathématiques entrent en jeu. À quoi servent vraiment les maths à l'école une fois passées les bases (savoir compter, savoir calculer et ce qu'est une fonction) ? Réponse : à exercer son cerveau à avoir un raisonnement logique et construit, en partant d'un point A pour arriver à un point B de la réflexion. Les sciences mathématiques ne sont qu'un prétexte pour ça, un terrain d'entraînement pour savoir bien penser. Le plus important ce n'est pas Thalès ou Pythagore, mais la démonstration bien chiante (où tu dois les inclure) qu'on te demande de rédiger à chaque fois. "L'important ce n'est pas la destination mais le voyage", comme disent les voyageurs. C'est en appliquant ceci sur terrain de l'informatique et de l'algorithmique qu'un développeur arrive à élaborer de bons algorithmes.
    Le problème de notre enseignement, du moins en France, est qu'il ne sépare pas la logique et les mathématiques. On devrait explicitement apprendre aux enfants ce qu'est un OU (inclusif), un ET et un NON comme on leur apprend les additions, les multiplications et les nombres négatifs. Au lieu de ça l'enseignement noie les bases de la logique dans ce qui n'est au fond que de la culture mathématique, dans un contexte où les mathématiques ne servent qu'à appliquer ce cours de logique hélas informel. Le très utile est noyé dans l'inutile (du moins pour celui qui ne fera pas de vraies mathématiques quand il sera grand).
4  0 
Avatar de disedorgue
Expert éminent sénior https://www.developpez.com
Le 11/06/2020 à 13:15
Etant une brèle en langue, cette étude m'a fait découvrir que j'étais une brèle en programmation
3  0 
Avatar de germanika
Membre à l'essai https://www.developpez.com
Le 15/06/2020 à 13:24
@AxAx_

oui entièrement d'accord sur l'EN qui n'a pas le temps, les capacités qui se révèlent à l'âge adulte et les clichés!

je suis très bonne en langue et même je les enseigne ce qui me donne des défis pour me rendre accessible aux élèves,

mais jamais me suis-je demandé d'où venaient les lettres avec lesquelles j'écris, ni les symboles mathématiques d'ailleurs, il faut bien une part de par cœur même si se pencher sur la question est très intéressant,

mais les élèves pourraient le demander et je serais bien obligée de chercher si ça doit les aider et seulement si car le prof doit aussi poser un cadre dans un cours en établissement.

Le "il n'y a rien à comprendre et tout à apprendre" des profs de maths ainsi que leur démonstration m'ont laissée amère car je ne comprenais pas comment j'aurais pu me servir de ça,

les maths pour matheux c'est bien mais pour les autres il serait judicieux de montrer à quoi ça peut servir concrètement!
Notamment en programmation!
3  0 
Avatar de Neckara
Expert éminent sénior https://www.developpez.com
Le 07/06/2020 à 15:45
Et quand bien même la programmation serait à 99% de la langue, ce qui peut différencier les bons des mauvais programmeurs peut être le 1% restant.

Par exemple, un élève,est à la grand majorité de son temps le cul sur une chaise dans un cours, pourtant ce qui sanctionne sa compétence, c'est sa performances lors des examens, qui ne prend qu'un temps très court.

Derrière, les examens exigent de gérer son stress, chose que l'étudiant n'a pas à gérer en cours. L'étudiant peut même ne pas suivre le cours et avoir de très bonnes notes, et inversement, suivre le cours et avoir de très mauvaises notes.

Si on reprend la situation actuelle, lire/écrire pourrait correspondre à l'étudiant qui est en cours, et la réflexion sur ce qu'il doit faire/comment il doit le faire, serait l'étudiant qui est en examen. i.e. ce qui détermine le bon du mauvais étudiant serait alors la réflexion et non le simple fait de lire/écrire, bien que la réflexion aient une part bien moindre dans les activités cognitives du programmeur (c'est un exemple).
3  1 
Avatar de tanaka59
Membre émérite https://www.developpez.com
Le 07/06/2020 à 18:29
Bonjour,

Quelle pertinence accordez-vous aux conclusions de cette étude ?
" Des scanners cérébraux révèlent que la programmation requiert plus d'aptitudes en langues qu'en maths "

Un bon développeur a besoin de 3 choses comme un linguistique :

> réflexion : réussir à vulgariser un problème complexe en problème
> déduction : quand on utilise une option X c'est réussir à identifier naturellement l’élément qui le suivra, sans cela on est un très mauvais déducteur .
> logique : pour construire une phrase en anglais ou en français déjà c'est pas le même ordre des mots. Celui qui galère déjà avec cela en langue sera donc un mauvais "logique" . On est pas spécialement bête ... simplement on est un mauvais logique ...

Celui qui ne sait pas faire l'un des trois sera un très mauvais développeur, programmeur, codeur ...

Les maths sont-elles inutiles ou centrales dans votre travail et votre parcours de travailleur de la filière programmation informatique ? Pourquoi ?
A mon niveau je suis analyste ... les maths , les régles de calcul et de gestion c'est juste un peu la base.

Faut-il être matheux pour être bon en programmation ?
Absolument pas ...

Les matheux, cela doit surtout être les analystes, les gestionnaires et les comptables. La ou l'on applique des règles de calculs de manière massive .

A moins d'une spécialisation en "informatique de gestion" , cela devient rare.
2  0 
Avatar de Mjm
Membre régulier https://www.developpez.com
Le 08/06/2020 à 8:47
"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"
Use en français ou "use" en anglais ?
Si c'est le premier, je retourne vite dormir pour ne pas trop user ce qui reste !
2  0 
Avatar de Neckara
Expert éminent sénior https://www.developpez.com
Le 09/06/2020 à 10:35
D'ailleurs juste une question, est-ce que faire des maths activerait aussi les régions du cerveau dédié à la langue ?
2  0