## Math, Programming, and Language Learning 241

An anonymous reader writes:

*There's often debate amongst modern programmers about how much math a professional developer should know, and to what extent programming**is*math. Learning to program is often viewed as being on a spectrum between learning math and learning spoken/written languages. But in a new article, Jeremy Kun argues that the spectrum should be formulated another way: Human language -> Mathematics -> Programming. "Having studied all three subjects, I'd argue that mathematics falls between language and programming on the hierarchy of rigor. ... [T]he hierarchy of abstraction is the exact reverse, with programming being the most concrete and language being the most abstract. Perhaps this is why people consider mathematics a bridge between human language and programming. Because it allows you to express more formal ideas in a more concrete language, without making you worry about such specific hardware details like whether your integers are capped at 32 bits or 64. Indeed, if you think that the core of programming is expressing abstract ideas in a concrete language, then this makes a lot of sense. This is precisely why learning mathematics is 'better' at helping you learn the kind of abstract thinking you want for programming than language. Because mathematics is closer to programming on the hierarchy. It helps even more that mathematics and programming readily share topics."
## Your Results Will Vary (Score:5, Insightful)

The problem with all the articles like this is that they're either written by people who did take math or didn't, and in either case both believe their side is right. The article is clearly written by someone who took a lot of math so, surprise, he thinks math is good for programmers. But I took nothing past Calculus (and have never professionally used even Trigonometry), and I'm a successful programmer, so I think math is unecessary.

Until someone actually does a study on this, it's all gonna come down to "the way I did it was better" ... and that's just noise.

## Re:Your Results Will Vary (Score:5, Interesting)

On the other hand, if you work with RF you will most likely need a lot of math. If you work with high level optimization algorithms you will need Abstract Algebra. If you work with Geolocation you will need a fair amount of high level Geometry, specially Non Euclidean ones.

So in the end the answer is: Higher Math is not necessary in all fields of programming but it is certainly very necessary in many.

## Re:Your Results Will Vary (Score:4, Interesting)

## Re: Your Results Will Vary (Score:2)

Formal logic is a branch of mathematics. It's part of a branch that is called decision and discrete mathematics. Programmers specialise in the application of that branch, just as staticians specialise in statistics and probability.

## Re: (Score:2)

Formal logic is a branch of mathematics.Yes, I know, but very few people except mathematicians think of it that way. Most people consider it to be an entirely different study so I phrased it that way to emphasize that much of computer programming has nothing to do with what the average person thinks of as math.

## Re: Your Results Will Vary (Score:5, Interesting)

In the end, I've always concluded the same, every year this topic comes up (it is just about annual here). I don't want you to know calculus because you'll actually use calculus on the job (though I have an O(N) vs O(log(N)) question on my interviews that you'd better be able to answer).

I want you to know/pass calculus because by the time you've worked that hard at that level of proofs, you've mastered *variable control*. In each level of math, you don't get out of the class having mastered it. You get out of the class having mastered the year that came before it. When you can pass calculus, you have *mastered* functions and analytic geometry (I hire for UI work). Passing those two the year before showed you mastered variable manipulation and proofs in Algebra 2 before it.

So no, you don't *need* calculus on the job, but you need everything below it, and the best proof that you've *mastered* them (not just taken them, but mastered them) is that you've passed a calculus class.

## Re: (Score:3)

Calculus is perhaps not the best measure however. Depending on where you go in the programming field calculus is likely less useful than some decent depth of knowledge in graph theory, abstract algebra, category theory, or combinatorics and optimization. I imagine a number of people would chime in with statistics, but to do statistics right you need calculus (which is an example of one of the directions where calculus can be useful for programming).

Of course the reality is that you don't

needany of those s## Re: (Score:2)

Not every programmer deals with these [mathematical] questions regularly (which is why I donâ(TM)t think math is necessary to be a programmer), but if you want to be a great programmer you had better bet youâ(TM)ll need it.

I don't think you

