Good code doesn’t just solve a problem, it solves it in a way that’s readable and modular.
I think the problem-solving part of coding requires math skills, while the organization part requires writing skills. The organization part affects the problem-solving part, because if you write messy code (that you can’t reread once you forget or extend without rewriting) you’ll quickly get overwhelmed.
Writing large math proofs also requires organization skills, since you’ll refer to earlier sections of your proof and may have to modify it when you encounter issues. But to me, math seems to have more “big steps”: sudden insights that can’t be derived from writing (“how did you discover this?”), and concepts that are intrinsically complicated so one can’t really explain them no matter how well they can write. Whereas programming has more “small steps”: even someone who’s not smart (but has grit) can write an impressive program, if they write one component at a time and there aren’t too many components that rely on each other.
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.
This totally makes sense to me. I've always been a very good / fast reader, which has been incredibly useful in my programming career. I had a good SAT math score (710) but got a perfect score (800) on the SAT verbal (in the late 90s).
I remember when I first started working on my Master's project on wireless sensor networks, my advisor sat me down and said "I think I know a good project for you. I want you to print out the source code for TinyOS, study it for a week, and come back to me when you think you know enough to make these changes." This was a sort of formative experience for me, and ever since when joining a new project I made sure to take the time to read through the code to understand how things fit together.
There is no such thing as a "language brain" or a "math brain" unless you show experimentally that those bunch of neurons can be grouped into two non-overlapping regions dedicated to "language" and "mathematics".
Mathematics itself is a human-made formal language that can be bootstrapped from definitions and axioms of logics and set theory, which have to be given in human language first.
Experienced mathematicians read formal theorems written in Greek letters off their blackboards as if it was normal English, suggesting they think about it like it was just normal English. This is not to say they cannot also view in front of their mental eye visual representations isomorphic with that language if they chose to.
It think this is silly on multiple accounts. I'll claim that there's not real thing such as a "language brain" or "math brain." I'll also claim that most people don't know what math is, and that their evidence supports a "math brain".
Math isn't about calculations/computations, it is about patterns. You get to algebra and think "what are these letters doing in my math" but once you get further you think "what are these numbers doing in my math?"
A great tragedy we have in math education is that we focus so much on calculation. There's tons of useful subjects that are only taught once people get to an undergraduate math degree or grad school despite being understandable by children. The basics of things like group theory, combinatorics, graphs, set theory, category theory, etc. All of these also have herculean levels of depth, but there's plenty of things that formalize our way of thinking yet are easily understandable by children. If you want to see an example, I recommend Visual Group Theory[0]. Math is all about abstraction and for some reason we reserve that till "late in the game". But I can certainly say that getting this stuff accelerates learning and has a profound effect on the way I think. Though an important component of that is ensuring that you really take to heart the abstraction, not getting in your own way by thinking these tools only apply in very specific applications. A lot of people struggle with word problems, but even though they might involve silly situations like having a cousin named Throckmorton or him wanting to buy 500 watermelons, they really are part of that connection from math to reality.
This is why "advanced" math accelerating my learning, because that "level" of math is about teaching you abstractions. Ways to think. These are tremendously helpful even if you do not end up writing down equations. Because, math isn't really about writing down equations. But we do it because it sure helps, especially when shit gets complicated.
[0] https://www.youtube.com/watch?v=UwTQdOop-nU&list=PLwV-9DG53N...
> language ability and problem solving skills
First red flag is here. The title rewrote this to be language only. That problem solving skills are relevant is pretty obvious, but language less so.
I’ve been programming for most of my life and I don’t consider myself a very good speaker. My language skills are passable. And learning new languages? Forget it. So I’m skeptical. Let’s look at the study.
First of all, “math” becomes “numeracy”. But I think programming is probably closer to algebra, but even then it’s less strict and easier to debug.
> Assessed using a Rasch-Based Nuemracy Scale which was created by evaluating 18 numeracy questions across multiple measures and determining the 8 most predictive items.
Also, the whole thing is 5 years old now.
I have found a fairly interesting correlation between people who are good at learning programming and people who are good at English spelling bees. Something about holding a lot of anecdotes and esoteric rule exceptions when performing an otherwise algorithmic process.
As others have commented, I believe strongly that to define “language brain” and “math brain” is a false dichotomy and bunk neuroscience. Mathematics IS a language in itself; a collection of symbols created to express concepts. This study works really hard to make a statement that most people already know: anyone can be a good programmer, mathematician, “whatever” if they have the interest, drive, and opportunity to do it.
An interesting book that illustrates the evolving societal perception of mathematicians (and by extension, computer scientists) over time is “Duel at Dawn”. The modern (sic recent) notion is the reclusive genius (maybe even suggestion of autism) who possesses the alien, superhuman, unattainable, too-cool-for-you ability to process numbers and information that you can only be born with. (Those familiar with the TV show “the big bang theory” would recognize the trope of the “Sheldon Cooper” character.) This is False.
The reality is that no one is born with the super-human ability to do anything - anyone who is very good at something has worked very hard to get good at that thing regardless of the perception.
edit: my initial criticism of “the study” was based upon the article. On a skim of the actual cited paper, I revised my specific criticism, but the actual paper still comes off as no more than a mild eugenics argument dressed in psychology and statistics jargon.
The article is extremely misleading, I dare even say almost malignant.
The study itself claims:
- fluid reasoning and working-memory capacity explained 34%
- language aptitude (17%)
- resting-state EEG power in beta and low-gamma bands (10%)
- numeracy (2%)
They take math skills to equal numeracy. The study itself implies this too. I disagree on a fundamental level with that. Math skills align much more closely to fluid reasoning than to numeracy.
At the beginning, the article mentions correlation with language skills AND problem-solving. Focusing only on language skills in the second half is misleading. According to the abstract of the original paper, problem solving and working memory capacity were FAR MORE important.
Also, the article doesn't mention "math skills". It talks about numeracy, which is defined in a cited paper as "the ability to understand, manipulate, and use numerical information, including probabilities". This is only a very small part of mathematics. I would even argue that mathematics involves a lot of problem solving and since problem solving is a good predictor, math skills are good predictor.
100% agree, I've been saying this for years. I'm terrible with arithmetic but great with symbols and relations. Recursion is also fundamentally linguistic, and although our internal "stacks" for processing it naturally are quite small, language remains the easiest demonstration of recursion in our daily lives.
Oddly, I also use spatial intuition when thinking about stuff like stacks and the shape of data structures.
This makes sense for my path to math. In high school I was bad at math and good at learning languages. Then I started learning Python and realized that it was just like learning a language. Then at some point I realized math notation was just another language for expressing the kinds of things you could express in Python. Now I'm in a job where I do math every day and I read math textbooks for fun.
It helped that Python was meant to resemble natural language. I had learned C++ and Perl before but they never stuck, because I never made the connection to language. Ironically, since Perl was designed by a linguist!
I've noticed that the people who initially grok programming language syntax are often better at learning new symbolic systems, but I think this is actually due to a persistent type I error their brains make that is OK for early learning.
People who end up being the best programmers have a deeper appreciation for semantics and information flow, but tend to commit more type II errors early on, making them inferior intro CS students.
Much of the CS curriculum (and typically also the required maths curriculum) in universities still favors the first type of student over the second, driving out the most capable and creative minds.
I'm strong in the belief that kids having lower reading scores is directly related to lower math scores. Learning to decode words is directly translatable to learning to decode equations. Down to some of my favorite math passages would include how to read something as it introduces a symbol or other construct.
> There’s a lot of people out there who “aren’t math people,” but they just might be computer science people
This is beyond silly from my perspective. I know the field of CS is vast, but this seems to conflate programming with CS. My school was more theory heavy but there definitely came a point in certain paths of study where I didnt touch a line of code for a year, just pure math. I struggle to even understand how someone can think of this sentence - computer science at its core is underpinned by mathematics.
I just started reading this. Only 42 people in this study and only 36 completed the activity. I am a bit skeptical about the findings with such a small sample size.
I wonder if this finding hold across programming languages. I suspect the conclusions would be different for people programming in APL instead of Python, for example.
I'm very curious what this math pretest looked like, whether it was "proper" high level math or, like, computing some trig problems. Folks who have aptitude with algebra or number theory or topology, I'd expect that to be correlated, but not to rote computational math.
My take on skills related to programming is that it's a dance between writing skills and working memory. I've measurably bad working memory, which had led to compensation with writing skills, which led to a programming style that's fairly disciplined and focused on "wholesome" readability. A downside is that I still struggle interacting with code that's written by the working-memory-oriented programmers.
I've recently taken up a daily practice to improve my cognitive skills. Currently I'm using NeuroNation, and it is quite great. The stimulus to start the practice was getting my memory tested (clinically) and learning that it's below norm.
So maybe it makes sense that LLMs do okay at programming even though they lack the ability to reason?
I tell people all the time that the single greatest tool an aspiring lawyer can have is a background with programming, as the analytical and algorithmic mindset is FAR more important than being "good at public speaking" or any of the other base skills often cited as desirable for lawyers. I've also said the second greatest tool an aspiring lawyer can have (in my personal opinion) is a significant background in foreign language learning, as that is a skill that is closely related to programming, though a bit abstracted and coming from a different angle. I'm going to see if I can use this article to support that.
Programming education should have more humanities such as writing, sociology, epistemology and design, and not nearly as much maths.
I certainly don’t dispute the empirical validity of the findings from the study - but there are important nuances to consider as well. I am certainly more naturally-attuned to languages as-far as language-learning and reading than mathematics, but I have also found myself understanding more mathematical and theoretical linguistics as well. I also love programming.
It wasn’t until high school, when I tested-into the highest math class that the school offered, that I began to unlock (with some initial struggle) more logical and procedural reasoning specific to mathematics that I had always done well in, but never explicitly went above-and-beyond in, despite hints of such in arithmetic competitions that my school would hold and that sort of thing. I just think my brain works well for both the linguistic aspects of programming (more naturally) and the computational problem-solving aspects of programming. Certainly there are individuals who have strengths in both cognitive aspects, despite being more naturally-attuned to one versus the other, at least presumably.
Perhaps this shows a cognitive profile that has natural strengths in both "brains", or maybe this highlights limitations of the article's potentially narrow definitions of "language" and "math", implying a more complex intellectual landscape.
Interesting findings nonetheless.
Abstraction is a huge factor in this too. Language may be dominant because we are at a stage in which the vast majority of programming is little more than hooking together tidy abstractions that are already highly optimized and predominantly organized linguistically.
It you ever need to get into the guts of a system or need to solve bleeding edge problems for which good abstractions don't yet exist, the "math brain" becomes significantly more relevant.
I say this as someone who studied literature and philosophy. The majority of what I know about programming and software engineering I either taught myself or learned from the tutelage of others on the job. Early on in my career, a solid mathematics background was, indeed, not that relevant. These days, though, I'd be lost without it. Whether you like it or not, when it comes to doing real engineering you necessarily need to establish bounds and prove things about those bounds and typically you'll need to do this numerically or at the very least using inductive structures. Linguistic aptitude is still relevant, but it helps less in these cases.
This reminds me of the following quote:
"Coding largely involves the 'logical part' of your brain. It tends to not include the 'language part' of your brain.
This is one reason why comments you add to code are so useful: they force you to engage both parts of your brain and therefore get better results.
This is also why when you go to explain a problem to a colleague, you often have a flash of brilliance and solve the problem: you are reframing the problem using a different part of your brain and the different part of your brain helps solve the problem."
I'm sure some readers here will say this is preposterous and there is no such thing as having "two parts of your brain".
To them I suggest watching:
1. "You are are two" (about people with their corpus callosum being severed) https://www.youtube.com/watch?v=wfYbgdo8e-8
2. "Conscious Ants and Human Hives" by Peter Watts https://www.youtube.com/watch?v=v4uwaw_5Q3I
Couldn't this difference be explained by the fact that the lessons were in English? If your language skills are poor, it's going to be hard to read the directions. You'll definitely be slower, which was the primary finding around language.
That side, I wonder if early programming was much more math heavy, and higher level languages have successively reduced that need over time.
This tracks with my experience perfectly. Hated the math at my Computer Science program in university, barely passed the math courses while excelling at the programming courses, loved taking linguistics, foreign languages, and literature as electives. To this day, programming, foreign languages, and literature is what I do all day every day.
If we distinguish between form and content: Mathematics = form; language = content. However, mathematics is only one type of form, and subject-predicate-object grammar also belongs to form, yet grammar falls under language.
For example: "Matter determines consciousness." If we apply first-principles thinking—where does matter come from? This statement then becomes: "XXX created matter, and matter determines consciousness." At this point, our interest shifts to the first-principle subject "XXX," focusing our attention on it. Who is XXX? God?
In this thought process, we use the subject-predicate-object grammatical structure to trace back the original subject "matter" in "matter determines consciousness"—where does matter come from? Although this formal reasoning does not involve specific mathematical formulas, it indeed employs formal logic to uncover a flaw and opens the door to deeper rabbit-hole
There's only a handful of key concepts people need to learn to understand the basics of 'coding'. If you understand what a variable is, how they're scoped, how step-wise transformations happen, and what loops are, you know 90% of "coding". I knew it at age 13 in 1981 doing "Basic" programming. Sure mastery of the art of coding does take decades, but that's just just adding polish, rather than capability.
Math is VASTLY different with VASTLY more concepts that are all much more abstract in nature and harder to understand the infinite numbers of different ways one mathematical construct can be applied to another. A person can "master" coding, but no one ever masters math.
So comparing math to language or to coding is silly. They're completely separate domains. Just because each of the three can encode and represent the other two doesn't make them similar in any way whatsoever.
Notwithstanding Puritanism like "language is maths" or "logic is maths" I definitely agree.
I learned to program when I was a kid and my maths skills were super basic. Programming can almost be distilled to something as basic as "if this, then do that", plus "do this x times". Then read API documentation and call functions that do what the docs say.
With just this basic understanding you can create a lot of stuff. The maths is obviously the foundation of computation, but to be a programming language user and build stuff, you don't actually need to understand most of it.
In university I did eventually do some math-y stuff (econ degree so prerequisites in stats, maths and even CS) and it helps with certain stuff (understanding graphics programming, ML and LLMs, plus knowing maths on its own is useful), but I still don't feel it was strictly necessary. Language and basic logic is enough IMO.
Started programming over half a century ago. The insurance company I was working for gave me a joint life actuarial evaluation problem for which I wrote a Fortran program, picked up from a book. My uni student buddy let me use his ID so I could drop decks into their IBSYS. Turnaround was about a day. My career as a professional manual reader began.
Well yes, my high school maths were in the high 90s - more than my language scores in French, German and Latin with some off curricular Russian. I guess being a polymath helps.
Unless you are doing an engineering or mathematical application you don't need much math, especially as you can just call a function in the vast majority of the time.
I did a number of software products and operating system modifications without using any math beyond arithmetic operations.
I was a resource for other programmers including the odd math PhD.
Of course it does. Math is not programming - it's almost entirely irrelevant to programming and certainly to software and architecture development. Most modern programming only involves math for trivial things like counting.
This classic article explains the real issue - like Mike Gancarz' classic on the Unix Philosophy, this is something all younger hackers should read, but few have, since these are the fundamental ideas that have created our modern world of computers: https://web.archive.org/web/20000529125023/http://www.wenet....
I’m old enough to have caught the tail end of CS being an offshoot of the Math department and I had a gaggle of fellow undergrads who were happy ours had been moved to the Engineering college and upset to know other students at other schools who were still in Math.
I don’t know about for learning but definitely for collaborating and mentoring. And it’s difficult to make a definition of mastery that excludes both of those, so I suppose after a fashion it’s right.
Despite being a professed lover of math, I scored higher on the verbal than the math SAT. There’s a lot of persuasive and descriptive writing in software, particularly if you’re trying to build a team that works smarter instead of finding more corners to cut.
I did not read any mentioning of testing non-verbal IQ. Many math skills also depend on verbal IQ. Verbal IQ correlates strongly with academic performance and probably also with learning new programming languages. I personally have a much stronger non-verbal IQ than a verbal IQ. Often when I think about algorithms, it is all about abstract blocks moving around even before I have written a single line of code. I usually see multiple solutions in my head and often find myself being stuck because I cannot make a choice. I always takes some effort to code the solutions and weed out stupid bugs due to spelling errors mixing up varisbles, but then things work correctly.
In my experience, language skill may or may not matter for programming, but it certainly matters for understanding a problem space. You can be a great programmer, building the wrong thing because you didn’t understand the requirements or see the gap in them and know to ask the right clarifying question, etc.
Lately I’ve also felt language skills matter when writing concise, specific AI prompts. This has become a useful part of my programming workflow in, I suppose, the last year or so. Before that it was knowing “how to Google” well, but that’s less language-dependent in my opinion.
The most obvious way in which I think "math" and "programming" are related is the way they're taught; by repetitive performance of problem sets. I got frustrated in math for this reason; it takes a lot of energy to sit and focus on a whole bunch of hard problems that all "look the same". It was too easy to do 1 or 2 and think "okay, I got it" and then move on, not realizing the repetition was the key to memorization.
I feel the same way about starting learning programming. Repetition, repetition, repetition, until you "get good".
As a self taught programmer with a Communication Studies degree, this definitely resonates. The ability to articulate the problem in code is kind of the starting point for most productive development work.
Personally, I find ruby one of the most readable languages because of the language and its DSLs. To be fair, the DSLs are very readable, but the lines can blur between what is ruby and what is a DSL.
You can make any subject "mathy", because there are relations, ratios, correlation and patterns in everything. My favorite example, is how Chomsky mathified linguistics, and made it esoteric, undecipherable, uncomputable and thereby linguists unemployable, even in research labs.
But as a matter of practice, teaching programming to engineers/scientists, even to mathematicians, is an order of magnitude easier than teaching math to CS folks. Simply quiz job candidates on fp arithmetics, and see how many fail miserably.
Interestingly, I became better at learning human languages after learning a couple of programming languages. I was good at math at the beginning. I guess programming kinda bridged the gap.
My own definition of mathematics for the sake of this comparison:
- If you can write a formal proof, starting from some assumptions and proving some result, it is mathematics. The assumptions are the axioms. Then you use logic, which is the same programming logic, and then you get to some result.
It can be an invariant in a programming function, it can be a more general result, if you can write a proof, it is mathematics. Most algorithms involve proofs, so they are mathematics.
The article is from 2020. Recent LLM developments show that a model trained on math and code is better at coding than one that's trained on language and code without math.
I don't find this too surprising. The study itself was primarily just testing a students ability to identify syntax and remember what various functions do. I wouldn't expect math proficiency to help much in this area vs I would very much expect language to.
It'd be interesting to see correlations (language brain vs math brain) for how easy or hard it is for people to solve new problems with language after they already know the basics.
As an accomplished programmer who is not great at language nor math, I feel like my "modeling brain" is the key to success. I can envision all the aspects of an architecture, its data shapes and program flow, making it obvious which data structures and algorithms to use, or where to look for a bug. I did spend a lot of time naming things though... until ChatGPT replaced the need for a thesaurus.
I had to scroll through most of the paper to find this.
> All participants were right-handed native English speakers with no exposure to a second natural language before the age of 6 years
Which removes a confounder that Python mimics English syntax.
Still if this is a typical study recruiting thirty-some undergrads as subjects it's probably not generalizable, or even replicable given the same experimental setup.
> the requirements for advanced math classes for every computer science major seem unnecessary
Computer science is much more than programming - and I think that most of the value derived is from being able to think about problems, which largely require the abstract type of thinking encouraged by more advanced math. Code is just a tool.
Interesting tidbit:
>>> In this study, high levels of these beta oscillations were associated with faster learning and more programming knowledge
This makes me think those binaural beat programs attuned to beta wave frequency might help with heavy coding sessions?
Can anyone point to studies that confirm/reject this?
Makes sense to me. "Language" is an oft-forgotten part of "programming language." I'm sure math skills probably would better predict, say, ability to do well in advanced theory classes, but programming doesn't require that. It DOES require learning a specialized language.
I feel like I'm using language part of the brain for almost everything. My performance at any task (except purely manual and automatic ones) drops to 0-15% when I can hear someone talking. Alternatively if I manage to focus on the task I immediately stop understanding what's being said.
I'd posit that this is part of why Pascal lost. Making and/or the same precedence as */+ only appeals to mathematicians and gets in the way of ordinary uses for Boolean expressions where you want them lower than the sub-expressions they concatenate in a language-like manner.
For learning a programming environment*
This has the effect of making programming easier, but don't confuse it.
I would agree. Linguistics and literature have always been a strong interest of mine, and many computer scientists. Moreso, I find weaker programmers struggle with spelling, grammar, various dyslexias and torrent-of-thought code organisation.
Counter example: I can pick up any new programming language within 3-6 months and be proficient but it takes a year to pick up some minor fluency in a human language and I still have yet to obtain full fluency in any other language as an adult.
If you are bad at math, don't assume you will be bad at programming. Similarly, if good at math, don't assume you will be bad at programming.
If you try programming and you don't like it chances are you won't be very good at it.
That makes sense.
Probably the most valuable math classes for me, were ones that had me use algebra to solve word problems.
And, fundamentally, all languages describe the same stuff, using different tokens. That is pretty much in line with programming languages.
Those long held assumptions were held by people who aren't professional programmers, right?
Because, if you do what we do, it's obvious that language > math for most of this stuff.
I'd go so far as to say that music > math for programming.
(2020)
As a new computer science professor at a community college, this is a timely article for me that may end up influencing how I teach, especially my introductory programming course as well as my discrete mathematics course.
I guess its the ability to tell long, forking stories, traversing several abstraction layers. Dante Alighieri would be loving this! Its the ability to walk through a mental palace, room for room again.
This says more about our programming languages than it does about the brain.
I've always wondered why FP isn't more popular. I concluded it's because most folks don't like thinking like abstract math.
I could have told you this for free :)
but really it just depends: - web or app information software: logic and language matters more here - doing what Donald Knuth does: math matters more here
Hold your horses. The summary of that article does not offer any proof of what the title says.
* It's a small sample, and they did not analyze the people who didn't complete the course. That's dubious. Those 6 could have had a massive influence on the outcome.
* The summary does not present the actual numbers. These are: "fluid reasoning and working-memory capacity explained 34% of the variance, followed by language aptitude (17%), resting-state EEG power in beta and low-gamma bands (10%), and numeracy (2%)". Note: numeracy, not math.
* The test result was only partially programming related. 50% consisted of the results of a multiple choice test with questions such as What does the “str()” method do?. Linguistic knowledge indeed.
* It's about completing a 7.5 hour Python course. That's learning indeed, but only the very beginning, where abstraction is not in play. The early phase is about welding bits of syntax into working order.
* The numeracy skills required are very low for such tasks, as the tasks are simple, and mainly require thinking in steps and loops, whereas numeracy aptitude is generally measured on rather problems involving fractions.
Edit: the paper uses the Rasch-Based Numeracy Scale for this, which seems to involve estimation and probabilities.
* 17% explained variance is a rather minimal result, and you cannot easily compare factors in such a small design, even if the other one is only 2%. That's a rather hairy statistical undertaking.
* Linguistic expedience might be explain the speed with which the course was followed, since the instruction is, obviously, linguistic. Hence, this factor is not necessarily related to the actual learning or programming.
* The argument from beta waves is clutching at straws.
* The argument that "perhaps women should have more of a reputation for being “good” at programming" because they score better on tests, is --however well meant-- utterly ridiculous. It reverses correlation to causation and then turns that into a fact.
* That linguistic skills are useful for programmers is widely understood. However, this is not because of the actual coding, but because the coder needs to understand the environment, the specs, the users, etc., all of which is transferred via language.
* And of course, the statistical result relies on Null Hypothesis Test Significance, which is rotten in its very foundations.
* Note that the CodeAcademy course "Learn Python 3" is 23 hours in 14 lessons.
Not treating math as just another language for expressing your thoughts is a weird position to take. I cannot take this position seriously.
Whenever encountering such sensationalist headline, it's good to remind ourselves of "[Replication needed]" tag.
Computer science definitely requires math brain
Not sure why the title left out the essential term: it matters more for learning programming
I believe the goal is to encourage those (young people) allergic to math but good in languages to realize they could be good at programming. That's worthy and important (though ironic to use a scientific study to do so).
As for the larger question commenters are raising, I notice often programmers reducing programming to problem-solving, and that to modeling, thence to math writ large; then they prove their point by noting that the most significant algorithms have strong and deep roots in math. The argument is: if the pinnacle of programming is math, then the more math-like programming is (in people and style), the better. (Hence: functional programming and provable algorithms are the epitome)
This argument is invariably made only by math experts, and does have the effect of reducing competition and selecting for like-minded persons, so there's at least the possibility of infection with self-interest and bias to the familiar.
I think the real distinction lies in this: with math, once you have a model, you fit things into that, and exclude other things. You do perfectly, but only in your domain. With language, any differance (any difference that makes a difference) starts to be named and tracked and dealt with somehow. It may grow in confusing ways, but it turns out (like architecture) it actually makes much more sense to adapt the structure to the use and relevance than vice-versa.
Sure, some subset of architecture is engineering by necessity, and it's probably even the hardest subset. But that's also the most portable knowledge and practice, and I would argue, thus easier to find and deploy once you've isolated such a need, particularly since mathy stuff fits nicely in a reusable library.
So math is an important but relatively isolated part of programming, and thinking it's ideal for everything is missing the point that programming matters for some purpose.
"attention is all you need" is but one example of the priority of relevance over structure in systems.
Learning mathematics is likely to benefit more from whatever a language brain is as opposed to whatever a math brain is.
Strangely (I was a math major as an undergrad), I never doubted this. It just feels more like writing.
It's funny that this popsci article instantly succeeded in dividing the HN commenters into math/not-math camps. Porque no los dos?
Programming is the manifestation of thought through the medium of a keyboard and screen. If you are a clear thinker, if you can hold multiple things in your head at once, if you can reason about things and their relations, well, you can be a strong programmer.
It seems wholly unremarkable to me that someone new to Python would not be fazed by it, given it's fundamental basis in words (print, if, etc.) Someone with a background in languages, who can think well enough to explicitly or implicitly pick up the structure of the language, is gonna do just fine. "Oh, so when I see a while, I need to end with a colon" isnt so different from "when I shout, I need to add a ! at the end"
(Java gets a special place in hell for forcing "public static void main" on every beginner.)
Math only really comes into it when you want to reason about things that have a history of being manipulated mathematically, typically for reasons of convenience. You could probably invert a matrix in SNOBOL, but its a lot easier to pull out lists and arrays and linear algebra.
In other words, lets see the follow up paper to this where Python newbies are asked to model the trajectory of a bead on a wire and see how they do.
You know where we got a lot of really solid programmers before we had formal computer science degrees?
English majors.
Math is a subset of language, surely.
This is largely true, but also, the dynamic shifts depending on how learners engage with peers as they move from understanding to synthesis.
In small peer groups (“pods”) that debug and learn together, communication becomes a core skill—and that can actually change how math skills are applied and developed. Language doesn’t just support learning; it reshapes the process.
You guys have more than one brain?
This sounds obvious. To me it seems the majority of developers hardly use any math.
For the 99% of programming I come across, I need about 0% math.
The best programmers were good in Latin at school
Interesting. I grew up most of my life overseas learning various different languages. Anecdotal, but most of the best coders I know are talented writers and often are multi-lingual.
Is 42 participants statically significant?
we'll eventually find that the language brain matters more for math than the math brain.
The language brain is more important than the math brain for reading the first lesson on how to program in Python. Fixed that for you.
Does answering a quiz on the contents of the first lesson on how to program in Python really encapsulate anything concrete about who will and will not be able to actually program in Python?
I've always been disturbed by the disconnect between "first lessons" on programming languages and how I personally actually learn programming languages. I can't help thinking that the researchers have measured something else other than whether people have learned to program.
This is why women are so dominant in the software development field - because women are known to have higher language skills than men.
This mirrors my personal experience. My writing skills have been above average and my parents' presumption was that I would pursue some humanistic studies. I ended up studying software engineering and made a career out of it of almost three decades and counting. Meanwhile my wife who always had a "math brain" has struggled to learn to program at a decent competency level.
the language brain matters for math much more than the math brain.
Isn't math somewhat a language in of itself? If not, a language has surely derived from math.
As a mathematician by trade, the math brain is a language brain. Mathematics is about abstract communication rather than mechanics.
Oh wait neuroscientists, explains it all. A statisticians favourite target for being unable to interpret data correctly.
And yet CS grad programs seem to care about only the math section of the GRE
tautological. math is language.
That is now obvious, any LLM is able to code, and is usually very bad at math. This alone proves that a good part of programming is linked to language not math.
Even if CS is sort of applied mathematics.
After I started my PhD program in CS/AI (late 90's), one of the faculty told me that the GRE verbal score was thing on the application most predictive of student success in the program. Of course, most applicants had perfect or near perfect GRE math scores, so there was no predictive power there. But the application also included the GRE subject test, transcripts, and letters of recommendation.
Honestly, all this "math brain" vs "language brain" stuff just feels off to me - I've always been more of a pattern and abstraction person anyway. Makes me wonderif schools focused more on teaching real abstract thinking early, would way more kids just "get" programming without even stressing over math class?
[dead]
Absolutely. That's why people can be perfectly fluent in a programming language and a high performer at work, but fail an interview algorithms/leetcode problem in that language, as algorithms are math problems that programmers almost never see at work.
The recruiter labels an algorithm problem as a "coding" test, but it's a math test, and concludes that most applicants who claim to be fluent in a programming language can't code and must have lied on their resume.
For context, I don't mind algorithm tests, but I strongly disagree with recruiters presenting it as a coding assessment.
Has anyone here actually read the paper? Heavily clickbait headline, completely exaggerating the study results, which themselves are not very rigorous (to be generous)
Tiny sample size - 36 people completed
Numeracy has R^2 = .27 Language has R^2 = .31
They then run stepwise regression to determine variance contributions, seemingly ignoring their earlier results, and this leads to almost no contribution from numeracy. Why? Because they have ~10% shared variance and stepwise regression is greedy - will just take whatever you give it first.
I can't mention this part enough. If you got a second, very similar language test, and added it to the model, you would _also_ find it has almost no unique variance added.
Every thing they measure is incredibly noisy and they do not once attempt to deal with this. Human based reviewers, time-to-completion, etc.
p-value for "language learning is more significant than numeracy" on the values they give (Steiger test) gives 0.772. Utterly insignificant.
Also, to beat the point home, just think about the argument here: * Numeracy contributes 27% of variance
* Language skills contribute 31% of variance
* After regression step, numeracy contributes only 2% of unique variance. Because you added a correlated variable!