|
Although the study by Prat et al. (2020) suggests that linguistic aptitude is a better predictor than numeracy for learning programming in Python, it should be read carefully, as it can easily be oversimplified. To begin with, the study measures functional numeracy: the ability to solve everyday numerical problems. This is quite different from the kind of advanced mathematics often associated with programming, such as formal logic, symbolic abstraction, or the use of formal languages (as found in denotational semantics or type theory). These more abstract skills—not basic arithmetic—are essential for understanding recursion, type inference, or algorithm design. That functional numeracy has low predictive power in this study does not imply that deep mathematical reasoning is irrelevant to programming. Moreover, the language used in the study is Python, which was explicitly designed to be readable and semantically close to natural language. This may give an advantage to individuals with strong verbal skills, but the results don’t necessarily generalize to languages like C, Lisp, or Haskell, where symbolic and logical density is much higher. Finally, language and mathematics are not opposing domains. They share cognitive underpinnings, such as working memory, executive attention, and hierarchical structure processing. The key is not which one "wins," but how they interact and complement each other in different programming contexts. |
No they're not. Academia has spent decades trying to formalize many aspects of programming and continues to be confused by the lack of correlation between comp sci grads and innovative programmers. Why is it that the drop-outs are succeeding so wildly?
Recursion, for example, is learned by most of us real world achievers when we hit a brick wall in programming that other methods won't solve, and we have that aha moment of "this is why this exists". Not because we studied advanced math with symbolic abstraction, denotational semantics and type theory.
The uncomfortable truth is that almost all of professional programming and innovative programming (creating useful stuff never before seen) never uses any of the advanced math skills that are prerequisites in every degree program. I think much of the sadism around teaching this is perpetuated by "I did it so you have to" and academic gatekeeping.
When you get really really good at programming and hit the most productive zone in your life, it feels like language. That you have the ability to just say it.