needmath even to be a great programmer. I do think a lot of great programmers are people who think in mathematical terms and thus benefit from mathematics. But I also believe you can be a great programmer and not be the sort of person who thinks in those terms. I expect the latter is harder, but then I'm a mathematician so I'm more than read to accept that I have some bias in this topic.## Re: (Score:2)

College education wastes countless hours teaching academic stuff that a great majority of programmers will not use on the job, while neglecting critical skills that could be immediately useful in a large .[sic]

Of course there was a time when college education was supposed to be education and not just vocational training.

## Re: (Score:2)

Yes, I've heard the "well rounded" person argument. I can even accommodate it, to a certain extent, but it would stop at being exposed to ideas versus having to become competent at doing calculus problems in order to pass a course. I personally am not interested in doing calculus and haven't made use of it in over 20 years of programming.

## Re: (Score:2)

## Re: (Score:2)

Whether or not you believe that the role of universities *should* be vocational training, the curriculum and organization of institutions of higher education---particularly research universities---is still geared toward that Enlightenment ideal of academia.

Colleges are basically turning into poor imitations of vocational schools. The same is true for some universities. You get the worst of both worlds.

## Re: (Score:2)

If being well-rounded "never really was" the point of college education, why are college students force to take an array of courses outside their field of interest?

## Re: (Score:3)

My diet is what made me well rounded.

## Re: (Score:2)

Because you are a 20 years old know-nothing you arrogant bratand maybe there is more than one thing in the entire wolrd that could be of interest for you ?

Maybe if you weren't an arrogant asshole posting as anonymous coward you wouldn't make such statements. I've been to college and have long-since graduated. Most people go to college because it's a checkbox for higher-paying jobs and a chance to party on their parent's dime and government loans.

## Re: (Score:2)

Or was that too easy?

## Re: (Score:2)

The goal of college is NOT to train you like a puppy to do real work.

That's nice and all, but the vast majority of people go to college to get a well-paying job afterwards. That's what the point of the "major" is for.

You want to be trained ? go to a craft school or whatever you call them in your country.

College is a checkbox to get into higher paying jobs, so your suggestion of going to a "craft" school doesn't help.

PLUS YOU GET TO CHOOSE YOUR SUBJECTS so stop bitching!

Err, no, you don't when your major is something like computer science and they force you into heavy calculus courses. That's the topic under discussion. Try to pay attention.

2 years into the job I have greater mastery of pretty much any aspect of the project we are working on, and my skill-set is improving exponentially, while they almost never learn anything beyond what they know because they lack the methods to learn.

Yeah, that's a lot of bullshit. It's impossible to become a programmer with

## Re: Your Results Will Vary (Score:2)

Just because one does not vote it as mathematics didn't mean it's not mathematics. Only education can fix this, and this education is currently sorely lacking.

## Re: (Score:2)

Higher Math is not necessary in all fields of programming but it is certainly very necessary in many.

... which means that higher maths is really domain specific, and not necessary for programming. Otherwise I could say the accounting or biochemistry were necessary to learn to program, if that's the field I started out in learning to program

## Re: (Score:2)

I love HLSL for how crazy you can get with the math and how easy it is to work with vectors and matrices.

