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 !

Lire un programme informatique n'est pas la même chose que lire une langue pour le cerveau :
Ce dernier se sert de régions différentes, donc « bon en langues n'implique pas bon en programmation »

Le , par Patrick Ruiz

94PARTAGES

13  0 
Que se passe-t-il dans la tête des programmeurs lancés dans leur exercice de mise sur pied de logiciels ? Des techniques d’imagerie issues des neurosciences permettent 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 du MIT pour savoir lesquelles le sont lors de la lecture et de la compréhension de programmes informatiques. Résultat : « Bon en langues n’implique pas bon en programmation », car les régions cérébrales les plus actives au moment de lecture et de la compréhension de programmes informatiques n’ont rien à voir avec celles utilisées dans le traitement du langage naturel.

Deux écoles de pensée s’affrontent pour ce qui est de la façon dont le cerveau appréhende les programmes informatiques. L’une suggère qu’être bon en programmation requiert de l’être d’abord en mathématiques. L’autre soutient qu’en raison des parallèles entre le codage informatique et le langage naturel, la programmation informatique fait plus appel à des qualités linguistiques. « La compréhension du code informatique est un univers à part : rien à voir avec celle du langage naturel ou des mathématiques et la logique », indique l’équipe de chercheurs.

Les deux langages de programmation sur lesquels les chercheurs se sont concentrés dans cette étude sont connus pour leur lisibilité - Python et ScratchJr, un langage de programmation visuel conçu pour les enfants de 5 ans et plus. Les sujets de l'étude étaient tous de jeunes adultes maîtrisant le langage sur lequel ils étaient testés. Alors que les programmeurs étaient allongés dans un scanner à résonance magnétique fonctionnelle, les chercheurs leur ont montré des bribes de code et leur ont demandé de prédire l'action que le code produirait.

Les chercheurs n'ont constaté que peu ou pas de réaction au code dans les régions du cerveau sollicitées pour le traitement du langage naturel. Au contraire, ils ont découvert que la tâche de lecture de code informatique activait principalement un réseau à usage général. Ce dernier, dont l'activité est répartie dans les lobes frontaux et pariétaux du cerveau, est généralement sollicité pour des tâches qui nécessitent de garder plusieurs informations à l'esprit en même temps et est responsable de notre capacité à effectuer une grande variété de tâches mentales. L’étude indique qu’un sous-ensemble dudit réseau du cerveau est utilisé pour le traitement des problèmes de mathématiques et de logique. Dans le cas de la lecture de code informatique, plus de zones de ce réseau sont sollicitées suggérant que la programmation et les mathématiques ne s’appuient pas sur les mêmes mécanismes cérébraux.

Pourtant, les travaux du célèbre informaticien néerlandais Edsger Dijkstra dans les années ‘80 mettent en avant que la compréhension du langage naturel joue un rôle central dans la programmation informatique. C’est ce qu’une équipe de chercheurs allemands est venue confirmer dans une étude parue à mi-parcours de l’année qui tire à son terme : « À 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. »

L’équipe de chercheurs allemands 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 ces études retiennent l’attention, c’est parce qu’elles interviennent 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. Elles font suite à une autre publication de recherche qui, pour sa part, dit : doué en apprentissage de langues donc doué en programmation informatique.

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 : MIT

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-nous-la !

Avatar de grunk
Modérateur https://www.developpez.com
Le 17/12/2020 à 8:59
Bon en langues n’implique pas bon en programmation
Qu'est ce que ca veux dire "bon" en programmation ?

Je connais des gens capable de pondre des algos que je serais incapble de faire , pour autant je ne les considère pas "bons" en programmation à cause de la qualité du code produit par exemple.

