Sign in to follow this  

Is C++ worth learning?

This topic is 4764 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, This may seem like a thread waiting to be flamed but bare with me please. Considering I have no desire to create computer games (Okay well I do but I have higher priorities) what advantages would learning C++ have over learning C#. The reason I chose C# because that would be the option if I decided not to learn C++. I think C++ is too depthful for my needs, I want to be a computer programmer in later life and I feel C# is the future because of the speed applications can be developed using it, in relation to the speed of developing applications in C++. Also, whilst I'm posting could somebody give me some pointers on the neccessity of a Computer Science degree if I wanted to be a computer programmer, I would much rather do Mathematics. Thanks in Advance TomX

Share this post


Link to post
Share on other sites
If you dont have any necessity to learn C++ to do games development, and not over serious about programming. Id go with C# its easy and has most of the things that C++ has, good for doing GUI programs if you want to go down that route.

If you like computers, problem solving and programming do a Computer Science degree. If you like mathematical theory and want to end up doing research or lecturing do a Mathematics degree.

Share this post


Link to post
Share on other sites
*sigh* Learning to program isn't something that you just put time into & expect some kind of result from: "Is it worth putting time into learning blah.."
Just do it & find out.
If you only want to develop simple high level apps then yeah something like C# or delphi might be more up your street.
different languages aren't really that much about capabilities - If you want to do something with a language you can usually work out a way (not considering os & hardware etc). So it's about what level you are comfortable of thinking @.
Have you ever programmed before? Do you know how to "think" in code?
If you interest is purely educational then stick to something simple like delphi or I suppose c#.
Computer science dodad? Erm I'm a programmer & I have no such degree. no magical wall has appeared to stop me from coding though.
You want to become some programmer grunt in an office? Sorry I don't know of such things.
My advice would be to study what you think you can get the most from & with that push forward with life. Again I think it depends more on what you want to do than what you have educationally. Having stuff is good. But I think having subjects you know more about are more important than subjects you took because you thought you "ought to" & ended up dropping or mumbling through blindly.
But still all the best with life. Hope you find your path

Share this post