That's probably not the kind of math that is the topic here - you're talking about math as the application domain of the program being written, but most often, the "programming is math" claims refer to the fact that any program itself is an artifact amenable to mathematical study, regardless of the application domain it covers. One typical question these days is, for example, "what invariants exist in the execution trace of a concurrent program that lead to the same result?" Or, how you can reorder (and per

## Re: (Score:3)

## Re: (Score:3)

I took nothing past Calculus either and up until two or three years ago never even used trigonometry in my professional programming. The last few years I've been writing satellite simulations, which has forced me to knock the rust off some of my old math skills. Most programmers can get away with very little math a lot of the time. A lot of very interesting programming involves a fair bit of math. That programming is generally being done by some guy with a Ph.D. in another field, and he's usually doing it in Fortran.

You're touching on what I consider to be the ultimate fallacy of this question. If someone asks the question "how much math does a programmer need to know?", I'd answer with "a programmer of

what?"My profession happens to be videogame programming. In my own experience, higher-level calculus is largely unused, but geometry, linear algebra, and matrix math are the bedrock of 2D and 3D simulations. Even then, the level of competence required depends largely on your specialty. A graphics programmer requires

## Re: (Score:2)

## Re: (Score:2)

Well, but the computer science major at my college required six other math classes (including two calculus classes beyond the first that I completed). For many programmers (obviously not all) that math is a complete waste of time.

## Re: (Score:3)

## Re:Your Results Will Vary (Score:4, Informative)

## Re: (Score:2)

I think part of the problem is that "programming" is itself so diverse.

The other part of the problem is that math is so diverse. There's calculus and engineering math with all kinds of techniques for solving this or that PDE; there's set theoretic foundations; there's graph theory and design theory and combinatorics and a slew of other discrete math topics; there's topology and metric spaces and various abstractions for continuity; there's linear algebra and all the finer points of matrices and matrix decompositions and tensors and on into Hilbert spaces and other infinite dim

## Re: (Score:2)

In contrast, web development doesn't really require any of these. However, they all involve "programming", and the people writing the software can all be called "programmers", even if one's writing a website (no math) and another is doing a fluid dynamics simulation (lots of math).

I don't entirely disagree... but :P i am a web developer, who also happens to like lots of vector math, writing physics engines and in particular: writing SPH fluid dynamics simulations and other n-body simulations.

I would agree that some of my understanding of slightly above basic math is not necessary in most of the more common web development work in my job, but i do find it helps me be a better programmer in general... so perhaps the point is that math can make you a better programmer. Id also argue tha

## Re: (Score:2)

I guess it depends, I have used math twice n my professional career - once to use trigonometry to show the distance between 2 points (Pythagoras) and once with a complex equation that was reduced to a simpler one.

Now, if I was a cryptograpic engineer, I think I might use math more often :)

But, as I tend to be more of a LoB engineer, math is not something used very often at all. If at all. I refer to the aforementioned pythagorean equation for the distance between 2 points using a triangle.... the business

## Re: (Score:2)

The problem is, you've actually used maths every day in your career, you just haven't realised it. When you are programming, you are by definition doing maths - programming is a branch of discrete applied maths.

Actually knowing the theory of discrete applied maths obviously makes you better at doing discrete applied maths.

## Re: (Score:2)

that's a poor argument. After all, physics is just applied maths, and chemistry is just applied physics, and biology is just applied chemistry.... and just by sitting here typing I'm using maths!

Maths as a discrete thing is different to computer science even though they do share the same branch of education.

That said, nowadays, is cutting and pasting code from Google, and pressing . and letting intellisense tell me what to pick next, really maths. Is it really programming! :-)

## Re: (Score:2)

it's all gonna come down to "the way I did it was better"

You could very well be a skier...

## Re: (Score:2)

My first idea was to say: "I second that" but then I remembered that I'm not a native english speaker and that I indeed did some math (Trigonometry) heavy programming.

However: my university focused in the computer science education math in the first two years (University of Karlsruhe, german, now called KIT). Hence the most drop outs happened in that period.

My school math education was very good, geometry and Trigonometry was never a problem, after all it is simple math defined by Euclid and Thales 3 thous

## Re: (Score:3)

The reason math helps a whole lot in programming is that it teaches essential critical thinking skills. Some people are good at critical thinking skills without taking math. The _majority_ ,however, require some type of education to help mold their methods of thinking. Many, even with a whole lot of training do poorly with critical thinking skills.

