thread title says it all..
thread title says it all..
I would say that depends on what application you intend to use C++ for.
Good class architecture is not like a Swiss Army Knife; it should be more like a well balanced throwing knife.
- Mike McShaffry
Depends.
C++ in general doesn't require math skills. However if you planned on creating a 3D engine it would require around a grade 10-12 level of math at the least (but the basics and some basic physics too), or graphics with D3D or OGL. But most other things done with C++ dont require math skills, creating apps/servers/etc. I wouldnt get into a career with programming and C++ unless I planned on being good at math though, since its not a skill to be without.
Warning: Have doubt in anything I post.
GCC 4.5, Boost 1.40, Code::Blocks 8.02, Ubuntu 9.10 010001000110000101100101
don't plan on getting a job with NASA without very good math skills. Most business applications I have worked on would require at most high-school algebra and occasionally some trig.
When you write a c++ program (or a program in any other language) you don't just need language skills but you also need skills in what every company you are working for. If you work for a bank you will need to know about finance, if you work for NASA you need to know how to comput the distance from earth to moon and probably a lot of Ph.D. -level math skills. Programmers don't work in a vacuum, they need skils other than how to write a program (I can teach 13-year olds how to do that).
its really more logic (discrete, abstract math) than traditional math such as algebra or calculus. the applications may use calculus and trig but actual programming/code requires logic. i find that programming is more abstract than i initially thought.
I'd just like to second what everybody above me said - good points.
But a technical mind is a good asset to have when trying to understand programming, and a technical mind is generally one that picks up on mathematical concepts quite quickly - so the two would go hand-in-hand, I think.
I generally don't consider "good at math" to be the same thing as "informed at math." If you ask me, being "good at math" means being able to solve problems well, being able to think abstractly, and being able to look at problems from different angles, if the first try fails.
If you're not good at math, you're not good at programming. However, your "good at math" level changes over time, and I think that writing computer programs and solving the problems that you'll face will significantly improve your mathematical ability (making you "good at math").
In high school and before, they generally teach algorithms more than mathematics. They teach, "If you want the answer to axx + bx + c = 0, use the quadratic formula," and, "Do blah blah blah to factor this polynomial." They generally teach algorithms, instead of teaching thought. None of this does a particularly good job of improving your ability at math, but it does give you some tools later on. There are three things I know of that really improve one's mathematical ability, and those are proving things, solving math competition-like problems, and solving programming problems. These are all situations where you have to come up with a solution where, when you start, you have no idea of what to do. (You have to try ideas and see if they work. After doing this for a while, you get good at picking the right ideas.)
It does help to be somewhat informed at math, but you only need the basics of arithmetic when you start programming. Obviously, if you write a program that uses trigonometry, you'll need to understand trigonometry, just like if you were to write a textbook on trigonometry, you wouldn't get by if you only possessed knowledge of the English language.
So look at programming as a path towards becoming "good at math." You might even become somewhat more informed at mathematics, too.
If you're just starting programming, I really recommend you pick a language that is not C++. Jumpstart with Scheme, and then learn C++, say, a few months later. But I'm not here to dictate your life.