Link to post
Share on other sites
Well I've not decided entirely what I want to be when I'm older but I've narrowed it down to like 4 jobs:
.: Computer Programmer
.: Cryptographer
.: Maths Researcher (Though I'm not sure what this actually is)

I have no interest in:
.: Maths teaching
.: Statistics

The problem with me taking a Computer Science course is that I, as stupid as this sounds, never want to stop learning new Maths things.

This kind of suggests I should be doing a Maths degree but this would put me at a disadvantage compared to programmers with a CS degree so I'm just not sure.

I was thinking of a 70/30 Maths/CS course, the 30% CS would be the most needed to know information about programming.

Does anybody here have any summaries of the utility of CS or Maths degrees they would like to share with me (and anyone else who might read it)?

ProPuke: Hmm, good points throughout... I have programmed before with Java and I assume I know how to "think" in code?

Thanks in Advance
TomX

Share this post


Link to post
Share on other sites
If you get a math degree, you have most chances of getting a job in:
- Research, at university, if you are really good, but this *implies* teaching
- Statistics for insurance companies and such
- Accounting
- High school teaching

Thats about it. Most math graduates have no problem finding a job I heard, but they might not be the most pleasing jobs. The best you can hope for that would be strictly math is really research, but you have to be really skilled and do at least a masters degree, perhaps even more. My opinion (which you may not like), is that math is a tool. Maths are made to serve a purpose. I don't encourage you to study maths alone. If you learn maths, use it in some context. You could take a joint CS and math degree, that way you would have much more job opportunities.

About C++ and C#... Well. I'm developping a photon mapping renderer right now, and it would take the same time to develop it in any language... Its purely algorithms. The area where C# helps is graphical user interfaces, but thats not because C# is a better language, its because win32 is a crappy API, and microsoft never took the occasion to make a *real* C++ version of it (no, MFC does not count). I like the fact that C++ is powerful, and does not pretend to tell you how you should do things.

Is it "worth" learning it? Yes, but the fact is, as soon as you know a C++ like language you know them all. I would say, however, that if you learn C++ first, you're going to learn much more about programming than if you learn C# first (and remain scared of C++ for the rest of your life). C++ is simple, provided that you have some basic understanding of how a computer works, which you should, if you want to call yourself a programmer one day.

Not everyone will agree, but programmers who think that "its ok to ignore everything about how a computer works, programming is all about algorithms"... Are shitty programmers. True, skilled programmers can foresee all that will happen in the machine when the program is executed. True programmers know how it all ties together, and it helps them program more efficiently.

But then you have to ask yourself a question. Are you sure that you want to be a programmer? If you want to be a programmer, why don't you want to do computer science? Have you considered something else, like a joint maths and physics degree instead?

Share this post


Link to post
Share on other sites
Here's a useful link to the US Dept of Labor website: Occupational Outlook Handbook - Mathematicians. It explains a bit of what's out there and the outlook of the profession. Take a look around that site and look up other occupations. One thing to note is that they recommend having more than just a math degree.
Quote:
Competition is keen for the limited number of jobs as mathematicians. Employment of mathematicians is expected to decline through 2012, reflecting the decline in the number of jobs with the title mathematician. However, master’s and Ph.D. degree holders with a strong background in mathematics and a related discipline, such as engineering or computer science, should have better opportunities.

Share this post


Link to post
Share on other sites
Quote:
Original post by Max_Payne
If you get a math degree, you have most chances of getting a job in:
- Research, at university, if you are really good, but this *implies* teaching
- Statistics for insurance companies and such
- Accounting
- High school teaching

Thats about it.

I'll have to disagree with that. Maybe it's just the way Math is taught in the US as opposed to Israel, but over here graduates with Math degrees are highly sought ofter by many high tech companies, and usually for the more interesting jobs. In fact, most Math graduates I've met ended up working in software engineer/architect type jobs.

shmoove

Share this post


Link to post
Share on other sites
Why not learn both? If you plan on doing any gui windows apps then c# will quickly become your best friend. Although, from what I have gathered about the programming industry thusfar, understanding the concepts of programming (and where to find and how to use documentation) is alot more important than learning any particular language. With that said, unmanaged c++ won't hold your hand nearly as much as c# will. IMO, c# will be the future of windows and database programming. Maybe I'm wrong though...

Share this post


Link to post
Share on other sites
I'll speak from the perspective of someone who (a) works in the games industry and (b) plays a big role in hiring people at our company.

When it comes to university, the nice thing is that you don't have to choose one area of focus or another. Like yourself, I love mathematics and always excelled at it (probably because I liked it so much). But, computers were my thing (programming), and it was the most "employable" skill I had that I also enjoyed pursuing.

So, I majored in Computer Science with a minor in Mathematics. I could have also gone for a double-major but quickly discovered I didn't love mathematics that much -- at least my GPA didn't! I also chose to take honors courses (which definitely satisfied my math curiosities) and senior-level courses (I had a particular professor who was brilliant and I took any course he taught).

As someone hiring others, I definitely, definitely look for a degree. Unless someone had some solid work experience, I doubt I would consider someone without a degree just because I don't want to be the first one to find out if the potential hire can stick to something and finish it.

Hiring is more about finding someone that can fulfill a certain job and less about what that person "knows." So, in that regard I would disagree with ProPuke about having a degree, and I think his signature (lamenting his unemployment) may explain exactly what I'm talking about.

Don't get me wrong: I'm not anti-non-degree. My wife couldn't do math to save her life (at any level) and so has never been able to earn a degree (bachelor degrees in the US almost always require a minimum of two math courses). But, if she was out hunting for a job in a professional field (graphic design is her thing) then I would recommend that she at least get a certification or a degree from a specialist school (like an art school) which doesn't require the more broad-based liberal arts education (which would include math).

So, bottom-line: if you're looking to be employed in a professional capacity, then you need a degree (best if it's in your profession), or at least some objective evidence of a long-term commitment (2 years +) to something, whether it's education or a related job.

And to return to your original question about C++ vs. C#: C# is great, it's not necessarily "simpler" ... someone would argue it's "better" because of it, but I won't debate it. Learn programming, then the language will be second-nature. C# is a great place to start as you'll get a lot of reward for your efforts, which will in turn encourage you to keep at it. C++ can often be infuriating, even to those who've used it for many, many years, and could sometimes do more harm than good during your initial learning.