Claiming that you have never used math in programming simply demonstrates that you are not programming for scientific purposes (writing a GUI for a CAD program

## Re: (Score:2)

The reason math helps a whole lot in programming is that it teaches essential critical thinking skills. Some people are good at critical thinking skills without taking math.

So you're saying it's not the math that's essential, but the Critical Thinking is. That's a different thing.

## Re: (Score:2)

So you're saying it's not the math that's essential, but the Critical Thinking is. That's a different thing.

Some people would argue that knowing the former is pretty much the only way to arrive at being proficient in the latter.

## Re: (Score:2)

## Re:Your Results Will Vary (Score:4, Insightful)

I find that most people trying to argue against math generally are doing so by asserting that if a certain math is not put to practice in the software that a person is developing that that math is unnecessary. It also seems to be commonly asserted that persons with a strong mathematical background are just being pretentious.

I believe that the anti-math crowd is missing the point. For a software developer it isn't the skill of solving calculus problems, but the skills required to solve calculus problems. What I mean by this is that in order to work to a solution for a given mathematical problem you are exercising many other skills. Skills such as logic, abstraction, visualization, etc. are very much employed in software development. You go to the gym not because you have aspirations of mastering a bench press, but because you aspire for a stronger, healthier body. Mathematics are an example of exercise equipment for a software developer.

## Re: (Score:2)

You go to the gym not because you have aspirations of mastering a bench press, but because you aspire for a stronger, healthier body. Mathematics are an example of exercise equipment for a software developer.

As an important sidenote, I want to underline that literally going to gym is also important to a software developer. :) Your mind will greatly benefit from the energized body.

## Re: (Score:2)

My feeling is that anything beyond algebra is unnecessary for programmers (in general) EXCEPT logic. I think every programmer should have two or three semesters, or even years, of logic. Programming languages just don't cover quite the same area, and usually skimp badly on logic. (I will agree, however, that theoretically the logic could be taught within the context of programming, except for a tiny bit that should deal with reasoning in unbounded contexts, i.e., infinitesimals, infinities, omega-complet

## YMMV (Score:3)

Until you hit something that does require higher math.

Find the optimal coverage schedule for employees next week given their varied availabilityAs simple as this sounds, unless you're willing to wait for the computer to churn thru every possibility: you are going to need some higher math know how to program that answer.

## or Communications: SMCR model (Score:2)

right...and that biases them...same for the coders as you say...

what no one considers is what the Communications people have to say...

