×

Announcing: Slashdot Deals - Explore geek apps, games, gadgets and more. (what is this?)

Thank you!

We are sorry to see you leave - Beta is different and we value the time you took to try it out. Before you decide to go, please take a look at some value-adds for Beta and learn more about it. Thank you for reading Slashdot, and for making the site better!

Math, Programming, and Language Learning

Soulskill posted about 4 months ago | from the i-before-e-except-SyntaxError: dept.

Programming 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."

Sorry! There are no comments related to the filter you selected.

I disagree (1)

Anonymous Coward | about 4 months ago | (#47486399)

As a computer programmer who speaks six languages, I disagree, because I'm terrible at math.

Toad in Hat (1)

For a Free Internet (1594621) | about 4 months ago | (#47486433)

Sir, you have a toad in your hat.

Re:I disagree (1)

Kkloe (2751395) | about 4 months ago | (#47486455)

same here,beside the basics of math I had to struggle to take my degree because I had redo 2 of 3 math courses 3 times, the only course I would say to be good is discrete math

Re:I disagree (0)

Anonymous Coward | about 4 months ago | (#47486633)

Programming = matrix reasoning. I have a grade 8 math level but can pickup a language in hours.

Re:I disagree (1, Troll)

Mister Liberty (769145) | about 4 months ago | (#47486883)

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.

Re:I disagree (0)

Anonymous Coward | about 4 months ago | (#47487101)

If you have a grade 8 math level, then you're probably comparing yourself to people in grade 8. Most people in grade 8 simply memorize facts and spew them back on a poorly-designed test without understanding anything, because that's what the school system is about. This means you're very likely claiming that you're absolutely abysmal when it comes to understanding math.

Vanish, cretin.

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

raymorris (2726007) | about 4 months ago | (#47487165)

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:I disagree (4, Interesting)

jbolden (176878) | about 4 months ago | (#47486657)

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:I disagree (1)

jythie (914043) | about 4 months ago | (#47486781)

Which gets to the core of the problem when trying to decide how "like math" programming is. Which "programming"? Languages vary a great deal, but even more importantly the type of task one is trying to complete varies even wilder.

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 environment.

Re:I disagree (0)

Anonymous Coward | about 4 months ago | (#47487153)

but do you need to learn logical reasoning in order to program?

Re:I disagree (0)

Anonymous Coward | about 4 months ago | (#47487159)

"most programming has more in common with cooking (sequencing the application of resources) than math."

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

Re:I disagree (3, Insightful)

Coryoth (254751) | about 4 months ago | (#47487263)

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 (4, Insightful)

Nethemas the Great (909900) | about 4 months ago | (#47486715)

Proficiency in mathematics for the most part has little to do with being able to learn a programming language. This much I agree with. However, proficiency in mathematics does provide a strong indicator as to what you will be capable of doing with those languages. You may not be performing Calculus or manipulating matrices in the software that you write but the skills that provide an aptitude for performing such math are very much relatable to software development. Such skills include, abstraction, visualization, and logic to name a few.

Re:I disagree (0)

Anonymous Coward | about 4 months ago | (#47487209)

How good a programmer do you consider yourself?

Your Results Will Vary (4, Insightful)

machineghost (622031) | about 4 months ago | (#47486403)

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 (5, Interesting)

fredprado (2569351) | about 4 months ago | (#47486439)

It highly depends on what you do. If you work mostly with the common database applications, basic math is enough for you and it is unlikely that you will ever need anything above Calculus or even Calculus.

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 (3, Interesting)

techno-vampire (666512) | about 4 months ago | (#47486551)

Studying computer science requires a fair amount of math to understand why some algorithms are more efficient than others rather than just accepting that they are. And, it can be a great help in working out the storage and IO requirements of a program. How much math you need to be a working programmer depends, as you point out, on what branch of programming you specialize in. Personally, I've always considered programming to be more a branch of logic than one of math.

Re: Your Results Will Vary (1)

ewanm89 (1052822) | about 4 months ago | (#47486679)

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: Your Results Will Vary (1)

techno-vampire (666512) | about 4 months ago | (#47486745)

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 (5, Interesting)

acroyear (5882) | about 4 months ago | (#47486761)

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: Your Results Will Vary (0)

Raenex (947668) | about 4 months ago | (#47486931)

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*.

This is silly. You don't need incidental math to learn skills essential to programming. 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 .

If you want to teach "variable control", whatever you mean by that, then teach that in respect to programming, not high-level math that will only be used by a tiny percentage.

Re: Your Results Will Vary (1)

acroyear (5882) | about 4 months ago | (#47487041)

"while neglecting critical skills that could be immediately useful in a large ."

Lack of college seems to have neglected that critical skill of finishing a sentence.

Or was that too easy?

p.s. :)

Re: Your Results Will Vary (1)

Raenex (947668) | about 4 months ago | (#47487151)

Or was that too easy?

Re: Your Results Will Vary (1)

Coryoth (254751) | about 4 months ago | (#47487085)

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: Your Results Will Vary (1)

Raenex (947668) | about 4 months ago | (#47487167)

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: Your Results Will Vary (2)

the phantom (107624) | about 4 months ago | (#47487265)

It isn't even about creating well-rounded people, and never really was---the point of a college education was to become an academic. You went to college because your end-goal was research. Of course, at that point in history the alternative was likely monastic life because your older brother was going to get the farm... That being said, it wasn't really until the middle of the 20th century that college was seen as a way of advancing a career outside of academia. 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.

Re: Your Results Will Vary (1)

jeIIomizer (3670945) | about 4 months ago | (#47487325)

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: Your Results Will Vary (2)

Coryoth (254751) | about 4 months ago | (#47487035)

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 need any of those subjects. Those subjects can, however, be very useful to you as a programmer. So yes you can certainly be a programmer, and even a very successful and productive one without any knowledge of calculus, or graph theory say. On the other hand, there may well be times when graph theory, or calculus, or statistics could prove very useful. what it comes down to is whether you are inclined to think that way -- and if so it can be a benefit; if not it won't be the way you think about the problem anyway.

Re: Your Results Will Vary (1)

the phantom (107624) | about 4 months ago | (#47487281)

Of course the reality is that you don't need any of those subjects. Those subjects can, however, be very useful to you as a programmer. So yes you can certainly be a programmer, and even a very successful and productive one without any knowledge of calculus, or graph theory say. On the other hand, there may well be times when graph theory, or calculus, or statistics could prove very useful. what it comes down to is whether you are inclined to think that way -- and if so it can be a benefit; if not it won't be the way you think about the problem anyway.

Which is almost exactly the point that the author of the linked article makes:

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

Re: Your Results Will Vary (1)

ewanm89 (1052822) | about 4 months ago | (#47486767)

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:Your Results Will Vary (2)

Greyfox (87712) | about 4 months ago | (#47486453)

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.

Re:Your Results Will Vary (1)

bananaquackmoo (1204116) | about 4 months ago | (#47486497)

Hint : you took calculus. Most people can't even get that far. Congratulations. You can math.

Re:Your Results Will Vary (1)

machineghost (622031) | about 4 months ago | (#47486807)

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:Your Results Will Vary (3, Informative)

GiganticLyingMouth (1691940) | about 4 months ago | (#47486505)

I think part of the problem is that "programming" is itself so diverse. If you were to be a graphics programmer, you would certainly need your linear algebra, geometry, etc. If you worked with scientific computing, you'd need even more math (e.g. differential equations, statistics, etc). If you worked as a DSP programmer, you'd need to know calculus (and then some). 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).

Re:Your Results Will Vary (1)

Coryoth (254751) | about 4 months ago | (#47487063)

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 dimensional things; there's category theory and stacks and topos theory and other esoterica of abstraction. On and on, and all very different and I can't even pretend to have anything but cursory knowledge of most of them ... and I have a Ph.D. in math and work for a research institute trying to stay abreast of a decent range of topics. The people who actually study these topics in depth are all called "mathematicians", but if you're an algebraic geometer then sure, you're probably familiar with category theory and homological algebra; if you do design theory and graph theory then those seem like the most useful subject available.

Re:Your Results Will Vary (0)

Anonymous Coward | about 4 months ago | (#47487177)

That still doesn't make it "no math".

Even making change doesn't require the user to understand why things are done... But it is still arithmetic.

Re:Your Results Will Vary (1)

gbjbaanb (229885) | about 4 months ago | (#47486509)

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 people I was working with considered me a genius for knowing that kind of thing even though it was something remembered from my O level days (yes, I'm old, maybe they don't teach it any more)

Re:Your Results Will Vary (1)

mov_eax_eax (906912) | about 4 months ago | (#47486705)

i disagree, you should have your fair share of discrete mathematics, you know finite state machines, de morgan laws when you are changing your if's, regular expressions,

For LOB applications often you are making specific domain languages so you should know your grammars, also understand complexity in computer science terms is VERY useful.

So you are using a lot of math every day, in every compilation, solving this bug, or whatever, just a subset of math but math nonetheless.

Re:Your Results Will Vary (1)

beelsebob (529313) | about 4 months ago | (#47487233)

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:Your Results Will Vary (1)

Deadstick (535032) | about 4 months ago | (#47486515)

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

You could very well be a skier...

Re:Your Results Will Vary (1)

angel'o'sphere (80593) | about 4 months ago | (#47486621)

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 thousand years ago.

Nevertheless I nearly either failed or lost interest in my CS studies because of the mandatory math classes. (I'm not bad at math, but I do not like studying it for no purpose or into arcane depths)

I'm a professional software developer since 40years, predating my university studies 10years with programming games and financial applications on Apple ][ s

The math 'they' demanded from me I never needed the last 20 years, and they are still not able to teach:
o programming
o some simple UML modelling
o anything about architecture
o even software engineering is on a very low level

Sorry, the idea that math helps in programming is completely idiotic.

The problem of programming is mapping human problems to computer solutions.

The key to that is requirements engineering, finding an architecture and conducting the actual doing (programming).

In the real hard core programming there is no math at all involved. Well, at some point it comes, so having an open eye helps, scalability e.g is a thing, but it is tackled with architecture, not with math. Math only helps to foresee and address it, not to solve it.

Re:Your Results Will Vary (2)

s.petry (762400) | about 4 months ago | (#47486719)

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 is not the same as writing the underlying math structures). That's fine, and most surely is not intended as an insult. As with above, you are not everyone, and math has many benefits.

I say this as a person who has a degree in Math, and took everything possible in College for math (hated statistical math, but diff-eq was great). I don't sit and run differential equations all day, but do very well helping Engineers and Scientists that _do_ run heavy mathematical models. Hell, when I was in college the only way to learn computers was by being in a math program.

yeah yeah, get off my lawn!

Re:Your Results Will Vary (1)

Mister Liberty (769145) | about 4 months ago | (#47486827)

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:Your Results Will Vary (0)

Anonymous Coward | about 4 months ago | (#47487207)

Critical thinking is how math works... when you are doing it right.

Sloppy programmers are also sloppy at arithmetic.

Re:Your Results Will Vary (3, Insightful)

Nethemas the Great (909900) | about 4 months ago | (#47486791)

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:Your Results Will Vary (1)

HiThere (15173) | about 4 months ago | (#47486923)

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-completeness, etc. and that could be covered within a single quarter. It's just that programming classes don't bother to teach logic, because they assume that you got it elsewhere.)

Re:Your Results Will Vary (0)

Anonymous Coward | about 4 months ago | (#47487187)

It depends on what you are programming where math is helpful and help develop many different algorithms.

YMMV (2)

xdor (1218206) | about 4 months ago | (#47487249)

Until you hit something that does require higher math.

Find the optimal coverage schedule for employees next week given their varied availability

As 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.

Equating language to math is insulting (0)

Anonymous Coward | about 4 months ago | (#47486423)

Yes, you can express language in terms of formal logic in order to describe rules of morphology, syntax and grammar.

No, learning language is in no way equivalent to learning math or programming. Language is a method of communication, not a coded series of steps arranged to achieve a desired result.

Re:Equating language to math is insulting (1)

ahaweb (762825) | about 4 months ago | (#47486481)

You did not code your argument in a series of logical steps to arrive at the desired result of demonstrating your conclusion that something here is "insulting". Perhaps that is because you believe such a thing is not to be done with a method of communication!

Re: Equating language to math is insulting (1)

ewanm89 (1052822) | about 4 months ago | (#47486703)

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.

I completely agree (1)

gweihir (88907) | about 4 months ago | (#47486451)

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. (1)

bussdriver (620565) | about 4 months ago | (#47486507)

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

Re:I completely agree (0)

Anonymous Coward | about 4 months ago | (#47487037)

the language is fuzzy, informal and requires a lot of context.

Programming and mathematics have the issue of context in common: the interpretation of both are much more unambiguous and context free than most natural languages. Were the languages of mathematics more context dependent, there couldn't be as much international scientific collaboration and progress.

  Another similarity between the two is the effort of complete modelling: mathematics models objects with specific properties and their relationships and properties of those relationships as completely and consistently as possible, so does programming where the objects are data and processes specifically. The objects and processes are in turn models of information and behaviour of the world to be described by the mathematician or programmer.

Expressions of natural language have often the same goal (a novel), but may also leave purposeful ambiguities (humor) and contain constructions which have purposes and meanings outside of the language semantics (poetry).

Mathematics is about concepts not language per se (0)

Anonymous Coward | about 4 months ago | (#47486457)

Mathematics is about concepts not only the formalism in which you can serialize mathematical ideas. Both programming and natural languages can be described mathematically.

Re:Mathematics is about concepts not language per (0)

Anonymous Coward | about 4 months ago | (#47487237)

Actually natural languages cannot be described mathematically.

A SUBSET of a natural language can be described mathematically... but being a subset means there are a lot of expressions in the natural language that cannot be described.

The problem is that natural languages have unique translators... one for every individual, with no two translators identical.

Considering Republicans... (-1)

Anonymous Coward | about 4 months ago | (#47486467)

don't allow children to learn other languages in public schools in that horrible country, why do you think they'll allow them to learn math, much less programming. No. I have several friends from there, and they are barely literate and are idiots at math. That is the Republican way. They want to create an entire country of morons.

Bizzarre, Capt Obvious much ? (1)

Crashmarik (635988) | about 4 months ago | (#47486477)

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% of your effort is devoted to disambiguation of natural languages.

Does this guy actually have evidence of anyone seriously making the point he is refuting ? I mean it's trivial take a look at poetry and mathematics and programming languages can't even start to deal with the abstract concepts involved.

Re:Bizzarre, Capt Obvious much ? (0)

Anonymous Coward | about 4 months ago | (#47486541)

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% of your effort is devoted to disambiguation of natural languages.

Does this guy actually have evidence of anyone seriously making the point he is refuting ? I mean it's trivial take a look at poetry and mathematics and programming languages can't even start to deal with the abstract concepts involved.

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.

Re:Bizzarre, Capt Obvious much ? (1)

Crashmarik (635988) | about 4 months ago | (#47486575)

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.

Re:Bizzarre, Capt Obvious much ? (1)

the phantom (107624) | about 4 months ago | (#47487315)

Does this guy actually have evidence of anyone seriously making the point he is refuting ?

Kun is responding fairly explicitly to Sarah Mei's post Programming Is Not Math [sarahmei.com] , as evidenced by the link in the third paragraph of his post, as well as the copious quotes that he reproduces and replies to. Having also taken the time to read Mei's post, it would appear that (a) Kun is not misrepresenting her point of view, and (b) she is sincere in her opinion. So yes, I would say that Kun has evidence that at least one person is seriously making the point that he is refuting.

You might not need it, depending. (1)

oborseth (636455) | about 4 months ago | (#47486485)

I hated math and was not that good at it but I did love solving complex problems and puzzles. I've enjoyed a very lucrative 15 year career in computer programming.

Re:You might not need it, depending. (0)

Anonymous Coward | about 4 months ago | (#47487285)

That just means you had some poor teachers.... or just a personality conflict with them (or both, actually).

solving complex problems and puzzles is what math is.

Never had to use any college math on the job (1)

mrflash818 (226638) | about 4 months ago | (#47486517)

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), I think some of the math requirements are a bit unfair. Perhaps I am just a low-range "Forrest Gump" programmer, but my personal experience was the actual math was burdensome to do to work towards a Computer Science degree.

Re:Never had to use any college math on the job (1)

presidenteloco (659168) | about 4 months ago | (#47486661)

"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:Never had to use any college math on the job (2)

Crashmarik (635988) | about 4 months ago | (#47486677)

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

Forget math, programming is like organic chemsitry (2)

alphazulu0 (3675815) | about 4 months ago | (#47486573)

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 to get from A to B.

Most of the students in my OChem class were premeds and many of them struggled with the synthesis problems. A lot of the premed curriculum involves memorizing and regurgitating huge amounts of information, with less emphasis on problem-solving. I always thought the ones that were good at the synthesis problems should switch gears and become programmers.

az0

Nah ... It's Programming ... (2)

CaptainDork (3678879) | about 4 months ago | (#47486589)

... 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 (1)

presidenteloco (659168) | about 4 months ago | (#47486613)

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 prof, giving an example of applied math used for something like physics, why don't we just pick completely random variable names, instead, of, say, using m for mass consistently, v for velocity, etc.

I understand some kind of need to force people to think only of the form and not imbue terms with more semantics that aren't necessarily there in a particular mathematical formal system, but holy cow, could you be more obscure? Why yes I could. I will use 's' for mass on this page, and r' for mass on this next page, just to see if you are paying attention. !!!

Re:Lack of rigour in math teaching made math suck (0)

Anonymous Coward | about 4 months ago | (#47486695)

Indeed. A for loop is infinitely more intuitive than a big sigma symbol and so approachable that 8 year old kids can make games in BASIC. All of mathematics needs to be reformulated into a grammar that's understandable by machines. Why? Because then ordinary humans will also have a chance at understanding it sans literally retarding lecturers -- Who won't even talk to a 9 year old that's starting to develop his 3D software rasterizer...

You see, if we reformulate math as programming then we won't need the professors. It's a war against the entrenched elitists vs the common man over access to information.

FUCK.

first up let's get one thing straight. (3, Insightful)

ewanm89 (1052822) | about 4 months ago | (#47486653)

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:first up let's get one thing straight. (0)

Anonymous Coward | about 4 months ago | (#47486897)

You poor fool. It's not just the application of decision and discrete mathematics. Aren't you aware that Turing proved these machines can solve any problem that is solvable?

Obligatory Quote by Gauss (2)

thrich81 (1357561) | about 4 months ago | (#47486697)

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.

proofs-as-programs (0)

Anonymous Coward | about 4 months ago | (#47486699)

I thought someone proved that programming and doing mathematical proofs were equivalent?
http://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence

Thinking of algorithms... (1)

mi (197448) | about 4 months ago | (#47486709)

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:

  • Buy two pounds of X, if it is fresh, otherwise buy only 1 pound and another pound of Y.
  • Honey, what if they are all out of Y — should I get two pounds of X regardless of freshness or not buy it at all?
  • Reboot...

Re:Thinking of algorithms... (1)

Mister Liberty (769145) | about 4 months ago | (#47486899)

Programming has no fuzzy, no irony, no humor. The day it has, we'll have AI, and at the same day
we'll discard all AI research because it'll lead to .... fuzzy, irony, humor.

Re:Thinking of algorithms... (1)

mi (197448) | about 4 months ago | (#47486951)

Programming has no fuzzy, no irony, no humor.

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

When 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 need to consider all (or most) of the possibilities. Block schemes [google.com] are language agnostic...

Why Math matters (2)

tommeke100 (755660) | about 4 months ago | (#47486741)

No you don't need math to write an iPhone App or an interactive website.
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:Why Math matters (1)

Prototerm (762512) | about 4 months ago | (#47487327)

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 (1)

Mister Liberty (769145) | about 4 months ago | (#47486809)

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

Lots and Lots (1)

4pins (858270) | about 4 months ago | (#47486823)

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!

Some loser needs to learn the pecking order (0)

Anonymous Coward | about 4 months ago | (#47486909)

It goes

1, Mathematician
2, Scientist
3, Engineer (and thus programmers)
4, Art-Liberal degree
5, No degree at all or community college

Re:Some loser needs to learn the pecking order (0)

Anonymous Coward | about 4 months ago | (#47486925)

Scratch that, make it:

1, Mathematician
2, Scientist
3, Engineers (not programmers) that knows basic calculus and basic linear algebra
3.5 Software Engineers
4, Art-Liberal degree
5, No degree at all or community college

Re:Some loser needs to learn the pecking order (3, Insightful)

Jeeeb (1141117) | about 4 months ago | (#47487267)

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)

The more math the better (3, Interesting)

EmperorOfCanada (1332175) | about 4 months ago | (#47486917)

I went for years keeping my math and my programming separate. Often programming involves little more math than x++. But then I really buckled down and learned a pile of math which I now pile into my programming. Interestingly enough when I try to show my algorithms to other programmers they say, "I forgot all that math 1 day after exams." But these algorithms often are cutting thousands of lines of code away and result in answers that are instant instead of a more iterative approach that could take minutes or much longer.

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

I majored in applied math (2)

Snotnose (212196) | about 4 months ago | (#47486937)

some 20 years ago (yikes, did the math and it's closer to 30). I wanted to do signal processing and such, but I realized MIT grad students were doing all the fun stuff. I now write embedded software, and the only time I use math is when I either go off on a tangent, or sine off on an apology for doing so.

Maths != Trig or Calc or whatever (0)

Anonymous Coward | about 4 months ago | (#47486981)

What maths is is a mindset where practical problem solving skills can be learned. This can happen at a "basic" maths level and at a higher level. It's not about memorising your formulae, despite what school might've taught you, it's about understanding and applying the formulae in a logical manner.

No, no, no! (0)

Anonymous Coward | about 4 months ago | (#47486987)

Clearly the submitter and the blurb have it wrong. It should be: human-language => programming => mathematics. Why? Well its obvious. The United Statian government allows patents on programs, and doesn't allow patents on mathematics. Clearly it can't be human-language => mathematics => programming, otherwise all of the patents on computer software would be worse than having patents on mathematics (which is illegal). Now it can be argued that (all) computer software can be reduced down to mathematics, so then it reads: human-language => mathematics == programming, but again, this flies in the face of US patent law. (Although the premise for the last assertion has been proven mathematically). Unfortunately a mathematical proof does not hold up in a court of law (at least not in the United States).

I programmed Asteroids in Assembly when I was 12 (2)

MindPrison (864299) | about 4 months ago | (#47486991)

...on my Commodore 64, since we didn't have any games when it came out.

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.

Math vs. Formal Logic (0)

Anonymous Coward | about 4 months ago | (#47487019)

I was an engineering major in college. I have become a software engineer in my career. My course in formal logic was the most useful training I had for a software engineering career. Math? Yes, useful - especially when I was writing risk analysis software for the options trading industry in Chicago (Black-Scholes etc), but without the formal logic I would have never been able to do what I have accomplished over the years.

uhh (1)

buddyglass (925859) | about 4 months ago | (#47487065)

IMO programming is almost nothing like natural language.

Symbolic logic... (1)

eyepeepackets (33477) | about 4 months ago | (#47487067)

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.

Re:Symbolic logic... (0)

Anonymous Coward | about 4 months ago | (#47487275)

Learning logic and critical thought directly instead of assuming assimilation through math courses would do the world wonders. Imagine what the next generation could be like if we threw in a class on formal logic and critical thinking skills into elementary school curricula.

conflating code DOING math with code BEING math (1)

flipk (1187739) | about 4 months ago | (#47487147)

A lot of commenters here seem to be (incorrectly) conflating code which DOES math with code BEING math. Yes there's a lot of products that need high math (i.e. simulations) but there's also a lot of products that are successful when they do extremely complex data movement and organization but very little mathematical transformations.

If programming was so close to math, wouldn't people who are really good at math write the best code? Maybe that's a straw man statement, but in my experience, the people who are really REALLY good at math (e.g. the radio frequency signals processing guys) happen to write the worst code I've ever seen. I've spent much of my career taking prototypes written by DSP engineers and making them go 10 to 100 times faster and use a tenth as much memory. That's not belittling their skills! They did something absolutely amazing that I cannot do, coming up with the steps and crazy weird math required to process signals. (And often, even though I make their code go way faster, I still don't really understand the math behind it when I'm done.) Their code just happens to not take proper advantage of the hardware or other resources. They do the equations so it *functions*, but they don't know how to make it *fast*.

The real skill comes from being able to picture the structure of the data in your mind as complex interconnecting shapes and mentally animate the movement and transformation of data in as few steps as possible without redundancy or useless or redundant transformations; and in many cases, being able to picture multiple workers doing their work in parallel is a plus. I'm not saying every great programmer uses their visual cortex, just that they can keep track of a lot of moving pieces in their mind.

This isn't math. This is more like a visual/spatial skill, like a mechanical engineer designing a complex machine with a lot of moving parts that have to fit together perfectly and move through each other's space in perfect timing. I think it's a different part of the brain from either math OR language.

I have to agree with Kun that complexity analysis (big-O) is absolutely mandatory, though. Saying complexity analysis is "pretty much meaningless" is the dumbest part of Mei's article. Kun also makes good points about recent innovations in DSP, machine learning, etc come from math--but only the *theory* part. You still need people good at the mechanics of programming to *implement* that theory in a productizeable way.

Re:conflating code DOING math with code BEING math (0)

Anonymous Coward | about 4 months ago | (#47487329)

It is still math... code doing math is the same as math doing math.

Even if you do it via intuition.

Formal languages (1)

Jim Sadler (3430529) | about 4 months ago | (#47487191)

Mathematics, chemistry and physics use formal languages. Terms and consequences are concise but rather difficult to deal with. Informal languages such as we speak daily are sloppy but efficient and rather easy to understand by comparison. It is that slop that makes informal languages so useful. Imagine E= MC squared if you have no clue what E, M or C mean at all. It might take decades to ascertain what the equation means..

Programming != Math (1)

Prototerm (762512) | about 4 months ago | (#47487269)

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 came was able to reconstruct most of the required information based on those patterns. Perfect example of this is spelling. I figured out what phoenetic combinations ruled English, and used them to pass tests. Armed with those rules, I only had to remember one or two odd words per week. In history, I found myself being able to understand and explain historical trends and influences. Names and Dates, on the other hand, gave me (literally) a headache. Simple math was easy (just a small number of consistent rules, after all). Sort of. Word problems in math, on the other hand, were difficult at best.

After I graduated college, I bought myself a Commodore 64 (they were just on the market) and dove right into both Basic and Assembly language. Both were easy for me to analyze and comprehend. Logic may be a branch of mathematics, but to me it's more obvious than anything in the math textbooks. Calculus is (for me) as obtuse and illogical as it gets. "If a water tank with a height of 15 feet and a circumference of 20 feet is 2/3 full of water, with a 1/8 inch hole a foot above the bottom, how long will it take the water level to drop to the hole?" Just plug the hole, whydoncha? Jeez!

Interestingly enough, I also have problems with computer word problems. Just give me the code (any code -- C, C++, C#, pascal, basic, assembler, SQL) and a little time, and I'll tell you what's causing the bug you're seeing. Now, after all these years, I'm the one everyone comes to when faced with an intractable computer problem that no one else seems able to solve. And I still don't like math.

Programming != Mathematics (0)

Anonymous Coward | about 4 months ago | (#47487279)

This is a debate between people without an education or picked up knowledge in mathematics vs. those who do. People who don't, like me, are perfectly happy finding well-paid senior-level positions which do not require in-depth experience of optimized algorithms in C or similar. People who have found an interest in math and who work in specific sections of the industry where the knowledge in math is a necessity may lean towards thinking about "programming" as only being related to the *same work* they perform. Just because a particular job requires a specific skillset does not mean the entire industry requires the same set of skills.

Where does the notion that being a programmer or developer is akin to becoming a structural engineer? Building a bridge properly requires a very specific set of skills; programming does not. And no, I'm not talking about the person who spends a few months copy/pasting php snippets with google's help - we're talking about people who have spent years developing their craft, *after* formal schooling has ended.

I started between ages 10-12 on geocities, finally figured out what the hell CGI programming was (I'm nostalgic for those mailto: form actions), and have since progressed to being a senior developer. I would put myself in the 80-90th percentile of backend web developers and 50-70th percentile on frontend. I have only met 3 other web developers in 10 years who actually put in the effort to understand the technology they are working with the same way I do. It's frustrating to deal with software engineering graduates with 5+ years of experience on a daily basis, who don't know the difference between a 301 and 302 http redirect, why their CDN isn't caching (set cache headers...), dealing with complaints about the difficulty of understanding ternary syntax, or explaining why they can't instantiate an abstract class.

If you want to segregate developers, don't do it on the basis of mathematical and algorithmic logic. Do it based on people who have a thirst to learn (and who actually accomplish this) vs. those who only got into the industry for the money. You can tell the difference between the guy who spends at least some of his free time picking up new skills vs. the one who shows up 9-5 then completely drops everything developer-related until 9am the next day.

It is leftover from IS being too vague (1)

sgt scrub (869860) | about 4 months ago | (#47487297)

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.

Re:It is leftover from IS being too vague (0)

Anonymous Coward | about 4 months ago | (#47487317)

Your statements of "math is mandatory for engineers" and "us that design network gear and program network interfaces need math" show a certain amount of disconnect in your thought process. Not all engineers are working on low-level networking. Just because you've learned certain skills does not mean everyone else in the field needs the same skills.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?