Le abilità linguistiche sono un predittore più forte della capacità di programmazione rispetto alle conoscenze matematiche, secondo un nuovo studio dell'Università di Washington. Qui, il coautore dello studio Malayka Mottarella dimostra la codifica in Python mentre indossa un auricolare specializzato che misura l'attività elettrica nel cervello. Credito:Justin Abernethy/U. di Washington
Vuoi imparare a programmare? Metti giù il libro di matematica. Pratica invece quelle abilità di comunicazione.
Una nuova ricerca dell'Università di Washington rileva che un'attitudine naturale per l'apprendimento delle lingue è un predittore più forte dell'apprendimento della programmazione rispetto alle conoscenze matematiche di base, o matematica. Questo perché scrivere codice implica anche l'apprendimento di una seconda lingua, la capacità di apprendere il vocabolario e la grammatica di quella lingua, e come lavorano insieme per comunicare idee e intenzioni. Altre funzioni cognitive legate ad entrambe le aree, come la risoluzione dei problemi e l'uso della memoria di lavoro, svolgono anche ruoli chiave.
"Molti ostacoli alla programmazione, dai corsi propedeutici agli stereotipi sull'aspetto di un buon programmatore, sono incentrati sull'idea che la programmazione si basa molto sulle abilità matematiche, e quell'idea non nasce nei nostri dati, " ha detto l'autore principale Chantel Prat, professore associato di psicologia all'UW e all'Institute for Learning &Brain Sciences. "Imparare a programmare è difficile, ma è sempre più importante per ottenere posizioni qualificate nella forza lavoro. Le informazioni su ciò che serve per essere bravi a programmare mancano in modo critico in un campo che è stato notoriamente lento nel colmare il divario di genere".
Pubblicato online il 2 marzo in Rapporti scientifici , una rivista ad accesso aperto del Nature Publishing Group, la ricerca ha esaminato le capacità neurocognitive di più di tre dozzine di adulti mentre imparavano Python, un linguaggio di programmazione comune. A seguito di una batteria di test per valutare la loro funzione esecutiva, competenze linguistiche e matematiche, i partecipanti hanno completato una serie di lezioni online e quiz in Python. Coloro che hanno imparato Python più velocemente, e con maggiore precisione, tendeva ad avere un mix di spiccate capacità di problem solving e di linguaggio.
Nel mondo odierno incentrato sulle STEM, imparare a programmare apre una varietà di possibilità per il lavoro e l'istruzione estesa. La codifica è associata alla matematica e all'ingegneria; i corsi di programmazione a livello universitario tendono a richiedere matematica avanzata per iscriversi e tendono ad essere insegnati nei dipartimenti di informatica e ingegneria. Altre ricerche, vale a dire dal professore di psicologia UW Sapna Cheryan, ha dimostrato che tali requisiti e percezioni della codifica rafforzano gli stereotipi sulla programmazione come campo maschile, potenzialmente scoraggiando le donne dal perseguirlo.
Ma la codifica ha anche un fondamento nel linguaggio umano:la programmazione implica la creazione di significato mettendo insieme i simboli in modi basati su regole.
Sebbene alcuni studi abbiano toccato i legami cognitivi tra l'apprendimento delle lingue e la programmazione informatica, alcuni dati sono vecchi di decenni, utilizzando linguaggi come il Pascal che sono ormai obsoleti, e nessuno di loro ha utilizzato misure attitudinali del linguaggio naturale per prevedere le differenze individuali nell'apprendimento della programmazione.
Allora Prat, specializzato nei predittori neurali e cognitivi dell'apprendimento delle lingue umane, deciso di esplorare le differenze individuali nel modo in cui le persone imparano Python. Python è stata una scelta naturale, Prat ha spiegato, perché assomiglia a strutture inglesi come il rientro di paragrafo e usa molte parole reali piuttosto che simboli per le funzioni.
Per valutare le caratteristiche neurali e cognitive di "attitudine alla programmazione, " Prat ha studiato un gruppo di madrelingua inglesi di età compresa tra i 18 e i 35 anni che non avevano mai imparato a programmare.
Questo grafico mostra come le competenze dei partecipanti allo studio, come abilità matematiche e linguistiche, contribuire all'apprendimento di Python. Secondo il grafico, la cognizione e l'attitudine al linguaggio sono maggiori predittori dell'apprendimento rispetto alla matematica. Credito:Prat et al./Rapporti scientifici
Prima di imparare a programmare, i partecipanti hanno preso due tipi completamente diversi di valutazioni. Primo, i partecipanti sono stati sottoposti a una scansione elettroencefalografia di cinque minuti, che registrava l'attività elettrica del loro cervello mentre si rilassavano con gli occhi chiusi. In precedenti ricerche, Prat ha mostrato che i modelli di attività neurale mentre il cervello è a riposo possono prevedere fino al 60% della variabilità nella velocità con cui qualcuno può imparare una seconda lingua (in tal caso, Francese).
"In definitiva, these resting-state brain metrics might be used as culture-free measures of how someone learns, " Prat said.
Then the participants took eight different tests:one that specifically covered numeracy; one that measured language aptitude; and others that assessed attention, problem-solving and memory.
To learn Python, the participants were assigned 10 45-minute online instruction sessions using the Codeacademy educational tool. Each session focused on a coding concept, such as lists or if/then conditions, and concluded with a quiz that a user needed to pass in order to progress to the next session. For help, users could turn to a "hint" button, an informational blog from past users and a "solution" button, in that order.
From a shared mirror screen, a researcher followed along with each participant and was able to calculate their "learning rate, " or speed with which they mastered each lesson, as well as their quiz accuracy and the number of times they asked for help.
After completing the sessions, participants took a multiple-choice test on the purpose of functions (the vocabulary of Python) and the structure of coding (the grammar of Python). For their final task, they programmed a game—Rock, Paper, Scissors—considered an introductory project for a new Python coder. This helped assess their ability to write code using the information they had learned.
In definitiva, researchers found that scores from the language aptitude test were the strongest predictors of participants' learning rate in Python. Scores from tests in numeracy and fluid reasoning were also associated with Python learning rate, but each of these factors explained less variance than language aptitude did.
Presented another way, across learning outcomes, participants' language aptitude, fluid reasoning and working memory, and resting-state brain activity were all greater predictors of Python learning than was numeracy, which explained an average of 2% of the differences between people. È importante sottolineare che Prat also found that the same characteristics of resting-state brain data that previously explained how quickly someone would learn to speak French, also explained how quickly they would learn to code in Python.
"This is the first study to link both the neural and cognitive predictors of natural language aptitude to individual differences in learning programming languages. We were able to explain over 70% of the variability in how quickly different people learn to program in Python, and only a small fraction of that amount was related to numeracy, " Prat said. Further research could examine the connections between language aptitude and programming instruction in a classroom setting, or with more complex languages such as Java, or with more complicated tasks to demonstrate coding proficiency, Prat said.