La pensée linguistique est-elle plus importante que la pensée mathématique en programmation ? (2020)
(massivesci.com)- Une expérience d’apprentissage de Python montre que les capacités linguistiques et la résolution de problèmes sont les meilleurs prédicteurs de la vitesse d’apprentissage, suggérant qu’une initiation au code pourrait être plus proche de l’apprentissage d’une langue que des mathématiques
- Les chercheurs ont recruté 42 personnes pour suivre 10 leçons de Learn Python sur Codecademy, puis ont comparé les prétests, quiz et exercices finaux des 36 participants ayant terminé l’étude
- La réussite de l’apprentissage dépendait surtout de la résolution de problèmes et de la mémoire de travail, mais la vitesse d’apprentissage mobilisait à la fois les capacités cognitives générales et l’aptitude linguistique
- L’aptitude linguistique expliquait près de 20 % des écarts de vitesse d’apprentissage de Python, tandis que le prétest de mathématiques n’en expliquait que 2 % et n’était pas corrélé à la réussite
- Les oscillations bêta de l’EEG au repos étaient aussi associées à un apprentissage plus rapide et à davantage de connaissances en programmation, mais le lien de causalité et le mécanisme restent encore flous
Les aptitudes qui ont prédit l’apprentissage de Python
- Une étude de chercheurs de l’University of Washington estime que les capacités linguistiques et la résolution de problèmes sont les meilleurs prédicteurs de la vitesse d’apprentissage de Python
- L’étude a été publiée dans Scientific Reports et compare, au moyen de tests comportementaux et de mesures de l’activité cérébrale, la vitesse et la qualité avec lesquelles les participants apprennent la programmation
- Son point de départ est l’hypothèse que l’apprentissage de langages de programmation comme Python ou Java pourrait ressembler plus qu’on ne le pense à l’apprentissage de langues naturelles comme le français, l’espagnol ou le chinois
Conception de l’étude et méthodes de mesure
- Au total, 42 personnes ont été recrutées pour suivre le cours de code en ligne « Learn Python » de Codecademy
- Le cours se composait de 10 leçons de 45 minutes
- 36 personnes ont terminé l’étude jusqu’au bout
- Avant les cours en ligne, les participants ont passé plusieurs prétests
- Compétences en mathématiques
- Mémoire de travail
- Résolution de problèmes
- Aptitude à l’apprentissage d’une seconde langue
- Pendant les cours, la vitesse d’apprentissage et les performances ont été suivies au moyen des quiz intégrés au logiciel en ligne
- À la fin de l’étude, un quiz et un exercice de code supplémentaires ont été organisés pour évaluer l’ensemble des connaissances en programmation
Les facteurs qui ont différencié vitesse d’apprentissage et réussite
- Les participants ont obtenu des résultats différents quant à leur vitesse d’apprentissage de Python et à leur niveau final en programmation
- Le fait d’avoir appris Python plus ou moins bien dépendait principalement des capacités cognitives générales
- Résolution de problèmes
- Mémoire de travail
- Le fait d’avoir appris Python plus ou moins vite s’expliquait à la fois par les capacités cognitives générales et l’aptitude linguistique
- L’aptitude linguistique représentait près de 20 % des écarts de vitesse d’apprentissage de Python
- Les résultats au prétest de mathématiques n’expliquaient que 2 % des écarts de vitesse d’apprentissage et n’avaient aucune corrélation avec la qualité de l’apprentissage de Python
- Dans ces résultats, l’apprentissage du code dépend davantage des capacités linguistiques que des aptitudes mathématiques
Ce que l’EEG ajoute comme indice, et ses limites
- Avant l’apprentissage en ligne, les participants ont passé une mesure d’EEG au repos
- L’EEG mesure l’activité cérébrale à partir de motifs électriques enregistrés à travers le crâne
- L’activité électrique au repos présente plusieurs motifs, dont une activité électrique lente appelée oscillations bêta
- Des travaux antérieurs avaient lié un niveau élevé d’oscillations bêta au repos à l’aptitude à apprendre une seconde langue
- Dans cette étude aussi, un niveau élevé d’oscillations bêta était associé à un apprentissage plus rapide et à davantage de connaissances en programmation
- Cependant, la manière dont les oscillations bêta sont liées aux résultats d’apprentissage n’est pas encore claire et nécessite des recherches supplémentaires
Effets sur l’enseignement de la programmation et les idées reçues
- Les résultats soutiennent l’idée que, dans l’apprentissage de la programmation — au moins de Python — les capacités linguistiques jouent un rôle important, tandis que les compétences en mathématiques ne prédisent pas fortement la vitesse d’apprentissage ni la réussite
- La programmation est souvent considérée comme un domaine « intensif en mathématiques », mais cette étude invite à réexaminer d’anciennes hypothèses sur les prérequis de l’apprentissage de la programmation
- Certains domaines exigent à la fois des compétences en mathématiques et en programmation, mais cela ne signifie pas nécessairement qu’ils représentent la majorité des métiers possibles en programmation
- Exiger des cours de mathématiques avancées pour tous les étudiants en informatique semble inutile au regard de ces résultats, et davantage de flexibilité dans les exigences en mathématiques pourrait aider au recrutement et à la rétention des étudiants
- Alors que la programmation devient un prérequis pour de nombreux métiers, il peut y avoir des personnes faites pour l’informatique sans être des « profils matheux »
Commentaires sur la diversité et les méthodes pédagogiques
- Les femmes ont souvent le sentiment de ne pas correspondre à l’image du « programmeur informatique typique »
- En moyenne, les filles tendent à avoir de meilleures capacités linguistiques que les garçons, et si les capacités linguistiques prédisent la capacité à apprendre la programmation, les femmes pourraient elles aussi être davantage reconnues comme bonnes en programmation
- Relier explicitement la programmation aux capacités linguistiques et proposer des parcours de formation qui n’exigent pas de mathématiques avancées pourrait contribuer à améliorer la diversité
- Les options de type bootcamp, qui gagnent rapidement en popularité, peuvent mener à une carrière en programmation sans imposer le calcul différentiel et intégral aux participants
- Un commentaire d’un pair estime que l’enseignement de la programmation peut trop pencher vers des exercices centrés sur les mathématiques, comme le calcul de nombres de Fibonacci ou l’implémentation d’algorithmes de tri, et que des exercices plus créatifs et orientés langage pourraient aider davantage d’étudiants à apprendre
1 commentaires
Avis sur Hacker News
En lisant réellement l’article, le titre tient presque du clickbait, et les résultats de l’étude sont largement exagérés.
L’échantillon est très petit, avec seulement 36 personnes ayant terminé l’expérience ; la numératie donne R²=.27, et le langage environ R²=.31.
Ensuite, les auteurs calculent la contribution à la variance au moyen d’une régression pas à pas, mais cela revient pratiquement à ignorer les résultats précédents et à faire comme si la contribution de la numératie était quasi nulle. La raison est qu’il existe environ 10 % de variance partagée entre les deux variables, et que la régression pas à pas est gloutonne : la variable entrée en premier s’en empare.
Si l’on ajoutait un autre test linguistique similaire, on pourrait aussi conclure qu’il n’apporte presque aucune variance propre.
Les mesures elles-mêmes — évaluateurs humains, temps de réalisation, etc. — sont toutes très bruitées, sans aucune tentative de traitement de ce bruit.
Avec les valeurs présentées, si l’on teste au moyen du test de Steiger l’idée que « l’apprentissage linguistique est plus significatif que la numératie », on obtient une p-value de 0,772, donc rien de significatif.
Au final, la numératie explique 27 % de la variance et les capacités linguistiques 31 %, mais après ajout d’une variable corrélée, la contribution propre de la numératie tombe simplement à 2 %.
Le fait que la régression produise une pente positive semble aussi fortement influencé par la position de valeurs aberrantes, tandis que le nuage de points de l’aptitude linguistique montre au moins visuellement une relation croissante entre les deux variables.
À mon avis, un bon code ne se contente pas de résoudre le problème : il le fait d’une manière lisible et modulaire.
La partie résolution de problèmes du codage exige des compétences mathématiques, et la partie structuration exige des compétences d’écriture. Un code désordonné devient ensuite difficile à relire ou à étendre, ce qui finit par entraver la résolution du problème elle-même.
Les longues démonstrations mathématiques exigent aussi des capacités de structuration, mais les mathématiques semblent comporter davantage de « grands sauts » ou de concepts intrinsèquement complexes qu’il est difficile d’atteindre par la seule qualité d’écriture.
À l’inverse, la programmation comporte beaucoup de « petites étapes » : même sans être exceptionnellement intelligent, on peut créer des programmes impressionnants en construisant patiemment composant par composant, à condition qu’il n’y ait pas trop de dépendances.
En pratique, on passe plus de temps à lire des bases de données et des schémas d’interface pour comprendre le comportement qu’à effectuer des manipulations mathématiques.
Il existe bien des exceptions, comme les moteurs de jeu, mais même en graphisme 3D, il est souvent inutile d’aller au-delà des premiers éléments d’algèbre linéaire.
Un code non modularisé est souvent plus lisible et plus rapide, et dans les langages bas niveau ou ceux à gestion manuelle de la mémoire, la meilleure solution, ou la solution correcte, est parfois assez éloignée de la lisibilité.
La lisibilité dépend de la personne qui regarde, et passe après les exigences formelles.
Personnellement, je préfère de longues fonctions bien organisées, modularisées au strict minimum. Les frontières entre fichiers, le contexte d’une nouvelle fonction et autres changements de contexte ont été pour moi la principale source de complexité et de bugs lors de la maintenance et de l’extension.
La modularisation multiplie ces frontières, peut masquer la complexité et rendre les problèmes d’organisation plus difficiles à raisonner et à corriger. Même si une longue fonction est moins lisible au premier abord, elle crée selon moi un modèle mental plus clair et conduit à de meilleures solutions.
Contrairement à ce dont les interactions avec d’autres éléments sont complexes, un concept complexe en soi ressemble davantage à un outil sur mesure dans une démonstration qu’à un objet généraliste.
L’idée que « la programmation comporte beaucoup de petites étapes » est bien formulée. Je me dis souvent qu’une mémoire de travail moyenne peut même aider les programmeurs à écrire du code maintenable.
Si l’on ne se souvient pas de ce qu’on a écrit il y a trois minutes, on ne peut pas produire du code spaghetti qui fonctionne. Bien sûr, c’est une hypothèse assez autojustificatrice.
Il en va de même pour éviter les dépendances inutiles entre composants, analyser un problème et trouver les parties séparables.
Ce qui est frustrant quand on enseigne la programmation, c’est la pression constante de devoir maintenir l’attitude selon laquelle « tout le monde peut forcément apprendre à programmer ».
Beaucoup de personnes qui veulent apprendre la programmation ont, dès le départ, des motivations confuses ou erronées, et il peut être bien plus efficace pour elles de développer d’autres compétences. Ce n’est pas une question d’élitisme : cela signifie simplement que moi aussi, je peux être incapable de faire des choses qui viennent naturellement à d’autres.
L’effort consistant à faire une longue division mentalement ressemble à celui qui consiste à suivre un code spaghetti obscur.
On peut devenir rapide et bon en division mentale sans jamais comprendre le théorème fondamental de l’analyse.
Certaines personnes savent très bien se frayer un chemin dans du code poubelle et, comme elles sont payées pour cela, elles finissent forcément par s’y améliorer, mais on ne sait pas très bien quelle partie de la programmation elles ont vraiment améliorée.
Quand j’ai l’impression qu’au travail je ne fais que m’exercer à des espèces de longues divisions mentales, je cherche toujours un nouveau poste. Même beaucoup d’argent ne vaut pas le prix du retard que cela fait prendre.
L’étude de Prat et al. (2020) suggère certes que, dans l’apprentissage de Python, l’aptitude linguistique est un meilleur prédicteur que les compétences numériques, mais il faut la lire avec prudence, car elle peut facilement être simplifiée à l’excès
Ce que l’étude a mesuré, c’est la numératie fonctionnelle, c’est-à-dire la capacité à résoudre des problèmes numériques du quotidien. C’est assez différent des mathématiques avancées souvent associées à la programmation, comme la logique formelle, l’abstraction symbolique ou les langages formels
Ce qui compte pour comprendre la récursion, l’inférence de types ou la conception d’algorithmes, ce n’est pas l’arithmétique de base, mais ces capacités plus abstraites. Donc le faible pouvoir prédictif de la numératie fonctionnelle dans cette étude ne signifie pas que le raisonnement mathématique profond n’a aucun rapport avec la programmation
Par ailleurs, le langage étudié est Python, conçu pour être lisible et proche du langage naturel. Cela peut avantager les personnes ayant de fortes compétences linguistiques, mais ne se généralise pas forcément à des langages plus denses sur le plan symbolique et logique, comme C, Lisp ou Haskell
Langage et mathématiques ne sont pas des domaines opposés : ils partagent des bases cognitives comme la mémoire de travail, l’attention exécutive et le traitement des structures hiérarchiques. L’essentiel n’est pas de savoir lequel « gagne », mais comment ils interagissent et se complètent dans différents contextes de programmation
Le monde universitaire essaie depuis des décennies de formaliser de nombreux aspects de la programmation, mais il semble toujours ne pas comprendre la faible corrélation entre les diplômés en informatique et les programmeurs innovants
Dans la réalité, beaucoup de gens qui obtiennent des résultats apprennent la récursion en se heurtant à un mur avec d’autres méthodes, puis en ayant ce moment du type « ah, c’est donc pour ça que la récursion existe ». Pas en étudiant l’abstraction symbolique, la sémantique dénotationnelle ou la théorie des types
La vérité dérangeante, c’est que la quasi-totalité de la programmation professionnelle et innovante n’utilise pas les mathématiques avancées obligatoires des cursus diplômants
À mon avis, la dureté de cet enseignement se maintient en grande partie par le « je l’ai fait, donc tu dois le faire aussi » et par le gatekeeping académique
Quand on devient vraiment très bon en programmation et qu’on entre dans la période la plus productive de sa vie, cela ressemble à un langage. On devient capable de s’exprimer comme si l’on parlait
Ces résultats me semblent assez convaincants. J’ai toujours très bien lu, et très vite, et cette capacité m’a été extrêmement utile dans ma carrière de programmeur
J’avais un score correct de 710 en maths au SAT, mais, à la fin des années 1990, j’ai eu 800/800 à la partie verbale du SAT
Quand j’ai commencé mon projet de master sur les réseaux de capteurs sans fil, mon directeur a imprimé le code source de TinyOS et m’a dit de l’étudier pendant une semaine, puis de revenir quand je penserais l’avoir suffisamment compris
Cette expérience a été formatrice, et depuis, chaque fois que je rejoins un nouveau projet, je prends le temps de lire le code et d’essayer de comprendre comment l’ensemble s’articule
Aujourd’hui, je suis développeur web senior, et je ne suis toujours pas vraiment bon au-delà des maths de base nécessaires au quotidien. Cela dit, grâce à 18 ans dans la restauration, j’approxime les pourcentages assez vite
Les meilleurs programmeurs avec qui j’ai travaillé avaient toujours une forte pensée linguistique. Ils maîtrisaient plusieurs langues, même sans en avoir besoin, ou avaient un long passé de lecture de littérature difficile
À tout le moins, ils avaient une forme d’esprit particulière, métacognitive et métalinguistique
Je pense que c’est encore vrai aujourd’hui, mais avec la démocratisation des diplômes et des parcours de carrière, c’est devenu plus difficile à repérer dans la nature. En plus, même si, dans la pratique, une bonne conception et la capacité à expliquer sont bien plus souvent nécessaires que de construire des algorithmes à partir de zéro, l’optimisation pour le leetcoding favorise naturellement les cerveaux plus mathématiques
Mais je suis nul en maths et je déteste ça. Quand je lis la plupart des textes mathématiques, j’ai l’impression d’être dyslexique
J’étais bon à l’école primaire, mais dès que l’accent s’est déplacé des algorithmes vers les équations, l’abstrait et des contenus dont je ne voyais pas l’application, j’ai rapidement été frustré
À l’inverse, la programmation m’a semblé naturelle et facile à apprendre. Quand j’ai étudié des sujets réputés « difficiles » comme les pointeurs ou la récursion, ils m’ont en réalité paru tellement simples que j’ai passé plus de temps à me convaincre que « ça ne peut pas être aussi facile, je dois forcément rater quelque chose »
Dans chaque poste, j’étais la personne à qui l’on confiait les problèmes « difficiles » ou « bas niveau »
Quand je dois lire des maths, je ne comprends que si je transforme tout en étapes et que je fais passer des valeurs d’exemple à travers ces étapes pour voir comment elles s’influencent mutuellement. Je dois tout convertir en algorithmes
Les tentatives d’exprimer du sens avec des équations et des preuves ne me conviennent pas ; je dois transformer une à une les frontières entre tous les symboles en étapes et les parcourir pour commencer à comprendre
Je pense que la programmation m’a bien convenu parce que la manière dont on y est généralement exposé et dont on l’apprend est centrée sur les algorithmes, avec beaucoup moins d’autres formes d’expression mathématique. Le contexte autour de ce que signifient les variables et les routines est aussi bien plus riche qu’un amas de symboles
Si Perl est censé être de la bouillie, alors qu’est-ce que l’écriture mathématique ? Comparé au pur charabia d’un adorateur de Cthulhu dont l’esprit est brisé, Perl est ce qu’il y a de plus clair au monde
Le problème, ce sont les langages qui ont une syntaxe mathématique. Le style idiomatique qui fait tout avec des variables d’une seule lettre et des déclarations d’égalité est difficile à lire, et je suis incapable de lire Haskell
Des concepts tout aussi délicats, comme les monades ou les classes de types, me paraissent faciles quand je les vois dans un langage plus ordinaire, mais je n’ai jamais réussi à avancer en essayant de les apprendre avec Haskell. Même un programme du niveau de fizzbuzz écrit en Haskell me prend longtemps à comprendre
Mon score verbal était nettement plus élevé, et j’ai construit une excellente carrière en génie logiciel sur de grands projets professionnels dans une grande entreprise connue de tous, en utilisant de nombreux langages ensemble
Les notions de « cerveau linguistique » ou de « cerveau mathématique » ne tiennent pas, sauf à démontrer expérimentalement que les neurones concernés se répartissent en deux zones distinctes et non chevauchantes, dédiées respectivement au langage et aux mathématiques.
Les mathématiques elles-mêmes sont aussi un langage formel créé par les humains, et elles partent des définitions et axiomes de la logique et de la théorie des ensembles, mais ces définitions et axiomes doivent eux aussi d’abord être donnés en langage humain.
Les mathématiciens expérimentés lisent les théorèmes écrits en lettres grecques au tableau comme de l’anglais ordinaire, ce qui suggère qu’ils les pensent comme de l’anglais courant.
Bien sûr, s’ils le veulent, ils peuvent aussi se représenter mentalement une image visuelle isomorphe à ce langage.
Les expressions « cerveau linguistique » et « cerveau mathématique » ne sont que des fictions utiles, et savoir s’il s’agit réellement de morceaux de chair différents n’a pas d’importance.
Mais la plupart des gens conviendront tout de même que résoudre des problèmes, exprimer ses idées avec des mots et exprimer ses idées en mathématiques sont des compétences très différentes.
Comme le disait Henri Poincaré, « la poésie est l’art de donner des noms différents à une même chose, et les mathématiques l’art de donner le même nom à des choses différentes » ; au fond, je pense que c’est surtout proche de la capacité à bien nommer les choses, en particulier les abstractions.
Cela dit, d’après mon expérience, le SAT d’il y a 20 ans traitait aussi beaucoup d’abstractions dans la partie verbale, comme les analogies, et la partie mathématique était similaire. À un examen que j’ai passé une fois, j’ai eu 660 en verbal et 650 en maths, presque pareil.
Oliver Sacks a écrit sur les effets secondaires étranges des traumatismes cérébraux.
On pourrait aussi provoquer des lésions dans différentes parties du cerveau de mathématiciens ou d’écrivains pour expérimenter, mais la stimulation nerveuse ou l’anesthésie de zones cérébrales pourrait déjà montrer quelque chose.
Cette affirmation est étrange à plusieurs égards. Je ne pense pas qu’il existe des entités comme un « cerveau linguistique » ou un « cerveau mathématique », mais en même temps beaucoup de gens ne savent pas ce que sont les mathématiques, et cette preuve pourrait au contraire être vue comme allant dans le sens du « cerveau mathématique ».
Les mathématiques ne portent pas sur le calcul, mais sur les motifs. Quand on arrive à l’algèbre, on se dit « pourquoi y a-t-il des lettres en maths ? », mais en allant plus loin, on finit par se demander « pourquoi y a-t-il des nombres en maths ? ».
La grande tragédie de l’enseignement des mathématiques est qu’il se concentre trop sur le calcul. Des sujets utiles comme la théorie des groupes, la combinatoire, les graphes, la théorie des ensembles ou la théorie des catégories ont des bases que même des enfants peuvent comprendre, mais on ne les enseigne qu’en licence de mathématiques, voire en master ou doctorat.
Ces sujets ont une profondeur immense, mais une grande partie de ce qui formalise une manière de penser est compréhensible par des enfants. À titre d’exemple, je recommande Visual Group Theory[0].
Les mathématiques portent sur l’abstraction, et pourtant, bizarrement, nous la réservons pour la « fin de partie ».
Je peux affirmer avec certitude que comprendre ce genre de choses accélère l’apprentissage et influence profondément la manière de penser. Mais il faut prendre ces abstractions au sérieux, et ne pas se limiter soi-même en les considérant comme des outils destinés uniquement à des applications particulières.
Beaucoup de gens ont du mal avec les problèmes en contexte, mais même dans une situation absurde où le cousin Throckmorton veut acheter 500 pastèques, cela fait finalement partie du lien entre les maths et la réalité.
Si les mathématiques « avancées » ont accéléré mon apprentissage, c’est parce que les mathématiques à ce niveau enseignent l’abstraction, autrement dit une manière de penser. Même sans écrire d’équations, c’est extrêmement utile.
Les mathématiques ne consistent pas vraiment à écrire des équations, mais quand les choses deviennent complexes, les équations aident beaucoup, et c’est pour cela qu’on les utilise.
[0] https://www.youtube.com/watch?v=UwTQdOop-nU&list=PLwV-9DG53N...
Par exemple, je n’avais jamais entendu dire que les matrices étaient une abstraction utile, ou une notation condensée, pour représenter des équations linéaires.
Même chose pour les nombres imaginaires : ce sont des abstractions inventées pour faciliter certains calculs.
J’aurais aimé les apprendre sous l’angle de la forme que prennent ces abstractions et de leur utilité.
« En cours de musique, on sort une portée, et quand le professeur écrit des notes au tableau, nous les recopions ou les transposons dans une autre tonalité. Il faut écrire correctement les clefs et les armures, et le professeur vérifie de très près que les noires sont entièrement remplies. Une fois, j’ai trouvé la bonne réponse à un exercice chromatique, mais je n’ai pas eu de points parce que la direction de la hampe était mauvaise. »
https://en.m.wikipedia.org/wiki/A_Mathematician%27s_Lament
Moi aussi, en apprenant l’algèbre abstraite en autodidacte, j’ai eu l’impression que mes capacités d’apprentissage et de raisonnement s’accéléraient.
Il y avait essentiellement quatre filières : l’une terminait l’algèbre 1 en terminale, une autre faisait de la trigonométrie en terminale, une troisième allait aussi jusqu’à la trigonométrie mais sans pré-calcul, et seule la dernière allait jusqu’à la trigonométrie et au pré-calcul.
Cette dernière classe était elle-même subdivisée : certains ne faisaient que le pré-calcul, certains passaient le calcul différentiel et intégral 1 avec AP Calculus AB ou IB Math SL, et un groupe plus restreint passait AP Calculus BC ou IB Math HL.
Dans ma promotion, environ 20 élèves sur 500 à 600 diplômés ont passé l’examen AP Calculus AB.
L’expression « compétences linguistiques et capacité de résolution de problèmes » est déjà un premier signal d’alerte. Le titre transforme ça en une question qui ne porterait que sur la langue
Que la capacité de résolution de problèmes soit liée paraît assez évident, mais le rôle du langage est moins clair
J’ai programmé la majeure partie de ma vie, mais je ne me considère pas comme quelqu’un de très éloquent. Mes compétences linguistiques sont correctes sans plus, et apprendre une nouvelle langue naturelle me semble peu probable
Je suis donc sceptique, et en regardant l’étude, on voit d’abord que les « mathématiques » y deviennent de la numératie. Je pense que la programmation est plus proche de l’algèbre, mais même là, elle est moins stricte et plus facile à déboguer
La mesure de numératie de l’étude était une échelle fondée sur Rasch : 18 questions de numératie issues de plusieurs échelles ont été évaluées, puis les 8 plus prédictives ont été retenues
En plus, cette étude repose désormais sur des données vieilles de 5 ans
Si quelqu’un peut résoudre un problème mais ne peut pas expliquer ce qu’est le problème, ni pourquoi sa solution le résout, il est difficile de l’appeler un bon résolveur de problèmes
Quelqu’un qui décrit bien un problème mais ne trouve pas de solution est déjà meilleur que beaucoup de programmeurs dans le monde, et je préférerais travailler avec lui plutôt qu’avec quelqu’un qui balance une solution sans « démarche »
En fait, sans cette capacité d’expression, il est même difficile de saisir ce qu’est la résolution de problèmes dans un sens primitif
Dans ce contexte, la créativité pourrait être la capacité à reformuler un problème de manière plus accessible. Dans bien des cas, ce cadrage suggère une solution évidente ou un ensemble de solutions aux compromis clairs
J’ai observé une corrélation assez intéressante entre les personnes qui apprennent bien la programmation et celles qui réussissent bien les concours d’orthographe en anglais
Les deux semblent similaires dans le fait d’exécuter un processus algorithmique tout en gardant en tête beaucoup d’anecdotes et d’exceptions obscures aux règles
Mon cerveau semble adapté au stockage et à la récupération de ce type de données, ce qui est aussi fortement corrélé à des choses comme les interfaces CLI et les structures de commandes particulières
Je considère fortement que définir un « cerveau linguistique » et un « cerveau mathématique » relève d’une fausse dichotomie et d’une mauvaise neuroscience
Les mathématiques sont elles-mêmes un ensemble de symboles créé pour exprimer des concepts, autrement dit un langage
Cette étude donne l’impression de s’efforcer de dire ce que la plupart des gens savent déjà : avec de l’intérêt, de la motivation et des opportunités, n’importe qui peut devenir un bon programmeur, mathématicien, ou autre
Un livre intéressant sur l’évolution de la perception sociale des mathématiciens, et plus largement des informaticiens, est « Duel at Dawn »
L’image moderne, relativement récente, est celle du génie reclus doté de capacités extraterrestres, surhumaines et innées pour traiter les nombres et l’information, parfois avec des sous-entendus d’autisme. Un archétype serait « Sheldon Cooper » dans la série TV « the big bang theory »
Mais c’est faux
Personne ne naît avec une capacité surhumaine à exceller dans quoi que ce soit. Ceux qui deviennent très bons dans un domaine sont, indépendamment de la perception qu’on en a, des gens qui ont travaillé extrêmement dur pour y parvenir
Au début, je critiquais l’étude uniquement à partir de l’article, mais après avoir parcouru l’article cité lui-même, j’ai révisé mes critiques spécifiques. Cela dit, l’article scientifique lui-même ne me semble guère être plus qu’un faible argument eugéniste emballé dans du jargon de psychologie et de statistiques
L’article est extrêmement trompeur, au point que j’ai presque envie de dire qu’il est malveillant
L’étude elle-même indique que le raisonnement fluide et la capacité de mémoire de travail expliquent 34 %, l’aptitude linguistique 17 %, la puissance des bandes bêta et gamma basse de l’EEG au repos 10 %, et la numératie 2 %
Mais ici, on assimile les compétences en mathématiques à la numératie. L’étude elle-même le suggère aussi, mais je ne suis fondamentalement pas d’accord
À mon avis, les compétences en mathématiques sont bien plus proches du raisonnement fluide que de la numératie