Is it worth it?

Pages: 12
I might sound like a noobish topic, but i'm going to open it anyway. I wager many of the people here have experience in the programming domain, so i'm going to ask a more life-related question.
I want to pursue a career in programming. The problem is i'm not a genius at maths. All the teacher's tell us how university mathematics is like hell, only worse(probably because in Romania legally you need a maths certificate to sweep floors, but that's beside the point). I am prepared to pass that obstacle, but i'm worried the job will be just as demanding.

And so i finally get to ask the question. Is real-life programming in a real firm doing real software(and not that bulls**t they teach us at school) really that math dependant or is that just an obstacle you have to pass when learning?
For a computer science degree, I would think that you'd use most of what you learn. In the case of an engineering degree, it is very unlikely that you will ever remember the math you learn in school, nor will you ever need to. There are some positions that require it, so they are out there, but you'll do fine without taking a position like that.
I dunno, I've taken some calculus, but for what I'm planning to go into (game programming) I don't think I'm going to use half of what I'm learning...
The more you know, the greater the possibilities. Say for example you specialized in one area that suddenly became obsolete. If you have knowledge in other areas, you would have a better chance at getting another job.
(Game programming requires calculus. JSYK.)

Math and programming are not separable. A good many people can get along just fine programming simple stuff without any math at all. But if you want the big bucks, learn your math.

The more you know, the greater the possibilities.

quoted for agreement.

My $0.02
Last edited on
Huh, cool. What kinds of stuff can I look forward to then? It seems like the only thing I can think of that might be helpful is the volume of weird shapes/surface area of them...
@Duoas
I know they are not separable. But I also see that it implies more logics and skill. Just wanted to know if I really need the high-level math.

And as an example... would you ever need limits? Like limx->infinite(1/infinite) = 0.
If you have this situation:
1
2
3
double a = 0;

cout << 1/a;
And it displays "Infinity"
or
1
2
3
double a = numeric_limits<double>::infinity();

cout << 1/a;
And displays "0"
you should know why it does it

And if yow have to program something like a calculator you should know well advanced math stuff
Last edited on
The required math depends on the type of applications you will be working on. Of course you can write programs using only basic math, but your abilities will be limited. Calculus and differential equations will make you much more successful in science and engineering applications, and linear algebra is very useful for 3-D graphics, simulators, and anything else that involves large systems of equations.

Math is a tool. You don't necessarily need it, but it can make life a lot easier.
The relation "real (university) mathematics : highschool mathematics" is like the relation

real software
:
that bulls**t they teach us at school
,

so don't listen to your math teachers. Don't forget they probably became high-school teachers because they didn't understand university mathematics!
Last edited on
The only BS is that last statement. However, the relation holds. "Basic math" == elementary school math.
I still don't see it as a big deal. Computations are discrete and approximation techniques are not all that difficult. Sure, take all of the math you can because it will only help you, but if math isn't your thing you shouldn't suddenly fear software development...that's just silly.
Performing a computation is not very difficult, but knowing what to compute is another issue. A strong mathematical knowledge base doesn't necessarily help you write code, but it certainly helps you know how to approach and evaluate problems.
You don't really have to remember everything. If you learned the math once, the chances are that all you will have to do is look up the equation and plug in the values.
There's approximately a 10% chance (probably lower) that any given job you land will be interesting using the broadest definition of the word "interesting". The other 90% will be writing or modifying one of the thousands of particular instances of some sort of generic accounting or administration-oriented program. This barely requires any sort of programming, let alone math, skills. The accountants who will be explaining you the processes won't agree, but of course they have notions of "math" and "interesting" that differ from other (read: normal) people.

If you want to make some decent bucks (not The Big Bucks to the amount Duoas is probably thinking [I'm guessing Carmack or perhaps some of the chaps at Google]) without too much effort and don't really have programming in your blood (i.e. you program to live, rather than live to program) you might want to consider learning COBOL, which I understand is still very much popular in banking and similar institutions.
@helios
I don't suck at maths. I said i'm not just not as good as some others. So, yes I "suddenly feared software development" when everybody around me told me I couldn't manage. I just wanted an expert opinion, from someone who has dealt with these problems. I wanted to know if I have to have an idea of what a certain mathematical problem is....or if I have to compute all day long and code for 5 minutes.
Programming is the intersection of pure logic and math. You need both to be a successful programmer. How much math you need and what math you need depends upon your job.

I am not a scientific programmer, meaning that my job is not on the cutting edge of math or science. Still, every once in a while I come across a problem that I need to solve, and the (elegant) solution is rooted in mathematics. I cannot say that I've used every aspect of my math background in my career, but I have used some surprising ones, such as some statistical distributions (thanks to my statistics classes). I once had to solve a problem that, had I not known the quadratic formula, would have been impossible. Of course when talking about quadratic formulae, one is probably dealing with real numbers, and thus knowledge of numerical analysis (which bridges the gap between math and programming) was useful to avoid catastrophic cancellation (see What Every Computer Scientist Should Know About Floating Point Arithmetic).

I like to make analogies, so here goes another one... You can build furniture using just a handsaw, power drill, and hammer, but it won't be that great. On the other hand, if you have a lot of heavy power tools, you build really nice furniture.

The moral to the story is that the larger your toolbox of solutions, the better your solutions will be.




Every once
(see What Every Computer Scientist Should Know About Floating Point Arithmetic).


Hehe, yeah...when newbie programers ask "why does:

1
2
3
4
double stuff = 0.1;
for(int i = 1; i < 10; ++i) {
    stuff+=0.1;
}


not equal 1.0??"

(Answer if you don't know, because 0.1 is a repeating decimal in binary, so when you add it 10 times to itself, you get a number really close to 1.0, but not 1.0, like adding 1/3 + 1/3 + 1/3 in decimal)
Not trying to be condescending, but you just called a lot of people "newbie programers" for nothing. I compiled your code with GNU g++ out of curiosity and guess what: it actually does add up to 1. Not a number really close to 1, because that would have been 0, but 1.
You may be wrong. What is shown on output is rounded.
try this:
1
2
3
4
5
6
double stuff = 0.1;
for(int i = 1; i < 10; ++i) {
    stuff+=0.1;
}
if (stuff==1)
    cout << "It is 1!";
Pages: 12