Or maybe, as my 5th-grader says, "There's school math, and then there's fun math". Programs are not arithmetic, that's true. I think Ms Mei's view of "math" is impoverished, and this blog post is proof.
TL;DR: This guy thinks that because people don't have to know math to do it; programming is not math. He points towards specifically "easy to use" high level purpose specific languages as proof. He makes somewhat of a point in that math is becoming less important, and "developer" is versatile enough for space for non-maths-guys.
But given that reality is better understood with maths, and understanding is essential for building upon/extending, you are better off with maths. Unless someone else did or does the maths for you, in which case you're not doing anything too special.[1]
"working out for them, if the fleets of Teslas on 280 are any indication."
Tesla's, build by a man with excellent thick and heavy education. Using mostly mathematical engineering.
"If you took a dynamic methods class in school, you know that big-O notation is pretty much meaningless in the real world. "
Whoop whoop here comes a guy that never works with big N.
"An algorithm that is O(n2) for arbitrary data may actually be constant time (meaning O(1)) on your particular data, and thus faster than an algorithm that is O(nlogn) no matter what data you give it."
Yep. That's not really a magical realization. In fact, if you paid attention in school it was all very well explained (hopefully). We call it typical or worst case, typical being over "averaged" data.
"Indeed, programming is often concerned with logic. [interrupted]"
Golly, did you know maths and logic are both internally coherent truth systems? That that makes them inherently similar and extending into eachother? Principia Mathematica stuff.
"[cont] But the same logical concepts are embedded in our human languages.""
Oh man
"Math is just a formalization of the concepts we use every day when we construct sentences and communicate with other humans."
Nope. In fact, this sentence is so ambiguous I cannot reason directly and meaningfully against it. Concepts, like "your mom", are in fact unformalizations of maths. Huh? Nouns are numbers? Or relationships? I think he just means "there is relationships and they make sense, just like in language".
"The best writers and speakers understand that, and can construct logical statements in human language that are easy for other people to evaluate. Sometimes they even change people’s minds about things."
Believe me, logical is not the most important thing. In fact, it's one of the least important things.
[1] - nope, most people that make money do it with something understandable and useful. Rarely something special. After all; if everyone can buy it, is it really still special?
100% agree with this. Anecdotally, I know a lot of people who would be great at programming but they'd never consider it because of their pre-conceived notion that they'd have to be good at math first.
I've never been particularly good at math, and learned enough to get by in my CS theory classes. I hardly ever use math to program, unless the problem is specifically math-based or geometry-based. To me, programming is communication and organization.
For me, programming is math because nowhere else in my experience do I have the degree of certainty that I have in programming. The article seems to think that calculus is the archetype of mathematics, but integers are mathematical objects as well. As natural numbers, 1+1=2 - always. Just like programming. Except the natural numbers never fail due to a failed disk drive, power supply, fan, electrostatic discharge, etc, HOWEVER, those externalities are never a part of programming (just as sleep deprivation is never part of mathematics) unless you're explicitly modelling failures, and in that case, you're making a mathematical model of a system that includes failures. Outside of programming and mathematics, entities and operations on them are usually much less reliable.
When you program, you manipulate a mathematical object, not the physical embodiment of that object. If you're dealing with the physical embodiment, you're a chip designer. Even at the level of FPGAs, your dealing more with the mathematical model of the device than with the details of the device itself.
There are different types of programming, ranging from directly applied theory, for example scientific modelling, to solving everyday problems, for example creating an interface to a health system. In the best case multidisciplinary teams will work together to solve problems to support many perspectives. Pure math is sometimes necessary, but in many cases it's not, and the projected requirement to be a math expert to participate in formulating new digital connections is a very harmful force causing digital illiteracy and wasted opportunities for participation.
9 comments
[ 912 ms ] story [ 97.0 ms ] threadOr maybe, as my 5th-grader says, "There's school math, and then there's fun math". Programs are not arithmetic, that's true. I think Ms Mei's view of "math" is impoverished, and this blog post is proof.
But given that reality is better understood with maths, and understanding is essential for building upon/extending, you are better off with maths. Unless someone else did or does the maths for you, in which case you're not doing anything too special.[1]
"working out for them, if the fleets of Teslas on 280 are any indication."
Tesla's, build by a man with excellent thick and heavy education. Using mostly mathematical engineering.
"If you took a dynamic methods class in school, you know that big-O notation is pretty much meaningless in the real world. "
Whoop whoop here comes a guy that never works with big N.
"An algorithm that is O(n2) for arbitrary data may actually be constant time (meaning O(1)) on your particular data, and thus faster than an algorithm that is O(nlogn) no matter what data you give it."
Yep. That's not really a magical realization. In fact, if you paid attention in school it was all very well explained (hopefully). We call it typical or worst case, typical being over "averaged" data.
"Indeed, programming is often concerned with logic. [interrupted]" Golly, did you know maths and logic are both internally coherent truth systems? That that makes them inherently similar and extending into eachother? Principia Mathematica stuff. "[cont] But the same logical concepts are embedded in our human languages."" Oh man
"Math is just a formalization of the concepts we use every day when we construct sentences and communicate with other humans." Nope. In fact, this sentence is so ambiguous I cannot reason directly and meaningfully against it. Concepts, like "your mom", are in fact unformalizations of maths. Huh? Nouns are numbers? Or relationships? I think he just means "there is relationships and they make sense, just like in language".
"The best writers and speakers understand that, and can construct logical statements in human language that are easy for other people to evaluate. Sometimes they even change people’s minds about things."
Believe me, logical is not the most important thing. In fact, it's one of the least important things.
[1] - nope, most people that make money do it with something understandable and useful. Rarely something special. After all; if everyone can buy it, is it really still special?
I've never been particularly good at math, and learned enough to get by in my CS theory classes. I hardly ever use math to program, unless the problem is specifically math-based or geometry-based. To me, programming is communication and organization.
When you program, you manipulate a mathematical object, not the physical embodiment of that object. If you're dealing with the physical embodiment, you're a chip designer. Even at the level of FPGAs, your dealing more with the mathematical model of the device than with the details of the device itself.