Bon en programmation c'est un package complet qui ne se limite pas à lire ou écrire du code bêtement.
7  0 
Avatar de Bousk
Rédacteur/Modérateur https://www.developpez.com
Le 17/12/2020 à 14:32
Et bon en langues ça veut dire quoi ?
Être polyglote ?
Maîtriser les règles grammaticales de la langue française ?
Avoir une orthographe parfaite ?
Savoir conjuguer au passé simple et imparfait du subjonctif ?
Savoir prononcer women, enough, through, thought, though correctement ?
5  0 
Avatar de
https://www.developpez.com
Le 16/12/2020 à 20:14
Bon en maths n'implique pas non plus forcément bon en programmation. Bon en logique à la rigueur....
4  0 
Avatar de Ngork
Membre expérimenté https://www.developpez.com
Le 26/01/2021 à 21:09
Ce qui me semble le plus intéressant dans ce post, c'est que l'étude du MIT semble surtout montrer que la programmation informatique n'est pas une affaire de spécialisation : on n'utilise pas une zone spécifiquement faite pour le langage ou les maths ou la mémoire, non on utilise un peu tout et beaucoup ... on réfléchit, on crée, on analyse, on imagine ... c'est humain, quoi !
Difficile à remplacer par un réseau neuronal hyper spécialisé !
Les programmeurs ont donc encore de beaux jours devant eux !!!
2  0 
Avatar de el_slapper
Expert éminent sénior https://www.developpez.com
Le 18/12/2020 à 9:23
Outre les précisions fort utiles apportées par Bousk et Grunk, ne serait-il pas possible de se dire "en fait, c'est encore autre chose?".

Non, parce-que les associations d'idées à deux balles, c'est bien gentil, mais quand ça fait 50 ans qu'on arrive pas à en faire marcher une seule, il serait peut-être temps de se dire que la programmation informatique, c'est une activité en soi, comme la pratique des langues étrangères, ou comme les mathématiques, et que chacune a ses propres spécificités, non? D’où la conclusion de Jeff_67, d'ailleurs.
1  0 
Avatar de walfrat
Membre émérite https://www.developpez.com
Le 18/12/2020 à 10:49
Citation Envoyé par grunk Voir le message
Qu'est ce que ca veux dire "bon" en programmation ?

Je connais des gens capable de pondre des algos que je serais incapble de faire , pour autant je ne les considère pas "bons" en programmation à cause de la qualité du code produit par exemple.

Bon en programmation c'est un package complet qui ne se limite pas à lire ou écrire du code bêtement.
Pour le coup je ne suis pas vraiment d'accord, ou alors le "package complet" est tellement gros (surtout en 2020) que personne à part quelques extraterreste l'aura.

Sur un plan purement professionnel : quelqu'un de bon c'est quelqu'un qui a les compétences suffisantes, voir un peu plus pour le poste qu'on lui a donné.

Sur un plan plus orienté programmation je vais donner quelque point notable plutôt qu'une définition :
  • C'est quelqu'un qui maîtrise ce qu'il fait, les outils qu'il utilise et s'adapte bien moyennant qu'on lui donne quand même un peu de temps pour qu'il continue de maitriser ce qu'il fait (et pas commencer à aligner des copier/coller sur un langage qu'il connait pas mais "hey! Ca marche!". Dans la maîtrise j'entend aussi un socle correct sur par exemple, les I/O (fichier/réseau/http) un peu de multithreading,...
  • Il doit aussi savoir s'opposer raisonnablement aux pressions tel que "sortir toujours plus features toujours plus vite" mais pouvoir quand même trouvé un compromis entre le temps donné et la qualité de la solution technique.
  • Sans pour autant être un passionné qui suit chaque release de son langage et de ses outils, il doit quand même ne pas craindre de se mettre à niveau plutôt qu'a demander aux autres de se mettre au sien (ou le nivellement par le bas).
0  0 
Avatar de Blaise
Membre régulier https://www.developpez.com
Le 23/12/2020 à 22:07
Je crois qu'il faut un minimum de logique, mais aussi de la créativité.

Je chipote avec plusieurs langages, +/- imposés par le matériel, l'environnement et la finalité. J'ai une idée, et je fais mon choix en regardant comment je pourrais la mettre facilement en oeuvre avec tel ou tel langage.
0  0