How much knowing math well helps programmer?!
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
I, as the rest of the guys here feel that programming and maths have got very similar traits. I didn't study maths at varsity however have got a maths oriented brain. (or logical). The company I'm working for specialized in aircraft systems/aircraft manafacturing and there is alot of highlevel maths that floats around in some of these systems. That said, not everyone in the company are maths geniusses. I would say that it is important to know a maths guru when working with complex software systems however not needed to be a programmer. Guru Maths = complex algorithms. Its very rare that one stumbles across a complex algorithm as a programmer, and when you do, ask a friend.
"Program testing can be used to show the presence of bugs, but never to show their absence." << please vote!! >>
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
I suppose it depends on what you do, and what tools you have. On my second job I was mainly responsible for the develpment and integration of neural networks into an automated visual quality assurance system, but the math involved was entirely covered by the tool, NeuralWorks. In my current job, I write algorithms for the planning of tool paths for huge milling machines, and although I have tools like Mathematica available, I still do have to develop and write numerical algorithms all by myself because we desperately need to optimize them for our specific needs. That said, I spent more than 10 years programming applications that did not require any real mathematics at all, except maybe for the programming logic inherent in all programs.
-
Math is good logic. And I feel insulted that some people here mention "art": the exact opposite of objective reality and logic. Art is for retards; logic, math and programming is for geniuses... :P
I beg to disagree. Math is all about making complicated systems looking simple. When I see a short and seemingly simple formula expressing the core of an incredibly complex problem, then that's beautiful, and in its own way, that is Art. To give an example that (hopefully) most people will understand, the formula
E = mc^2
appears to be extraordinarily simple, but it is the result of some complex mathematical derivations, based on a few physical theorems. Another example although not so widely known, are Bezier Splines and their inherent geometrical properties, including the algorithms used to work with them. Yet another example are fractals, although I have to admit that the beauty mostly lies in the way people use to visualize them. Still, the fact that you can create constructs of virtually infinite complexity just from a simple formula or small set of formulas, turns fractals into objects of art. I pity anyone who cannot appreciate the beauty that emerges from the underlying mathematics, because that is what nourishes our curiosity and drives us mathematicians to research ever more complex systems.
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
It's very depends from your specialization. I work in document management area, databases, networking, etc - NO ANY MATH. My main pain-in-the-ass is fighting with hidden sh*t inside libraries. Sounds boring, but it's like a good detective! :) So my "programming" is crime investigation. :))
-
I beg to disagree. Math is all about making complicated systems looking simple. When I see a short and seemingly simple formula expressing the core of an incredibly complex problem, then that's beautiful, and in its own way, that is Art. To give an example that (hopefully) most people will understand, the formula
E = mc^2
appears to be extraordinarily simple, but it is the result of some complex mathematical derivations, based on a few physical theorems. Another example although not so widely known, are Bezier Splines and their inherent geometrical properties, including the algorithms used to work with them. Yet another example are fractals, although I have to admit that the beauty mostly lies in the way people use to visualize them. Still, the fact that you can create constructs of virtually infinite complexity just from a simple formula or small set of formulas, turns fractals into objects of art. I pity anyone who cannot appreciate the beauty that emerges from the underlying mathematics, because that is what nourishes our curiosity and drives us mathematicians to research ever more complex systems.
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
Some GUI stuff is impossible to do without knowledge of geometrics. Some business logic stuff is impossible to do without knowledge of calculus. However, some GUI as well as business logic stuff requires none of both (especially in mainstream LOB applications). So the answer obviously is: it depends what you do. Or, more specifically, what the project you are working on is supposed to do. Having said that, I do think that people with a "natural" math-oriented brain will be better programmers. It's all about the logic and reasoning. For example, the reasoning behind things like refactoring is quite similar to factorizing in algebra. In high-school, most of the time you'll see that people are either good in math, or they are good at languages. Only rarely will people be good at both. In my experience, the math oriented people will turn out to be the better software engineers (with or without actually studying math). I guess it's just the way their brain works. My girlfriend is one of those "language oriented" people. I could spent all day explaining what a recursive function is and I guarantee you that she won't be able to comprehend it. :-)
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
In my opinion, math is nothing more than the study of logic. And, as everyone seems to agree, programming requires logic ... I think that there is a big misunderstanding of what mathematics really are. People focus on math being complex equation and strange symbols: this is not math, this is the language we chose to explore (cartesian) logic. Would you reduce medicine to its wording, or coding to C++? I am very surprised to read that many programmers think that they do not need math to do their job. Look at any code: "function", "class" (=equivalence class), "variable", "array" (=vector), "+", "*", "%", ... understanding how these objects interact is the aim of mathematics! Even at a more fundamental level, a code essentially consists of 2 things: Logical tests (!) and loops (=matrix multiplication). Math is everywhere in a code, even if you don't see it! There is no doubt for me that math helps programmers. I would even say that there is no programer without mathematical knowledge (understanding what are functions or classes is a mathematical knowledge in itself, even if you did not learn it in your math class! ). Coders use maths at every line of their code without thinking about it. The language used to express things is slightly different, but the core is the same. Finally, when considering very complex computations, one quickly realizes that the mathematical language allows faster and better analysis of the problem than any programing language: It was developed in this scope!
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
i am not good at math but i can program. if you have math its a bonus.
Vuyiswa Maseko, Spoted in Daniweb-- Sorry to rant. I hate websites. They are just wierd. They don't behave like normal code. C#/VB.NET/ASP.NET/SQL7/2000/2005/2008 http://www.vuyiswamaseko.com vuyiswa@dotnetfunda.com http://www.Dotnetfunda.com
-
I think that all of it is. You have something, it has a value, what happens depends on what that value is in relation to some other value or values. I think that is maths.
Every man can tell how many goats or sheep he possesses, but not how many friends.
Most math that I've seen involves transforming something, an equation, a structure, into another form in order to make it more useful. Many proofs are little more than a series of transformations which demonstrate some equivalence. I believe this attitude of being able to and wanting to transform something into many different forms, each of which conceptually represents a different idea, is valuable and useful to programming.
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
Well, I'm a college student, and in my class no one's even half as good as me in programming. BUT, I'm the only one who hasn't passed Maths 2(The one with the multiple integrals) and I've failed twice up to now. So I don't think that they have a direct impact on each other, at least not for me.
-
In my opinion, math is nothing more than the study of logic. And, as everyone seems to agree, programming requires logic ... I think that there is a big misunderstanding of what mathematics really are. People focus on math being complex equation and strange symbols: this is not math, this is the language we chose to explore (cartesian) logic. Would you reduce medicine to its wording, or coding to C++? I am very surprised to read that many programmers think that they do not need math to do their job. Look at any code: "function", "class" (=equivalence class), "variable", "array" (=vector), "+", "*", "%", ... understanding how these objects interact is the aim of mathematics! Even at a more fundamental level, a code essentially consists of 2 things: Logical tests (!) and loops (=matrix multiplication). Math is everywhere in a code, even if you don't see it! There is no doubt for me that math helps programmers. I would even say that there is no programer without mathematical knowledge (understanding what are functions or classes is a mathematical knowledge in itself, even if you did not learn it in your math class! ). Coders use maths at every line of their code without thinking about it. The language used to express things is slightly different, but the core is the same. Finally, when considering very complex computations, one quickly realizes that the mathematical language allows faster and better analysis of the problem than any programing language: It was developed in this scope!
I don't think you need to be a mathematician to program, but if you have a good understanding of mathematical theorems than you have the advantage. All of the great algorithms used in computing are mathematically based. They begin as mathematical constructs that are transformed into a program. Just as someone can write without fully understanding grammar, people can program without fully understanding mathematics, but can you create something as beautiful as an encryption algorithm? Watch some of the series like the history of Mathematics and you'll see why math is so important and ingrained in software. Without it we would not have computers.
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
Any decent programmer must master Boole algebra, calculus of propositions and elementary integer arithmetic. A good programmer should have some education on the semantics of programming languages and be able to use program correctness verification techniques (invariants). Also good notions of algorithm efficiency. Understanding of "The Foundations of Computer Science" by Aho and Ullman is by no means a sin. All the rest is more a matter of the application area.
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
Math is not just arithmetic. Arithmetic is a subset of math. There are a lot of subsets. Linear math, non-linear math, logic, sets, (as the King of Siam was fond of saying) etc, etc. We got exposed to lots of the subsets in public school.* Most of the program logic on our desktops doesn't go beyond obvious math subsets. Neither does most of the code we develop.* Keep in mind our programs have to talk to some fairly ignorant hardware.* Some of the programming we do translates very high level math concepts (think Wolfram, ...) into programs that our ignorant hardware will understand. Some of it is a lot simpler. All of it depends on at least the logic subset of math. * Rant opportunity
-
Fair enough.
ChrisElston wrote:
You have something, it has a value, what happens depends on what that value is in relation to some other value or values.
I don't really think of that as math, even though it technically is. My reason, it's second nature to us. I think of math as complex equations and/or mathematical algorithms. To me that is math in programming.
----------------------------- Just along for the ride. -----------------------------
I agree. I would classify basic programming as Algebra which I dont consider "math" anymore. Its second nature. What I consider math in programming is Calculus and above. All those really complex things that not many people enjoy.
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
Well, you certainly haven't received much in the way of constructive remarks on this, yet :) IMHO math is a great foundation for programming [I have a BS in math] - math is "brain pushups". If you can solve difficult problems in math, then you're off to a great start as a programmer. The difference, I've learned over the [many] years, is the science part of computer science. One must study things like oop and other non-math material.
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
Boolean logic and algebra are necessities. If you can't invert a compound boolean expression in your sleep, you have no business being a SW developer. If you can't rearrange an algebraic expression to solve for the variable, you have no business being a SW developer. Converting betwween binary/hex/octal/decimal is a required skill. Understanding 2's complement math should be a required basic skill, but many people get by just fine with a "its just magic" level of understanding. As for higher math, it depends on what you program. For my current job, trig and spherical geometry are requirements, and at least enough calculus to be able to read the writeups from our math whiz (fortunately, I don't need to figure out the stuff he writes up :) ). In other jobs I've had, the math needs ended at algebra and boolean logic. It isn't strictly math, but if you're writing numerical computation algorithms, understanding error propagation with floating point numbers is a requirement. Unfortunately, it usually isn't. So few people understand it that they are unequiped to realize that its beyond just being important but an actual requirement. Learning thist stuff if dry and boring, but should actually be a requirement for a CS degree from any institution. It was in mine, and I've fixed numerous errors in simple algebraic expresisons that were caused by a lack of understanding of this. If you don't know what I'm taking about, go read What Every Computer Scientist Should Know About Floating-Point Arithmetic -- there should be nothing (well, not much, anyway) new in there to any of us SW developers.
patbob
-
ChrisElston wrote:
In my opinion programing is maths.
Other than basic math, if that, how much of your programming involves math(s)? Just curious. :)
----------------------------- Just along for the ride. -----------------------------
I dunno, I didn't study in that area of math.... ;P :laugh:
~ [Don't] Visual[ize the] Basic[s], C#[ly instead] ~ ASPX: Apple Simply Performs eXcellently
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
in my experience for most coding you dont need to be good at most math (im actually quite poor at arithmetic but surprisingly good as algebra...some algebra...) you just need to understand basic logic and everything else follows (no pun intended) programming for the most part is more like english(or your native language) or foreign languages, its mostly about syntax and vocabulary. until you get into graphical programming, then its matrix transforms and calculus. all your logic wont help you rotate that image along the x axis or perspective scale it without a library. but aside from that you may occasionally use math concepts without thinking of them AS math (for instance i dont think of modulus as the remainder from a division, i think of it as x%y makes something repeat y times for a steadily increasing x. i dont often think about the underlying bits and the operations they are doing when i make a bitmask, i just know that you make the numbers as significant numbers in base 2 and then you can join em together with | and you can see if they have been joined together with &. ive had a whole one time where i needed to convert to an arbitrary base(converting numbers to base 26 using letters a-z but no numbers for a list (because li didnt make them right and it had to match the book)) and ive never needed to do much more complicated math than that.
-
The shortest route to flipping burgers :)
Sort of a cross between Lawrence of Arabia and Dilbert.[^]
-Or-
A Dead ringer for Kate Winslett[^]reminds me of the old joke: The graduate with a Science degree asks, "Why does it work?" The graduate with an Engineering degree asks, "How does it work?" The graduate with an Accounting degree asks, "How much will it cost?" The graduate with a Liberal Arts degree asks, "Do you want mustard with that?"
-
Recently I had a fun discussion with my colleague(he works on algorithms) on this topic, thought you guys would give some insight.
I've always disappointed people by doing the math, and I'm not talking higher math, just simple addition and multiplication, to demonstrate what they want to do or want to buy won't work. Back in the 80's, right after WarGames came out and all the kiddies ran home to write a program to dial every number to look for computers, there was a big push on to make it illegal to do so. People were spouting nonsense about how the computers could dial thousands of numbers a minute and the potential cacophony of all the phones ringing one after another in the neighborhood, I felt I had to jump in and shut these people down with numbers. I timed how long it took to dial a number (which could be tweaked to be faster, but the biggest time was), the time it took for three rings, and how many exchanges there were. I computed even if there were 800 kiddies running their programs at once 24x7, the person raising hell about this, would only get one call per month. Not a nuisance, you'd normally get that many wrong numbers a month. And also your neighbor doesn't have the number one more than yours, so the neighborhood would not have all the phones ringing one after another. And did you really want to give the government the right to be examining your phone bill looking for this kind of activity? On the BBS discussion boards of the time, they used to leave one word responses just so they could push my message with the math off the BBS'es limited message queue. I loved the message boards, these were people who would try to shout you down in person, but on the BBS you could state your case without interruption. That was democracy. Another time I calculated that an early "network" made of 6821 parallel interface cards, would choke after four users accessing the common database, when the sellers claimed it could support hundreds. Saved our company big time, but the president had been real hot to buy them to rebrand and sell. I've found higher math is not necessarily necessary, but it is important to at least do the math instead of run on opinion. I once saw a company go down because the software manager told the hardware guys the computer could handle any interrupt speed. They then proceeded to make the hardware with an interrupt rate twice what the computer could deal with. I had once worked with that manager and knew he never did the math. It was a real shame, several of my friends had gone to work for the company and were then out of a job because this idiot couldn't pull out a calculator. But then, I always