The key skill that employer's will be looking for: problem-solving. Master that and everything else is just details.

Share this post


Link to post
Share on other sites
I study computer systems engineering at UMIST (now manchester), and we learn almost everything there is to know about computer technology and software. Also we can build our own silicon chips, and circuit boards, so there is a high degree of maths tuition involved as well.

Share this post


Link to post
Share on other sites
Development isn't just about programming. It's about design. This you can study without being tied to any language (like patterns, uml, ssadm, whatever).

Languages like C# allow you to concentrate on higher design rather then messing with pointers and memory management all the time... the sacrifice being that you don't get the same level of control. The plus point is that you don't get the same level of control (cos you can't mess up as bad as easy) ;-)

If your real keen on Maths, artifical intelligence would probably be the best place to go vent your programming needs. Lots of maths, interesting research, etc. A lot of AI is going through sets, manipulating matrix, etc.

Share this post


Link to post
Share on other sites
Well, the language you choose to learn really has no bearing on programming except that it's a tool. In fact, if you really get into programming you will find yourself knowing a lot more than just a single language (any programmer worth their salt knows atleast something about a lot of languages).

A language may limit you grammatically, but that doesn't limit it's functionality. However, for the initial learning curve, C# is probably (assuming you get a decent book for either of them) not as steep. Also: You do not have to use C++ to make games, you can use C# just as well.

The real keys to programming are algorithms and data structures, and their general layout, in any language, is basically the same. All you really have to learn is the syntax to express those structures, which is fairly easy.

On the Math vs CS side... no idea, I was a history major [grin]

Share this post


Link to post
Share on other sites
Max_Payne: This post has lead me to wanting to learn C++ over C# about the Maths versus Computer Science...

You say "If you want to be a programmer, why don't you want to do computer science?"
Answer: It's not that I don't want to do computer science it's just I don't want to leave Maths (now I know CS incorporates Maths but I never want to stop learning Maths), I don't think that most the Maths I would be degree would be relevant to the type of jobs I wish to pursue but Maths is a hobby, I like to learn Maths unconditional to whether it would be applicable to any jobs I'm interested in.

Now about the Physics and Maths joint degree I highly think this would be very viable to me, I do not study Physics at the moment but I will be doing next year for 1 year, usually not enough to get onto a Physics degree. I would not like to go onto Physics anyway as I do not enjoy it that much, especially compared to CS or Maths. What made me think was how you said a good programmer knows the inner workings of computer, I would not gain this with a mathematics degree, maybe my desire for a Maths degree implies I shouldn't aspire to be a programmer.

Puffy_Taco:
Thanks for the link, I'll read that when I have time, I had like 3 minutes left until my sister is going on the computer...

shmoove:
I sure hope so, if I do get a Maths degree only time will tell :)

ontheheap:
Ultimately I wish to have learnt both, I suppose the question should be what should I learn first, I've decided to learn C++ first as this, so I've interpreted, teaches you more about the inner workings of a computer and the ways of a computer programmer.

Thanks for all the replies people, much appreciated :)

To the other people who have posted, I will reply to those posts within the next 2 hours, as mentioned earlier my sister wants to use the computer now. Bye.

Thanks in Advance
TomX

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
I haven't read to many of the entries because they look pretty long and I don't feel like wasting my time. However, I do have an opinion. Learning a programming language and learning how to program are not the same thing. You should become solid in the art of programming and then changing between languages will be easy. I currently have to work equally as much with C++ as with Java. This is not an issue for me because I learned to program, not learned a programming language.

Share this post


Link to post
Share on other sites
About C#
IMHO :

Two thinks that i disagreed about Csharp :

1) a small comunity.
2) C# language is a mix into C++ and VB.net. They will say "more fast to vb.net", "more easy to c++", i say "more slow that c++", "more hard to vb.net"


Anyway the choice of study both, i don't think this is worth. For be expertice in some language you need at least 5 years, if you want to mastered both, you will need 10 years.

If you want to program games then go for c/c++. If you want to made business programs then vb and java are the more wise option (cause they can be build fastly, and they have a lot of support)

