O pensamento linguístico é mais importante que o pensamento matemático para programação? (2020)
(massivesci.com)- Em um experimento de aprendizado de Python, habilidade linguística e capacidade de resolução de problemas foram os melhores preditores da velocidade de aprendizagem, sugerindo que começar a programar pode estar mais próximo de aprender uma língua do que de matemática
- Os pesquisadores recrutaram 42 pessoas e aplicaram as 10 lições de Learn Python da Codecademy, comparando pré-testes, quizzes e tarefa final dos 36 participantes que concluíram o estudo
- O desempenho de aprendizagem se dividiu principalmente entre resolução de problemas e memória de trabalho, mas a velocidade de aprendizagem também foi influenciada por habilidade cognitiva geral e aptidão linguística
- A aptidão linguística explicou quase 20% da diferença na velocidade de aprendizagem de Python, enquanto o pré-teste de matemática explicou apenas 2% da variação da velocidade e não teve relação com o desempenho
- As oscilações beta em EEG em estado de repouso também se associaram a aprendizado mais rápido e maior conhecimento de programação, mas a relação causal e o mecanismo ainda não estão claros
Habilidades que previram o aprendizado de Python
- Um estudo de pesquisadores da University of Washington concluiu que, no aprendizado de Python, habilidade linguística e capacidade de resolução de problemas são os melhores preditores da velocidade de aprendizagem
- O estudo foi publicado na Scientific Reports e comparou quão rápido e quão bem os participantes aprendiam programação por meio de testes comportamentais e medições de atividade cerebral
- O ponto de partida foi a hipótese de que aprender linguagens de programação como Python ou Java pode ser mais parecido do que se imagina com aprender línguas naturais como francês, espanhol ou chinês
Desenho do estudo e forma de medição
- Ao todo, 42 pessoas foram recrutadas para fazer o curso online de programação “Learn Python” da Codecademy
- O curso era composto por 10 lições de 45 minutos
- 36 participantes concluíram o estudo até o fim
- Antes das aulas online, os participantes fizeram vários pré-testes
- habilidade matemática
- memória de trabalho
- resolução de problemas
- capacidade de aprender uma segunda língua
- Durante as aulas, a velocidade de aprendizagem e o desempenho foram acompanhados com quizzes incluídos no software online
- Ao final do estudo, também foram aplicados um quiz e uma tarefa de programação para verificar o conhecimento geral de código
Fatores que separaram velocidade e desempenho
- Os participantes mostraram resultados diferentes tanto na velocidade com que aprenderam Python quanto na habilidade final de programação
- O quanto aprenderam Python bem foi determinado principalmente por habilidades cognitivas gerais
- capacidade de resolução de problemas
- memória de trabalho
- O quanto aprenderam Python rápido foi explicado em conjunto por habilidade cognitiva geral e aptidão linguística
- A aptidão linguística respondeu por quase 20% da diferença na velocidade de aprendizagem de Python
- O desempenho no pré-teste de matemática explicou apenas 2% da diferença de velocidade de aprendizagem e não teve qualquer relação com o quanto a pessoa aprendeu Python
- Neste resultado, aprender programação depende mais de habilidade linguística do que de capacidade matemática
Evidências adicionais do EEG e limitações
- Antes do aprendizado online, os participantes passaram por medição de EEG em estado de repouso
- O EEG mede a atividade cerebral por meio de padrões elétricos registrados através do crânio
- Na atividade elétrica em repouso existem vários padrões, e um deles é a oscilação beta, uma atividade elétrica lenta
- Pesquisas anteriores já haviam relacionado níveis mais altos de oscilações beta em repouso à capacidade de aprender uma segunda língua
- Neste estudo, níveis mais altos de oscilações beta também se associaram a aprendizado mais rápido e a maior conhecimento de programação
- Ainda assim, não está claro como as oscilações beta se conectam aos resultados de aprendizagem, e mais pesquisas são necessárias
Impacto sobre o ensino de programação e preconceitos
- Os resultados apoiam a ideia de que, na programação, ao menos no aprendizado de Python, habilidade linguística é um fator importante, enquanto a habilidade matemática não prevê fortemente nem a velocidade nem o desempenho
- Programação costuma ser vista como uma área “intensiva em matemática”, mas este estudo leva a reconsiderar suposições antigas sobre os pré-requisitos para aprender programação
- Algumas áreas exigem tanto matemática quanto habilidade de programação, mas isso não significa que a maioria dos trabalhos em programação se enquadre nisso
- Exigir aulas avançadas de matemática de todos os estudantes de ciência da computação parece desnecessário à luz desses resultados, e flexibilizar os requisitos de matemática pode ajudar no recrutamento e na retenção de alunos
- Em um cenário no qual programação se torna pré-requisito para muitas profissões, é possível que pessoas que não sejam do “tipo matemática” também sejam adequadas para ciência da computação
Comentários sobre diversidade e formas de ensino
- Muitas mulheres sentem que não combinam com a imagem do “programador de computador típico”
- Em média, meninas tendem a ter maior habilidade linguística do que meninos, e, se habilidade linguística prevê a capacidade de aprender programação, as mulheres também podem passar a ser mais reconhecidas como boas em programação
- Conectar explicitamente programação e habilidade linguística, além de oferecer opções educacionais que não exijam matemática avançada, pode ajudar a melhorar a diversidade
- Opções no estilo bootcamp, que vêm ganhando popularidade rapidamente, podem levar a carreiras em programação sem obrigar os participantes a cursar cálculo
- Em um comentário paralelo, argumenta-se que o ensino de programação pode ser enviesado para tarefas centradas em matemática, como calcular números de Fibonacci ou implementar algoritmos de ordenação, e que tarefas mais criativas e orientadas à linguagem podem ajudar mais estudantes a aprender
1 comentários
Opiniões no Hacker News
Lendo o artigo de fato, o título é quase um clickbait, e os resultados da pesquisa também são bastante exagerados
A amostra é muito pequena, com apenas 36 pessoas que concluíram, e a aptidão matemática fica em R²=.27, enquanto linguagem fica em torno de R²=.31
Depois, eles calculam a contribuição para a variância via regressão stepwise, mas isso basicamente ignora o resultado anterior e faz parecer que a contribuição da aptidão matemática é quase nula. O motivo é que há cerca de 10% de variância compartilhada entre as duas variáveis, e a regressão stepwise é gulosa, então a variável que entra primeiro fica com ela
Se você adicionasse mais um teste de linguagem parecido, também poderia aparecer como tendo quase nenhuma contribuição de variância própria
As medidas também são todas muito ruidosas, como avaliadores humanos e tempo de conclusão, e não há nenhuma tentativa de tratar isso
Usando os valores apresentados para avaliar “aprendizado de linguagem é mais significativo que aptidão matemática” com o teste de Steiger, o p-value é 0,772, ou seja, não é significativo de forma alguma
No fim, a aptidão matemática explica 27% da variância e a habilidade linguística 31%, mas, depois de adicionar uma variável correlacionada, a contribuição própria da aptidão matemática apenas cai para 2%
O fato de a regressão ter dado inclinação positiva também parece ser bastante influenciado pela posição de outliers, enquanto no gráfico de dispersão da aptidão linguística ao menos dá para ver a olho nu uma relação ascendente entre as duas variáveis
Acho que bom código não se limita a resolver o problema; ele o resolve de uma forma legível e modularizada
A parte de resolução de problemas da programação exige habilidade matemática, e a parte de estruturação exige habilidade de escrita. Código bagunçado fica difícil de reler ou expandir depois, e acaba atrapalhando a própria resolução do problema
Provas matemáticas longas também exigem capacidade de organização, mas na matemática parecem existir mais “grandes saltos” ou conceitos essencialmente complexos aos quais é difícil chegar só com escrita
Já na programação há muitos “pequenos passos”, então, mesmo sem ser extremamente inteligente, se a pessoa for persistente e construir componente por componente, sem dependências em excesso, pode criar programas impressionantes
Na prática, passa-se mais tempo lendo esquemas de bancos de dados e de interfaces para entender o comportamento do que fazendo manipulações matemáticas
Existem exceções, como engines de jogos, mas até em gráficos 3D muitas vezes não é preciso mais do que o começo de álgebra linear
Muitas vezes, código não modularizado é mais legível e mais rápido; em linguagens de baixo nível ou com gerenciamento manual de memória, a melhor solução, ou a solução correta, às vezes fica distante da legibilidade
A legibilidade depende de quem está lendo e vem depois dos requisitos formais
Pessoalmente, prefiro funções longas, bem organizadas e modularizadas apenas no mínimo necessário. Fronteiras de arquivos e o contexto de novas funções, ou seja, trocas de contexto, foram a maior fonte de complexidade e bugs na manutenção e na expansão
A modularização aumenta essas fronteiras, esconde a complexidade e pode tornar problemas de organização mais difíceis de raciocinar e corrigir. Funções longas podem ser menos legíveis no começo, mas acho que criam um modelo mental mais claro e levam a soluções melhores
Diferentemente de algo cuja interação com outras coisas é complexa, um conceito complexo por si só parece mais próximo de uma ferramenta sob medida dentro de uma prova do que de um objeto de uso geral
A frase “programação tem muitos pequenos passos” foi bem colocada. Muitas vezes penso que uma memória de trabalho mediana pode até ajudar programadores que escrevem código sustentável
Afinal, se você não consegue lembrar o que escreveu 3 minutos atrás, não consegue produzir código espaguete que funcione. Claro que é uma hipótese bem autojustificadora
O mesmo vale para evitar dependências desnecessárias entre componentes e analisar o problema para encontrar partes separáveis
O frustrante ao ensinar programação é a pressão para manter sempre a postura de que “qualquer pessoa necessariamente consegue aprender a programar”
Muitas pessoas que tentam aprender programação já começam com uma motivação confusa ou equivocada, e pode ser muito mais eficiente desenvolver outras habilidades. Não é uma questão de elitismo; quer dizer que eu também posso não conseguir fazer coisas que outras pessoas fazem naturalmente
O esforço de fazer uma divisão longa de cabeça é parecido com o esforço de acompanhar um código espaguete obscuro
Dá para ficar rápido e bom em divisão mental, mas ainda assim nunca entender o teorema fundamental do cálculo
Existem pessoas que se viram bem no meio de código lixo e, como são pagas para isso, acabam ficando boas por necessidade, mas fica ambíguo em que parte da programação elas ficaram boas
Quando sinto que no trabalho estou apenas praticando algo como uma divisão longa mental, sempre procuro um novo emprego. Se o custo for ficar para trás, dinheiro nenhum vale a pena
Embora o estudo de Prat et al. (2020) sugira que, no aprendizado de Python, a aptidão linguística é um preditor melhor do que a habilidade numérica, é preciso lê-lo com cuidado, pois isso pode ser facilmente simplificado demais
O que o estudo mediu foi a numeracia funcional, isto é, a capacidade de resolver problemas cotidianos com números. Isso é bastante diferente da matemática avançada frequentemente associada à programação, como lógica formal, abstração simbólica e linguagens formais
O que importa para entender recursão, inferência de tipos e projeto de algoritmos não é aritmética básica, mas essas capacidades mais abstratas. Portanto, o fato de a numeracia funcional ter baixo poder preditivo neste estudo não significa que o raciocínio matemático profundo seja irrelevante para a programação
Além disso, a linguagem estudada foi Python, projetada para ser legível e próxima da linguagem natural. Isso pode favorecer pessoas com forte habilidade linguística, mas talvez não se generalize para C, Lisp ou Haskell, que têm maior densidade simbólica e lógica
Linguagem e matemática não são domínios opostos; elas compartilham bases cognitivas como memória de trabalho, atenção executiva e processamento de estruturas hierárquicas. O ponto central não é qual dos lados “vence”, mas como eles interagem e se complementam em diferentes contextos de programação
A academia passou décadas tentando formalizar muitos aspectos da programação, mas ainda parece não entender a baixa correlação entre graduados em ciência da computação e programadores inovadores
No mundo real, muita gente que entrega resultados aprende recursão naquele momento de “ah, então é para isso que existe recursão” depois de bater numa parede com outros métodos. Não é estudando abstração simbólica, semântica denotacional ou teoria dos tipos
A verdade inconveniente é que quase tudo na programação profissional e inovadora não usa a matemática avançada obrigatória dos cursos de graduação
Acho que a dureza desse tipo de formação é mantida em grande parte por um “eu tive que fazer, então você também tem” e pelo papel de porteiro acadêmico
Quando você fica muito bom em programar e entra na fase mais produtiva da sua vida, isso parece linguagem. Você passa a se expressar como se estivesse simplesmente falando
Esse resultado do estudo me parece bastante plausível. Sempre li muito bem e muito rápido, e essa habilidade foi imensamente útil na minha carreira de programação
Minha nota em matemática no SAT foi 710, o que era boa, mas no fim dos anos 1990 tirei 800 em verbal no SAT
Quando comecei meu projeto de mestrado em redes de sensores sem fio, meu orientador imprimiu o código-fonte do TinyOS e me disse para estudá-lo por uma semana e voltar quando achasse que tinha entendido o suficiente
Essa experiência foi formadora e, desde então, sempre que entro em um novo projeto, dedico tempo a ler o código e tentar entender como tudo se encaixa
Hoje sou desenvolvedor web sênior e ainda não sou bom em nada além da matemática básica necessária para o dia a dia. Mas, graças a 18 anos no setor de alimentação, faço aproximações de porcentagens bem rápido
Os melhores programadores com quem trabalhei ainda tinham forte pensamento linguístico. Mesmo sem precisar, lidavam com várias línguas/linguagens ou tinham um histórico de longa leitura de literatura difícil
No mínimo, tinham uma sagacidade peculiar, metacognitiva e metalinguística
Ainda acho que isso continua valendo, mas, com a popularização dos diplomas e dos caminhos de carreira, ficou mais difícil reconhecer isso “na natureza”. Além disso, embora boa arquitetura e capacidade de explicação sejam, na prática, necessárias com muito mais frequência do que criar algoritmos do zero, otimizar para LeetCode naturalmente favorece cérebros mais matemáticos
Mas sou péssimo em matemática e não gosto dela. Ao ler a maior parte dos textos de matemática, sinto algo parecido com dislexia
Eu ia bem no ensino fundamental, mas, quando o foco passou a ser menos algoritmos e mais equações, abstrações e conteúdos cuja aplicação eu não conseguia enxergar, comecei a me frustrar rapidamente
Já programação veio de forma natural e fácil para mim. Ao aprender tópicos considerados “difíceis”, como ponteiros ou recursão, eles na verdade pareciam tão fáceis que eu demorava mais para me convencer de que “não pode ser tão simples assim, devo estar deixando passar alguma coisa”
Em todos os empregos, eu era a pessoa que pegava os problemas “difíceis” ou de “baixo nível”
Quando preciso ler matemática, só consigo entender transformando tudo em etapas e fazendo valores de exemplo passarem por essas etapas e influenciarem uns aos outros. Tenho que transformar tudo em algoritmo
A tentativa de expressar significado por meio de equações e provas não combina comigo; só consigo entender quando transformo, uma por uma, as fronteiras entre todos os símbolos em etapas pelas quais posso caminhar
Acho que programação funcionou para mim porque, em geral, a forma como a encontramos e aprendemos é centrada em algoritmos, com muito menos outros modos de expressão matemática. O contexto sobre o que variáveis e rotinas significam também é muito mais rico do que um monte de símbolos
Se Perl é chamada de line noise, então o que seria a escrita matemática? Comparada ao puro delírio de um cultista de Cthulhu mentalmente quebrado, Perl é a coisa mais clara do mundo
O problema são linguagens com sintaxe matemática. O estilo idiomático de resolver as coisas com variáveis de uma letra e declarações de igualdade é difícil de ler, e simplesmente não consigo ler Haskell
Conceitos igualmente complicados, como mônadas ou type classes, parecem fáceis quando vistos em uma linguagem mais comum, mas, quando tentei aprendê-los em Haskell, não avançava de jeito nenhum. Até um programa no nível de fizzbuzz escrito em Haskell levou muito tempo para eu entender
Minha nota na parte verbal era muito mais alta, e construí uma ótima carreira em engenharia de software trabalhando com muitas linguagens em grandes projetos profissionais de uma empresa gigantesca que todo mundo conhece
“Cérebro linguístico” ou “cérebro matemático” não se sustenta a menos que experimentos mostrem que esses neurônios se dividem em duas áreas não sobrepostas, dedicadas respectivamente à linguagem e à matemática.
A própria matemática também é uma linguagem formal criada por humanos e parte de definições e axiomas da lógica e da teoria dos conjuntos, mas essas definições e axiomas também precisam ser dados primeiro em linguagem humana.
Matemáticos experientes leem teoremas escritos com letras gregas no quadro como se fossem inglês comum, o que sugere que pensam neles como pensariam em inglês comum.
Claro, se quiserem, também poderiam evocar na mente uma representação visual isomórfica a essa linguagem.
As expressões “cérebro linguístico” e “cérebro matemático” são apenas ficções úteis, e não importa se, na prática, são pedaços de carne diferentes.
Mesmo assim, a maioria concordaria que resolver problemas, expressar pensamentos em palavras e expressar pensamentos em matemática são habilidades muito diferentes.
Como na frase de Henri Poincaré: “a poesia é a arte de dar nomes diferentes à mesma coisa, e a matemática é a arte de dar o mesmo nome a coisas diferentes”; no fim, vejo isso como algo mais próximo da capacidade de dar bons nomes, especialmente a abstrações.
Mas, pela minha experiência, o SAT de 20 anos atrás também tratava de muitas abstrações, como analogias, na seção verbal, e a matemática era parecida. Na vez em que fiz, tirei 660 em verbal e 650 em matemática, quase a mesma coisa.
Oliver Sacks escreveu sobre os efeitos colaterais curiosos de traumatismos cerebrais.
Também seria possível experimentar causando lesões em várias partes do cérebro de matemáticos ou escritores, mas a estimulação neural ou a anestesia de áreas do cérebro talvez mostrem algo.
Essa afirmação é estranha em vários sentidos. Eu não acho que existam entidades como “cérebro linguístico” ou “cérebro matemático”, mas, ao mesmo tempo, muita gente não sabe o que é matemática, e essa evidência poderia até ser vista como apoio à ideia de um “cérebro matemático”.
Matemática não é cálculo; é sobre padrões. Quando se entra em álgebra, a pessoa pensa: “por que aparecem letras na matemática?”, mas, indo mais adiante, acaba pensando: “por que aparecem números na matemática?”.
A grande tragédia do ensino de matemática é o foco excessivo em cálculo. Temas úteis como teoria dos grupos, combinatória, grafos, teoria dos conjuntos e teoria das categorias têm fundamentos que até crianças podem entender, mas só são ensinados na graduação em matemática ou na pós-graduação.
Esses temas têm uma profundidade enorme, mas muitas das partes que formalizam formas de pensar podem ser compreendidas por crianças. Como exemplo, recomendo Visual Group Theory[0].
Matemática é sobre abstração, mas, curiosamente, nós a guardamos para o “fim do jogo”.
Posso afirmar com segurança que entender essas coisas acelera o aprendizado e afeta profundamente a forma de pensar. Mas é preciso levar essa abstração a sério, sem se limitar dizendo que ela é apenas uma ferramenta para aplicações específicas.
Muita gente tem dificuldade com problemas contextualizados, mas, mesmo que a situação ridícula envolva o primo Throckmorton tentando comprar 500 melancias, no fim isso ainda faz parte de conectar matemática e realidade.
A razão pela qual a matemática “avançada” acelerou meu aprendizado é que a matemática nesse nível ensina abstração, ou seja, uma forma de pensar. Mesmo sem usar equações, ela ajuda enormemente.
Na verdade, matemática não é escrever equações, mas, quando as coisas ficam complexas, equações ajudam muito, então nós as usamos.
[0] https://www.youtube.com/watch?v=UwTQdOop-nU&list=PLwV-9DG53N...
Por exemplo, eu nunca tinha ouvido dizer que matrizes são uma abstração útil, ou uma notação abreviada, para representar equações lineares.
O mesmo vale para números imaginários: eles são uma abstração inventada para facilitar certos cálculos.
Acho que teria sido bom aprender do ponto de vista de como essas abstrações surgiram e por que são úteis.
“Na aula de música, pegamos a partitura; quando o professor escreve notas no quadro, nós as copiamos ou as transpomos para outra tonalidade. Precisamos escrever corretamente as claves e as armaduras de clave, e o professor é muito exigente quanto a preencher completamente as semínimas. Uma vez acertei uma questão sobre cromatismo, mas não ganhei pontos porque a direção das hastes estava errada.”
https://en.m.wikipedia.org/wiki/A_Mathematician%27s_Lament
Eu também tive a experiência de aprender álgebra abstrata por conta própria e ver minha capacidade de aprender e raciocinar acelerar.
Basicamente havia quatro trilhas: uma terminava Álgebra 1 no último ano; outra fazia trigonometria no último ano; uma terceira também ia até trigonometria, mas sem pré-cálculo; e só a última chegava a trigonometria e pré-cálculo.
Essa última turma ainda era subdividida: alguns faziam apenas pré-cálculo; alguns faziam Cálculo 1 e AP Calculus AB ou IB Math SL; e um grupo menor fazia AP Calculus BC ou IB Math HL.
Na minha série, cerca de 20 alunos, de uma turma de formandos de 500 a 600, fizeram a prova AP Calculus AB.
A própria expressão “habilidade linguística e capacidade de resolver problemas” já é o primeiro sinal de alerta. O título transformou isso em uma questão apenas de linguagem
É bastante óbvio que a capacidade de resolver problemas é relevante, mas a linguagem é menos clara
Passei a maior parte da vida programando, mas não me considero uma pessoa que se expressa bem. Minha habilidade linguística é mediana, e aprender uma nova língua natural parece pouco promissor
Por isso fico cético e, ao olhar o estudo, antes de tudo “matemática” foi substituída por numeracia. Acho que programação é mais próxima de álgebra, mas mesmo assim é menos rigorosa e mais fácil de depurar
A medição de numeracia no estudo era uma escala baseada em Rasch que avaliou 18 itens de numeracia em várias escalas e depois escolheu os 8 com maior poder preditivo
Além disso, este estudo agora usa dados de 5 anos atrás
Se alguém consegue resolver o problema, mas não consegue explicar qual é o problema nem por que a solução o resolve, é difícil chamá-lo de bom solucionador de problemas
Uma pessoa que explica bem o problema, mas não consegue pensar numa solução, já é melhor do que muitos programadores por aí, e eu preferiria trabalhar com ela do que com alguém que simplesmente joga a solução sem o “processo de resolução”
Na verdade, sem essa capacidade de expressão, é difícil até entender, em um sentido primitivo, o que é resolver problemas
Nesse contexto, criatividade pode ser a capacidade de reformular o problema de uma forma mais acessível. Em muitos casos, esse enquadramento sugere uma solução óbvia ou um conjunto de soluções com trade-offs claros
Vi uma correlação bastante interessante entre pessoas que aprendem bem programação e pessoas que se saem bem em spelling bees de inglês
Parece parecido no sentido de executar um processo algorítmico ao mesmo tempo em que se guarda na cabeça muitas anedotas e exceções obscuras às regras
Meu cérebro parece adequado para armazenar e recuperar esse tipo de dado, e isso também tem alta correlação com coisas como interfaces CLI e estruturas de comandos peculiares
Vejo com firmeza a definição de “cérebro linguístico” e “cérebro matemático” como uma falsa dicotomia e neurociência fajuta
A matemática é, por si só, um conjunto de símbolos criado para expressar conceitos, ou seja, uma linguagem
Este estudo dá a impressão de se esforçar para dizer algo que a maioria já sabe: que, com interesse, motivação e oportunidade, qualquer um pode se tornar um bom programador, matemático ou qualquer outra coisa
Um livro interessante que mostra a mudança na percepção social sobre matemáticos, e por extensão cientistas da computação, é “Duel at Dawn”
A imagem moderna, relativamente recente, é a de um gênio recluso com uma capacidade alienígena, sobre-humana e inata de processar números e informações, às vezes até com insinuações de autismo. É um estereótipo como “Sheldon Cooper”, da série “the big bang theory”
Mas isso é falso
Ninguém nasce com uma capacidade sobre-humana de ser bom em qualquer coisa. Quem é muito bom em algo, independentemente da percepção alheia, é alguém que trabalhou muito duro para ser bom naquilo
No início, critiquei o estudo apenas com base no artigo, mas depois de passar os olhos pelo artigo citado de fato, revisei minhas críticas específicas. Ainda assim, o artigo em si não me parece muito mais do que um argumento eugenista fraco embalado em terminologia de psicologia e estatística
O artigo é extremamente enganoso, e eu quase diria que beira a má-fé
O estudo em si diz que raciocínio fluido e capacidade de memória de trabalho explicam 34%, aptidão linguística 17%, potência nas bandas beta e gama baixa do EEG em estado de repouso 10%, e numeracia 2%
Mas aqui equiparam habilidade matemática a numeracia. O próprio estudo também sugere isso, mas eu discordo fundamentalmente
Vejo habilidade matemática como algo muito mais próximo de raciocínio fluido do que de numeracia