Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm about to start a "Bachelors of Science (Computer Science)" degree (in Australia, semester starts in march) and I'm presented with the option to learn c# or C++.

First of all, I already know C#, and I love C#. It is just so easy to use. Not having to worry about memory management or garbage collecting makes my brain tingle. I've made plenty of apps / games in C# and I find the syntax easy to follow, I love intellisense (which I think C++ doesn't have), and it seems just to be a nice language in general.

I've been trying to wrap my head around C++. First thing I can say... IT'S HARD. Half the time I'm thinking to myself: "Do I need to include a ^ symbol after String?", etc. The syntax just seems hard to follow and I get really aggravated over it. This is simply with me trying to teach myself, however, without a teacher.

My goal after my degree is to join a game firm, and assist in making games, so that has to be a top factor in my decision making.

Can you guys give me some advice?

Thanks.

share|improve this question

closed as off topic by World Engineer, Walter, Karl Bielefeldt, Thomas Owens Feb 3 '13 at 21:49

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

6  
You don't major in a language. You major in computer science, and a language is a means to produce software. That said, this question is off-topic per the FAQ. –  Cuttooth Feb 3 '13 at 20:46
    
I couldn't think of a better title to show what the question was for (university) within a short amount of characters. The word 'major' would instantly put someones mind on that topic. P.S. I know it's off-topic, hence why I didn't post it on stackoverflow; I saw some similar threads albeit not completely relevant to my question that weren't closed. That said, I've edited the title, but it's much more lengthy now. –  Anteara Feb 3 '13 at 20:48
1  
It seems to me that you are mistaking C++/CLI for C++. Also note that Visual Studio has IntelliSense for C++, but not for C++/CLI. Visual Assist adds IntelliSense for C++/CLI too. –  K.Steff Feb 3 '13 at 21:08
1  
@K.Steff I believe VS2012 does support IntelliSense for C++/CLI. –  svick Feb 3 '13 at 21:15
1  
Knowing computer science can give you the means to use any language effectively, given you spend time reading up on it. As for how comfortable you'd be, that's up to you. –  Amelia Feb 3 '13 at 21:29
show 1 more comment

3 Answers

up vote 5 down vote accepted

I would say you should definitely learn C++. There's a couple of reasons for this.

  1. It is still very widely used in game programming all over the world due to it's performance and flexibility. There is also a lot invested in the language from the industry in form of api's and libraries.

  2. Knowing C++ forces you to know how a computer works and executes code. This will help you to become a great programmer instead of just a decent one. Knowing the insides and outsides of how a program is executed will help you in this.

  3. C# is a great language and is very easy to use. Knowing another language will most likely help you in understanding how C# can be used in new ways. Knowing more languages will aid you in solving problems in more ways which is important if you're aiming to be a great programmer.

  4. Although C++ can be scary, Computer Science involves knowing math, algoritms and problem solving. Settling for C# and taking the easy way out, may hinder you in learning and appreciating these other things.

Hope this will help you in your decision :)

share|improve this answer
1  
Would upvote but I can't since no rep. –  Anteara Feb 3 '13 at 21:43
2  
@Anteara did it for you. –  zxcdw Feb 3 '13 at 21:51
add comment

You can learn either one though C++ is more typically used by the so called "AAA" title set. What you really need to learn is 3D math. Lots and lots of it. Cram as much as you can into your program. Physics, Vector Calculus, Differential Geometry, and as much Linear Algebra as you can stand. Geometric Algebra is also useful along with optimization, numerical methods, and some data analysis. I'd almost argue you should major in Math or Physics and do a CS concentration/minor if you really want an edge.

As far as the CS side of things, understand Algorithms and their rigorous analysis sooner rather than later. Parallel Computing is also virtually a must since you'll need to understand multicore and GPU architectures. Networking and Database theory are also solid bets.

As far as C#, given Microsoft's recent decision to shoot XNA in the face, it may not be the best choice for game dev work at the moment. But it's hard to say what will be used. You might just end up doing game dev work for iOS in which case you'd likely use Objective-C.

share|improve this answer
1  
Actually, when choosing between C++ and Objective-C, the best is to go for the plain C. Especially when talking about games. –  Sulthan Feb 3 '13 at 21:00
    
The point I'm trying to make is that linguistic concerns are secondary. –  World Engineer Feb 3 '13 at 21:01
    
That's also very true. –  Sulthan Feb 3 '13 at 21:31
add comment

You say you already know C# so you should learn C++. You don't go to college to coast on what you already know or is easy to learn, you go to college to get help learning the hard stuff. By the time you get a B.S. in Computer Science you should be fairly competent with a couple of languages and undaunted by the prospect of learning new ones as the need arises.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.