Share this post


Link to post
Share on other sites
Slightly OT:

Quote:

I have no interest in:
.: Maths teaching
.: Statistics


Hmm, I did a statistics degree, and I've always had jobs that are extremely interesting. The problem is, when you're at school statistics is about 'how many red cars passed in the last hour', and 'how many ways can you pick 3 red balls from a bag with blah, blah, blah'. If you're really lucky you might get to play with simple versions of the Central Limit Theorem, which starts to hint at the possibilities of the subject matter.

Then you get to University, and suddenly the topic completely changes. Experimental design, stochastic modelling, markov chains - these are eye-opening topics and were, to me at least, hugely interesting. Then you get out in the real world and suddenly you find that instead of the dismal list of:

Quote:

Research, at university, if you are really good, but this *implies* teaching
- Statistics for insurance companies and such
- Accounting
- High school teaching


you have options like (and this is far from an exhaustive list):

Meteorology - who builds the predictive models for weather prediction?
Pharmacokinetics / pharmacodynamics - when you take a drug, what happens to it? What does it do to your body? What happens if you prolong the absorption phase (take a controlled release tablet, for example)? What happens if someone has poor gastric absorption? What happens if you take it with a grapefruit?
Organic modelling - if I block a receptor, what cascade of events happens?
Political prediction - how do you design a sample survey that gives an unbiased view of the upcoming election?
Ecological modelling - how do you take an estimate of the numbers of animals in a huge area?

(btw, if it's not immediately obvious, I've been doing the biological examples above! - that's why I'm so keen!)

Now bear in mind that there is a lot of overlap between many disciplines - such as maths, statistics and even CS, and studying any of these will open up many opportunities in all the other fields. I think someone else earlier up the thread said it best, and I paraphrase : just choose something you are interested in - that's the topic you'll study hardest in and get the best grades and they do help, certainly at the beginning of your career. But don't become a one-trick pony - just because you're studying CS, for example, doesn't mean you shouldn't learn about other topics that interest you in your own time.

All the best whatever you choose,
Jim.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Have you thought about an Electrical Engineering degree? An EE degree path will give you lots of math as well as computer programming.

Short term, C# should be fine. The important thing IMHO is to get your feet wet and start programming.

Share this post


Link to post
Share on other sites
Simagery: Another big post :D
This has changed my views on many things, this turns me towards learning to C#, but for some reason it makes me want to do Maths rather than Computer Science.

davidx9: I'm not really interested in Computer Engineering but UMIST is one of the colleges I will be applying to I think as I live pretty close to it, well Liverpools close enough...

paulecoyote: I see your point about planning and how C# has its advantages, about your comment on Artificial Intelligence gives me more options, I can add to my list of jobs that I would like to do, I'll add to my shortlist.

Washu: Now this post is just screaming at me to do computer science, maybe programming isn't for me if I am so keen to continue Maths education.

Anonymous Poster: See ^^^ another Pro CS post.

eng3d: This post tells me to try C++, all posts are saying different things, who should I listen to :'( Maybe I shall just try both.

JimPrice: Hmm, this is an eye-opener, statistics is another job on my list, Biostatistics, for this type of job would I need some type of education in Biology because I have the option to study an additional subject next year, it's between Physics and Biology.

Anonymous Poster(2): Hmm, I don't think I'm too interested in EE from the course descriptions in the prospectus' I've read.

Well Thanks for all the replies everyone, here's the latest:
Going to start learning to program (and more importantly design) using C#.

Current Job Possibilies:
Biostatistician
Computer Programmer
Some kind of Maths research

This is kind of becoming a non programming related post, would a moderator move this to an appropriate forum please.

Thanks in Advance
TomX

Share this post