see...Communications Theory (as taught today...i'd know...used to teach it as adjunct in grad school) starts with Claude Shannon and his SMCR model: http://en.wikipedia.org/wiki/S... [wikipedia.org]

sure, there is tons of 'soft science' but there is something relevant here: SYMBOLS

i

## more of why it starts w/ symbols (Score:2)

it starts with symbols...then goes to 'logic'...then math/code/language

here's one way we can know this is true (besides using the SMCR model)...

it mirrors human development

humans use symbols before we know what they mean...before we can use **logic** to manipulate symbols in real time to get what we want (aka talking/writing)

we first mimic the symbols around us like a parrot...we just repeat what we hear

then we **associate** symbols with things...

that association allows for us to use logic...logic tells us

## I completely agree (Score:2)

While the ideas of mathematics are (usually) precise, the language is fuzzy, informal and requires a lot of context. Everyone who ever has compared a fully formal proof and one done in the typical style mathematicians use can immediately see that. On the programming side, there is no room for fuzzyness. Or rather, whenever it is found, it typically is a bug and often a security vulnerability.

## I second that. (Score:2)

Parent and article seem spot on; although, I prefer english and programming to math.

## Re: (Score:2)

## Re: (Score:2)

We got good exposure to Djikstra at university (CS course). His problem is that he was ahead of his time. His other problems that even CS folks struggle to understand what he said (not because it is to terribly difficult, but because many CS folks are so terribly dumb). The think is that the formation of a new field of academic and engineering study and practice takes a long time. CS is not there yet. May take another half century or longer.

## Bizzarre, Capt Obvious much ? (Score:2)

Where are these stories coming from ? What's next water is wet ?

You may have a legitimate debate over which is more precise math or particular programming languages but has anyone ever argued a human language is more specific ? I'd love to see people program without understanding the propositional calculus. No strike that I may have actually seen that and it wasn't pretty. Comedy aside, anyone who has ever tried to write a parser understands just how non concrete natural languages are. Something like 90%

## Re: (Score:2)

Ahem. Captain misdirected vitriol much? The emphasis was clearly on the relative ordering of programming vs. math, with natural language largely included as a point of reference. Way to seize upon the least interesting/provocative aspect of the piece and attack it like a cat going at a roll of toilet paper. No doubt it felt satisfying, but nothing of value was achieved.

I see why you went AC for this reply. I'd suggest actually reading the blog post, it's worse than the flaws I pointed out and it's little more than pointless navel gazing. It's a shame so much crap like it has been making it as slashdot stories lately. I have to guess somebody is using multiple dummy accounts to promote stories through the firehose.

## Never had to use any college math on the job (Score:2)

Knowing the concepts may have helped for some work I have done, but, I have never used any advanced math for paid programming.

Five years as a J2EE developer: zero use of any advanced math for work projects.

Numerical methods (using Fortran) was just in school.

Calculus, linear algebra, and such: just in school.

Big-O notation, to pick algorithms and STL objects, sure, but probably doesn't count as 'math' for this article.

Since only a fraction of Computer Science graduates will work at a science shop (JPL, etc)

## Re: (Score:2)

"Numerical methods (using Fortran) was just in school."

So you routinely write a = b / c * d instead of a = b * d / c because you're ignoring precision issues do you?

## Re: (Score:3)

I suppose set theory, and propositional calculus/boolean algebra don't count as math either ?

## Forget math, programming is like organic chemsitry (Score:2)

As long as we're making gross generalizations...

A big part of organic chemistry in college is "synthesis" problems where you are presented with a molecule and you're supposed to outline the steps (chemical reactions) required to turn it into a different molecule. I find that this closely mirrors programming where we're manipulating data instead of chemicals. We all have access to the same tools and there's more than one pathway that will work, but we're trying to find the most elegant / efficient solution

## Nah ... It's Programming ... (Score:2)

... and that's it.

If you're programming litigation, you'll have to pick up some legal knowledge. If it's banking, then finance. If it's science, you'll have to be exposed.

But ... you don't have to be an expert at anything but programming. The experts do all that stuff. They can spec, but they can't code.

## Lack of rigour in math teaching made math suck (Score:2)

It was all the shortcuts, left out "intuitively obvious" steps, and sloppy use of variable names and symbols that drove me up the wall trying to learn advanced math from (imho crappy) math profs.

Let me tell you about the lecture with no less than three different Epsilons (a rounded one, a less rounded one, and something in between) used in the exposition of the proofs. That and my slight myopia kind of did me in in that class (or would have if I hadn't cribbed notes from my neighbour.)

Or, when, as a math pr

## first up let's get one thing straight. (Score:4, Insightful)

Programming is mathematics, it is the application of decision and discrete mathematics. Not all mathematics is infinitesimal calculus (there are different kinds of calculus), algebra or geometry.

## Re: (Score:3)

Math is big. It encompasses everything from continuous (calculus) to discrete (logic). It abstracts even from there into levels only mathematicians would understand.

People who don't know math think it's just calculus or just algebra or just linear algebra or just abstract algebra or some other high level mathematical discipline. They forget that working with integers is math. Set theory is math. Graph theory is math. Boolean logic is math.

Math is more than all those things combined. it is, at its core, the

## Re: (Score:2)

## Obligatory Quote by Gauss (Score:3)

TFA tries to make the case (poorly) that Math involves ambiguities and Programming does not.

The greatest of all mathematicians, Carl Friedrich Gauss, stated, "I mean the word proof not in the sense of the lawyers, who set two half proofs equal to a whole one, but in the sense of a mathematician, where half proof = 0, and it is demanded for proof that every doubt becomes impossible."

Not much room for ambiguity in that.

## Re: (Score:2)

TFA tries to make the case (poorly) that Math involves ambiguities and Programming does not.

I've been trying to think of how this could be, and the only thing I can think of is the

syntaxof math is less formal than the syntax of programming. In programming, each command is clearly defined, whereas in English there's some ambiguity about the meaning of the word 'is.'I don't think this has any real practical effect on math.

## Re: (Score:2)

Any sort of ambiguity means there must be a method of resolving the ambiguity. This is true no matter if you're talking about human language, math, or programming. In language and math, the method of resolving ambiguity is context. That is, the person you're communicating the concepts with presumably knows enough about what you're talking about to be able to resolve the ambiguity.

Note that both math formulas and programs are pieces of communication, nothing more. Programs are a way of communicating intent t

## Thinking of algorithms... (Score:2)

Before you can start formulating them — in any language, even in a spoken one — you need to think through the decision-trees and handling of exceptions and errors.

A "Hello world" program — in any programming language (except,

maybe, the assembly) — is vastly simpler than a list of errands you may get from your spouse on a weekend. Heck, a single errand of shopping may be more complex:## Re: (Score:2)

Programming has no fuzzy, no irony, no humor. The day it has, we'll have AI, and at the same day .... fuzzy, irony, humor.

we'll discard all AI research because it'll lead to

## Re: (Score:2)

That is only true, when you are programming (today's)

machinesWhen you are giving instructions to (programming) a human — or anything/anyone else with intelligence (artificial or otherwise) — humor may become available as a construct both for the instructions of the programmer and messages from programmed.

My argument was and remains: algorithms are the most important part of programming. Before you need to put in writing (or even verbalize it), you

## Why Math matters (Score:3)

You do need math to understand why looking up some keys in a HashMap is much faster than iterating over a vector.

You do need math to understand why some encryption algorithms are better than others

It just gives you the tools to better comprehend what's going on under the hood, so you have more information to make the right choices in how to implement something.

## Re: (Score:2)

Bur how often do you need to understand those things to implement a typical computer program that helps a user get something done? Oftentimes, you simply need to know one is better than another and get on with it. Of course, you'd need that understanding to, for example, work on the TrueCrypt sourcecode. But generally? I don't think so/

## The day that doing CSS isn't called programming (Score:2)

I'll start thinking about this in a serious way.

## Lots and Lots (Score:2)

While I freely admit that most of my programming has been in other areas. In every project I do it seems the day comes when boss says, what we need here is a visual. Where: when I click on it here..., when I drag it their..., when I spin it... What you have to understand (and many here do) is that you screen/window/view is laid out in a coordinate system. So you cannot escape it! You quickly need: geometry, trigonometry, vectors, and if your doing any 3D calculus.

Good luck!

## The more math the better (Score:4, Interesting)

The math that I am referring to is all pretty basic year 1 or 2 stuff. Basic Discrete, basic calculus, etc.

## Re: (Score:2)

## Re: (Score:2)

## I majored in applied math (Score:3)

## I programmed Asteroids in Assembly when I was 12 (Score:3)

Interestingly enough, I sucked at "school math" and flunked math entirely. Imagine the expression on my math teacher when he saw me coding in assembly at the new computer-park back in the 80s, when he barely could understand basic.

Since, I've made numerous demos in the DemoScene with Amiga, and later on coding robotics AI with MCUs (as a hobby, nonetheless).

So no, you can absolutely learn to code quite decent software and hardware without deep math skills, but it helps if you want to do real advanced stuff like coding your own Render-Engine (but then again, how many are they?) My advice - learn whatever you need to achieve what you want.

## uhh (Score:2)

## Symbolic logic... (Score:2)

would be better than math if one is looking for a bridge from language to programming. Absent symbolic logic, math -- especially algebra -- is a good introduction to the concept of computer programming because of its logic component (application of the algebraic hierarchy is a simple logic system.)

For kids, Lewis Carroll's symbolic logic is both fun and useful.

## Formal languages (Score:2)

## Programming != Math (Score:2)

Programming isn't, strictly speaking, math. Not like calculus or algebra is math. It's something else entirely.

I have a rather annoying learning disability, and have suffered from it since I was in first grade: I have a great difficulty memorizing things. Now, even with that rather annoying problem, I managed to be near the top of the class in both grade school and high school. What happened is I learned early on how to analyze the patterns behind the subjects I was expected to memorize and when test-time c

## Re: (Score:2)

What happened is I learned early on how to analyze the patterns behind the subjects I was expected to memorize and when test-time came was able to reconstruct most of the required information based on those patterns.

Sounds from that like you're a natural mathematician.

The more maths you learn, the more intricate the patterns become and apparently utterly unrelated areas become connected as an entertaining natural consequence of their existence.

Calculus is (for me) as obtuse and illogical as it gets. "If a w## It is leftover from IS being too vague (Score:2)

Math is mandatory for engineers. In the early years people getting a degree in any way related to computers, hardware, software, programming, playing games while smoking weeds... were all engineers. Now that there is mass separation in the field the importance of math on any particular field is not as obvious. Us that design network gear and program network interfaces need math. Lots and Lots of it.

## They're different? (Score:2)

Well, of course maths, programming, and natural languages are different, but all of them involve a symbolic language that models something and expresses that model. Kun seems to be focusing just on the differing degrees of precision these symbolic languages employ.

People tend to think of natural language as only a medium of communication, but it is also the way the human mind models whatever it perceives or imagines, and despite the fact we do that mostly instinctively, it is by far the hardest thing about

## No math compiler (Score:2)

Computer programming can be seen as more rigorous than mathematics because if the written program is not correct, the executable will not run; whereas a mathematical proof may contain elements that are not completely described but part of mathematical lore. However we do not possess a compiler for mathematics. Conversely language may be more abstract than mathematics because language, in addition to mathematics, may express information that is not mathematics, e.g. poetry, imagerie, etc. However mathematica

## Re:I disagree (Score:5, Interesting)

As a guy with two masters in math who knows 15 languages... I also disagree. There are some languages that are mathematical (like Haskell) but most programming has more in common with cooking (sequencing the application of resources) than math.

## Re: (Score:2)

Even if one is going to follow the idea that it is not math itself one should learn and more the abstract reasoning one picks up while learning match, even that is questionable since the amount of abstract thought that is useful varies from task to task and environment to enviro

## Re:I disagree (Score:4, Insightful)

Math IS sequencing. So is using recipes. That is how math works.

Math is a language. Just because you can frame things in that language doesn't mean that that language is necessary. Recipes are often in English. English is sequencing (words are a serial stream after all). That doesn't mean English is necessary for programming (there seem to many competent non-english speaking programmers as far as I can tell).

Disclaimer: I am a professional research mathematician; I do understand math just fine.

## Re:I disagree (Score:5, Insightful)

## Re: (Score:3)

You might not be terrible at math. I thought I was terrible at math (I'm also a software developer). I also thought I was only good at discrete mathematics (which was a course I took during my university degree, heavily related to programming and CS). Furthermore I thought I was terrible at learning human languages, after having had 7 years of compulsory French at school and not being able to form a coherent sentence in French.

It turned out I was wrong on two counts:

A while back I started learning Spanish.

## Re: (Score:2)

Your reply is very interesting and outlines the fact that one should not stop learning after school, but instead revisit past and new subjects with a different eye and different tools. Also motivation is the prime mover here.

## Re: (Score:2)

Yep. One of the things you discovered is that your school was one of the (many, many) schools that are horrible at teaching things, and in particular, math. Welcome to the real world. :)

So... how's your luck been in convincing employers (if you go that way) that your Coursera work is worthy of qualifying you for jobs?

## Re: (Score:2)

Being skilled in a subject is mostly how much you practice at it. I'm sure that if you put as much time into math as you did programming, your opinion wouldn't be the same. I'm a mathematician-turned programmer and I agree with the article.

One thing, though, is that programmers have a lot of tools to help them out. High-level languages like python, interactive development environments, debuggers, and of course being able to run the program and see how it behaves. All of these tools serve to hugely augment o

## Re: (Score:2, Troll)

From the ambiguity within your comment (what language, natural or programming?; Is the fact that you can pickup this that or the other in 8 hours

an attribute of this that or the other or of your very self?) I conclude that your programs must end spectecularly.

## depends. VBA is very different from systems arch (Score:5, Interesting)

A "programmer" can be someone who spends two days putting together a complex Excel macro (poorly), or someone who designs an information systems architecture for a significant enterprise. These are VERY different activities.

On top of that, I'll say that approximately 85% of people doing programming aren't really competent. Compare how often software crashes vs how often cars fail in such a way that they crash themselves. So you have to specify, are you talking about MOST programming, or competent programming? Most programming isn't done competently.

Well-designed and larger software projects require a thorough understanding of a large set of rules, both knowing what the rules are, and understanding WHY the rules are as they are, and when to apply which rules in order to move forward. In that sense, it's very much like math. Also like math, one wrong decision can lead you down a path of futility, from whence reversing course is time-consuming.

## Re:depends. VBA is very different from systems arc (Score:4, Interesting)

The take home message is, expose your kids to maths [youtube.com] without boring them to death.

## That's not a toad, it's a frog. Or a butterfly? (Score:2)

I'm going to go with this:

The vast majority of programming is fairly simple manipulation of states and symbols, which are themselves a small subset of numbers. yes and no are 1 and 0, etc.

The way those manipulations work together quickly becomes very complex.

You can do a boatload of things with just that knowledge. Entire video games. Many types of process control and dedicated controllers. Most reasonable scripting jobs, most "webby" stuff, database stuff, etc.

But then adding some knowledge of math, in the

## Re: (Score:2)

Mathematics is a very wide field. There are specific branches of it - Boolean Algebra and the Calculus of Propositions (symbolic logic) whose mastery will definitely elevate you above the fumbling herds of hack programmers. Basic Calculus teaches one to think in terms of functions, and few programming languages are devoid of the concept of functions or lambda calculus.

On the other hand, I manage to completely forget even the very existence of trigonometic identities (to my cost) for over 15 years, and unles

## Re: (Score:2)

discrete math

Algebra?

Then it is fine. I would expect programmers to struggle with classical math geared toward physics. That's perfectly logical: it is easier for people who come from physics because they understand the applications. And vice versa: physicists have huge problems with discrete math, where you can't round or generalize everything to hell.

Otherwise, it was repeated many times before. The math in itself is not as useful as studying math is. Math doesn't relate to software development directly - but math

## I, in turn, disagree (Score:3)

## Re: Equating language to math is insulting (Score:2)

Are you going to argue that recursion and iteration is not mathematics? Yes you may not understand everything in the branch of mathematics that you are applying, but one is still applying it, that doesn't make it sent less mathematics.

## Re: (Score:2)

For most programmers, recursion seems to be a tool to completely -- but unpredictably -- blow out the stack. Cynical, I know, but that's been my experience.

Although I gotta tell ya, one of my favorite recursive things is a particular area fill routine for rectangular pixels. Simple and beautiful. Just elegant as all get out. Once I understood how it does what it does, it was like someone washed my mental windshield with Windex. That was a great day. :)

## Re: (Score:2)

Language is a method of communication, not a coded series of steps arranged to achieve a desired result.

The latter requires a way for those steps to communicate with each other. Unsurprisingly, a language is just what is required for that!

## Re:Some loser needs to learn the pecking order (Score:4, Insightful)

In the real world the picking order is more like:

1. Rich parents / Male who is excellent at a popular sport

2. Prestigious law degree

3. Prestigious MBA

4. Good salesman and good at golf

5. Economics/Law majors/MBAs who got into strategic/management connsulting

6. (The rest)