Click to See Complete Forum and Search --> : Chicken or Egg
Citadel
02-20-2004, 12:19 AM
Is it better to spend the next four years learning hard core mathematics, discrete math, the theory of computation, and algorithms, and not do a lot of programming, or else does a person just learn some massive programming library and not worry about the mathematics behind it all.
maccorin
02-20-2004, 12:32 AM
depending on what you want to code
a lot of stuff doesn't require a deep understanding of mathematics to be proficient (although it never hurts!), but if your into say... gaming, then learn the math first because otherwise you'll know the syntax and have no idea how to apply it.
But even some things as complex as kernel work don't require a huge amount of math (in fact, very little), but they will require good logic
Brandon Niemczyk
P.S. My last response to you was not meant as a personal attack, sorry, i didn't want to start a flame-war, i was just in a uber-bad mood
Citadel
02-20-2004, 12:52 AM
It seems to be one of those types of situations where some skinny guy picks up a bar bell and the first thing he says is that he doesn't want to become like Arnold. As if he ever could even if he want to. Would learning all of the math make you a better programmer, would it lead you to greater holistic understanding of software development. Have the kernel developers for example studied the theory of computation and disregarded that knoweldge.
Citadel
02-20-2004, 02:15 AM
You mentioned logic, but isn't logic connected to mathematics, just as digital logic is realized through boolean algebra.
knute
02-20-2004, 02:26 AM
Math is good for not only figurin' how much gas a box with dimensions x,y,z would hold, but it is also good for getting you to think logically thru a problem.
That's most likely why they want you to study the math so much.
It's so that you can break down the steps necessary to do something as simple as to pick up a glass.
(No, it's not as easy as reaching out and grabbing it, though that's a start... :) )
I always thought it was funny how they wanted you to sit down with a pencil and paper and draw it out in detail. For some odd reason, that method didn't work for me, because I found it more efficient to work out the steps in my head, then could never figure out what symbology to translate the symbols in my head into for the paper, and yeah, I was the one that ended up with the only A on certain projects. :)
maccorin
02-20-2004, 02:40 AM
Originally posted by Citadel
It seems to be one of those types of situations where some skinny guy picks up a bar bell and the first thing he says is that he doesn't want to become like Arnold. As if he ever could even if he want to. Would learning all of the math make you a better programmer, would it lead you to greater holistic understanding of software development. Have the kernel developers for example studied the theory of computation and disregarded that knoweldge.
I NEVER said that knowing math wouldn't help with kernel development, your misreading my post. I simply said that a deep understanding of mathematics is not REQUIRED for all coding, including some fairly in-depth stuff. Yes obviously if you study the theory of computation and various algorithms you won't want to forget that knowledge. And programmers tend to communicate in mathematical ways (such as the big-O notation for representing the speed of an algorithm).
and yes, logic is connected to mathematics, but you don't need to be "master of differential equations" to figure out that if a = b, and b = c, then a = c.... you just can't be a moron
If your going to just shoot down any answer you get, why are you asking the question?
Citadel
02-20-2004, 02:29 PM
Don't mistake me for you mother, boy.
tecknophreak
02-20-2004, 02:42 PM
My experience with Math/Programming:
I've known/worked with CS majors and Math majors.
It seems to me that math majors have the experience of solving problems and their fault is that they don't know the syntax.
CS majors on the other hand know the syntax(cause most profs spoonfeed you defs then you get to spit them out for half of the test), but aren't as good at solving problems.
Both majors make you take classes in the other, almost enough for a minor in some cases.
From my limited experience, I'd say go with the math, it usually makes you think in a different way, which can be a huge advantage.
Flamesuit on, running for cover!! :eek:
P.S. I might be a little biased, but that's what happens.
Citadel
02-20-2004, 03:23 PM
These massive libraries that they are creating now like .Net or Java or even Mono (which I hear is over a million lines of code), in theory they are nice to use, but how stable is the investment. Don't vendors want to create a constantly changing environment so that they can keep selling things. That is a contradiction to stability and it's not a good investment. Free software on the other hand seems much more stable and friendly to the user but you probably have to have more skills, at least in the short term, than those skills become an asset in the long term. Maybe with open source these mathematics skills would pay off more dividends as opposed to closed and rapidly changing environments where you have to race just to learn the interface of some tool before it all changes. Has this commercial trend buried some of these mathematical approaches to problem solving. It seems that universities push math and science much more than vendors. It takes three years or so for these vendors to create these monolithic programming environments, if it took open source ten years to do it with Perl/Python/etc wouldn't it be worth it since the investment would not dissapear in a cloud of dust, but we could be using our R&D for decades or even a century or more. I think that this later approach is more friendly toward the pursuit of science and mathematics research and application in problem solving dealing with software. It's just really hard to go blind and invest in something like .Net or Java.
maccorin
02-20-2004, 05:17 PM
Originally posted by Citadel
Don't mistake me for you mother, boy.
wtf are you talking about here?
bandwidth_pig
02-20-2004, 07:43 PM
Originally posted by Citadel
You mentioned logic, but isn't logic connected to mathematics, just as digital logic is realized through boolean algebra.
Thats a interesting statement. Why do you feel logic isn't connected to mathematics? I am far from a mathmatical wizard, but if you look at science as a whole, which is founded upon logic in my opinion, and which math is a huge part of (science that is) how can math and logic not be directly related? Not saying your wrong. Just curious as to why you feel that way. To me, there is nothing more logical than math...except perhaps gravity.
Oh and to your original question, I would answer it is better to code, and learn to think in terms of logic through the trial and error of that code, than to spend all that time studying math. Now, if you wanted to be a physicist, then yes. I would say that the Math would be time very well spent. But as stated prior, it certainly isn't going to hurt. This is a interesting question.
Citadel
02-21-2004, 04:23 PM
Yeah, I think math can express logic very well, as in boolean algebra (AND, OR, XOR, NAND, NOR, NOT). They use this math to design circuits.
knute
02-21-2004, 06:51 PM
They also use this math for the program to determine when to come out of a while or a for/next loop, or when to stop recursing, or how to draw a line from point x,y,z to point a,b,c.
With out the math behind it, supporting it, and generally defining it, all you have is on or off, zero or one, yes or no, true or false, or whatever other comparisons you want to use.
Fortunately, the syntax that we use to communicate in binary terms with our hardware has removed us several generations from the math, but the math is still there regardless of whether it is acknowledged or not.
The question that comes to my mind is whether you are content with what we have now, or whether you want more. Neither is bad/wrong, just as niether is superior because it is personal preference.
Personally, I want more, as is evidenced by my using 3d coordinates (most likely not right notation, but who cares) rather than 2d. :)
Later,
maccorin
02-21-2004, 09:57 PM
the original question though AFAICT interperets to "do i need to be a mathematical genius to code?" and that still answers to an emphatic NO. I am a large proponent of the thinking that _everyone_ should have a good mathematical foundation, but it still stands that 90% of the code written out there is pure logic. And it is argued that logic == math, BUT it is _very_ basic math, nothing intensive. I have been coding (both on free-time and professionally) for several years, and until my most recent project (a 3-d game engine that i'm currently working on) some of the classes I took (read: everything from calc2 to DiffEQ) have proven virtually useless. Now, granted this current project has my old college calc textbook in a perma-position on my desk, and the physics end makes me glad i took Differential Equations, but this is a special case.
Now AFA learning some huge library goes, learn the basics of computational theory first, learn about common datastructers etc... as this will make your code-reading and library learning MUCH easier. And have a basic knowledge of how your processor works as well, i'm not saying become an asm god, but learning a little asm will help you understand the programs you write in high-level languages to a much higher degree.
I've recently taken on the job of learning OGL, and have found it suprisingly simplistic, GOOD libraries don't have 8000000*10^43232343 different function calls that perform EVERYTHING UNDER THE SUN. But they perform one task (rendering in OGL's case) and they perform it well, and _if_ you know the basic datastructures and common idioms you will find in code then a good API is fairly intuitive, if you understand state-machines, then OGL will be easy to understand etc... namespace std is just implementations of common structures etc...
So i guess what i'm saying is, you don't need to be a mathematical genius, but you should learn the basics of programming and hardware before tackling a large/complex library, and IMHO if the library is _that_ large/complex, then it's useless and over-reaching.
justlinux.com
Copyright Internet.com Inc. All Rights Reserved.