Link to post
Share on other sites
C++ is actually quite fast to develop with, however this is only if you want to do somwthing complicated involving large large classes and lots of polymorphism, if you have the experince and the right tools, i find the vc++.net IDE much more helpful when it comes to error messages and general project maintenace then say devc++ or other ides. if u want to do CS at some stage you will do c++ programming anyway. to tell u the trueth if you understand the syntax of C# and are happy with all of the non .net ideas of c# as well as having some experince of making real projects u will actually be able to pick up on c++ very quickly (function pointers, dynamic_cast and little obscure things are as hard as it gets when one talks just about the language, so if you what what iam talking about u can code in c++). a maths degree is better for finding a job in the computer industry then CS, just look at the requirments for programming posts in any game studio or mid sized software firms. the MOST important thing is to do LOTS of projects, databases apps, websites, games, working on hl/quake mods (is actually easy and does get u lots of points with the interviewer as it shows u can work with other people's code)...all of this really looks impressive, especially if you have lots of big projects under your belt *cough* open source project participation *cough*.

also c++ in my opinion really is defenetly worh knowing, i with it i can do so dam much, from dlls containing database access object to games to [insert you project here]. and the benefits of c++ compared to RAD like vb6 become apparent VERY quickly. also c++ is the only language in which iam really not limited by syntax problems, i programmed in delphi/pascal/vb6 and there has always been times when i just cryed coz there was no c++ syntax equavalent in the above mentioned languages

Share this post


Link to post
Share on other sites
You know GregLoutsenko, you might have at least compared vc++ .net to vb .net :)

Anyway, I'd say it depends on how much time you want to invest in learning - In the end, the big difference is that C++ is more down to the metal - it has more ways in which you can mess up, but it will teach you a lot about computers and programing in general. C# hides a lot of the dangers from you, but with that comes less general knowledge gained.

Ideally, learn C++ for knowledge, then code in C# for efficiency :) or even better, VB .Net ;)

Share this post


Link to post
Share on other sites
For TomX:

Quote:

Paraphrase : Actually stats seems like it might be quite interesting!


I studied Maths and Stats at Warwick, and did my postgrad work at Leicester. Have worked in medical research for several years. If you have any questions about University level maths / stats, or what it means to be a biostatistician, PM me - although I'm certainly not saying this is the best option
(it's all up to you at the end of the day!), but at least I can probably inform you about some bits and bobs.

All the best,
Jim.

Share this post


Link to post
Share on other sites
I know a math major, recently graduated from KU (go jayhawks) whose in the marines now.

Suffice to say he dosent get the trivial BS work that most E-3s have to work thru. :) Having a math degree earns you a lot of respect, as most people, imho, fear anything beyond algebra. Forget programming if its not your thing. :
my 2c
Jason

Share this post


Link to post
Share on other sites
Since you do not really have a focused goal with regards to programming, by all means go with C#... it will be much easier to take in at first.

But other posters said it better. It is problem solving skills and the ability to translate that skill to code.

C# opens the door to Java and to some extent C++, which have similiar syntaxes.

My personal bias is the .Net platform, just because it lets you do so many things - and it is a 'clean' platform (no hacks).

-Todd

Share this post


Link to post
Share on other sites
I'd probably pick java if i was you, as it is multiplatform, which might be quite useful to showing off your programs to people on different operating systems.

I think c# is also supposed to be multiplatform, but that requires .net

Share this post


Link to post
Share on other sites
C++ is my favorite language, and for real problem solving (where you think through a problem, its shape, and the tradeoffs of various methods of implementing it - for more of the say 50-80% of the time) I find that it is as good as, or better than, any other language (for me at least).

Honestly the power and honesty of it's type system, pointers, templates, standard library, and C support all help keep it well suited to expressing solutions at whatever level of abstraction you desire.

That said, while I don't recommend against C++ as a first langauge (it IS a good choice), I also feel that C# is a really really good choice for first language learning.

In fact I like certain things about C# so much, I use it for all "little" GUI windows projects I do. I still go to C++ for "large" problems and "unique / intricate" problems ... because I find I can quickly model the system much fast with C++ classes/structs and templates (using the STL map and deque classes heavily), and then iteratively improve the code until it is a final, highly satisfying product.

My personal feelings are that C# and ruby are my favorite 2 learning languages (because C# is the best thought out C/Java like language - and ruby is the cleanest perl/python dynamic/scripting language).

Others would say Java and Python are just as good for learning, and they are probably right, I just know C# better than Java, and found that the first day I used Python there were 2 (very small) annoyances I didn't have with ruby ... but langauges are like poetry, what you like depends on who you are.

Share this post


Link to post
Share on other sites

This topic is 4764 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this