C++ still?

So about half-way through my college, erm, life I find out that my school has dropped C++ from their curriculum all together. They've opted instead to focus on Java, C#, and other web-based languages.

This confused me because I was thinking that C++ skills are the most widely sought for in the software industry. Today however I realize that with the booming popularity of mobile app development that my school may have a point, with mobile devices like the Android OS using Java and Windows Mobile Apps built with C# (and XNA?). This left me to question where C++ comes into play now-a-days.

Mobile platforms seem to be fine with Java and .NET, PC.. Well you can use anything on PC/Mac, and I don't know anything about game consoles/handhelds except that Xbox has(had?) XNA. Is it worth the hassle of learning C++? I mean C# (like Java, Ruby... Most of the "modern" languages) is such a newbie friendly language in comparison and was built on top of C base. Where are C++ devs still needed? Is that what the game development studios still want? Should I still plan on learning C++ if I want a career in game development?
 

Michael Brookes

Game Director
We use a mixture of C++ and Lua. C++ is used typically for the core of the game and to speed up parts of the Lua scripting where needed.

Personally I think knowledge of C++ is useful as well as knowing other scripted languages. However it really depends on what you want to do? For consoles and PC C++ is needed - you don't need C++ for PC, but for anything heavy duty it makes a difference.

Michael
 
Thank you for the reply. Looks like I better start learning it after all. Makes me wonder, then, why my school dropped it. I started guessing it had something to do with C# but I'm finding that less likely to be the reason.
 
I personally find C++ has the largest user base, thus if you get problems making scripts in C++ its reasonably alot easier to find a forum where you can ask when you get stuck. Also C languages are v.powerful :)
 
If you know one programming language you know them all, so I wouldn't worry about it too much.
If they force you to learn c# and Java, you're really only going to need a "learn C++ in 21 days" style book to get yourself right up to speed. What you learned with the other languages will translate directly. You'll be a ninja-coder in no time.
 
My thought on it. Well C++ is a lowerlevel language then C# or Java. You get mor power and much more freedom to do wrong. For C++ games there is this need to setup and resolve memory management and also the pointer hassle it brings. Also C++ is not a pure full fledge OOP language. So some pitfall there to.


Language for rogramming is more a point of readability and cleaness
Machine code is the lowest. // 10110001 1110111 or someting hex 1B F8
Assamler level up but very close. // Push AEX
C more just a level more readale but still very close
C++ OOP just a level higher
C# level highe much mre readale and cleaner language.
Script language
not a programming language but usefull
Pseudo code for function blok design
UML for design and communicating it standart.

The game industy is mostly C++ for heavy stuff and with there huge code bases would stick to it.
But C# is good enough to start with. And also decent game capable.
Mastering C++ right take much longer than C# and the need of best practise guidance is a must to.

ICT college drop C++ make sense why the computing industry isnt about realtime computing wich is a specific domain. Its about productivity and time to market and the tool that fits that job. Where most software waits on user input. C# and java and any higher level langguage fullfill that demand more often then C++ and as a junior programmer entering the job market its a good start to take of.

But if you aim is to break into the gameindustry well C++ has a lot of value.
For hobby or small team and projects C# is fine.
 
I've studied many languages from Ada to C++.. I think its true to say that if you can master C++ you can use anything.

When it comes to software that is performance related C++ really does offer power over others. Remember Java is interpreted but perhaps allows your college to focus upon OO fundamentals rather than the dreaded pointer.

Personally, I like heavily typed languages because it goes a long way to avoid the biggest issue I think there is with C++; there being a lot of developers out there who write appalling unreadable code and yet it doesn't need to be that way. Thats the difference with good and bad software engineering. Its worth considering that some poor wretch in the future might have to read the code and work out whats going on.

Having said all that, it might be worth asking if the dropping of C++ is dumbing down the difficulty.
 
Last edited:
If you know one programming language you know them all, so I wouldn't worry about it too much.
If they force you to learn c# and Java, you're really only going to need a "learn C++ in 21 days" style book to get yourself right up to speed. What you learned with the other languages will translate directly. You'll be a ninja-coder in no time.

Yeah this. Both Java and C# come from C++, so see which of those you prefer (if you have to choose that is) and just know you will be really good at object orientated programming when you come to using C++ :)

I'm an old Basic and (very minor) assembly language programmer, that stopped all that decades ago and now looks at stuff like C++ and mostly, so far, goes 'What?' ;)

So having that java or C# background will only help you when you take up C++.
 
Learning the syntax and basic semantics of C++ won't take very long and the higher level software engineering skills are language neutral. However, C++ takes a long time to master, mainly because of its power, and you will have to learn more than one set of design idioms in order to work on all C++ code. At graduate level I wouldn't worry too much. No employer will expect you to be a master programmer in any language. Learn the basics from a book and you can pick up the rest on the job. If you have a good employer you'll have a mentor but don't bank on it. In this industry you usually have to teach yourself.
 
Last edited:
Learning the syntax and basic semantics of C++ won't take very long and the higher level software engineering skills are language neutral. However, C++ takes a long time to master, mainly because of its power, and you will have to learn more than one set of design idioms in order to work on all C++ code. At graduate level I wouldn't worry too much. No employer will expect you to be a master programmer in any language. Learn the basics from a book and you can pick up the rest on the job. If you have a good employer you'll have a mentor but don't bank on it. In this industry you usually have to teach yourself.

The only power it offers is a backward link to assembler and semi state of pointer and address manipulation. If it weren't for that we'd all be using something else. True ASM is even faster - believe it, but your sanity might be worth the ability to write in re-usable, understandable code packages.

If I were designing a language, and I got a 1st at that subject, long time ago now, n my class at Uni, I think I could do better.
 
Having coded since I was 9 to varying degrees, in many levels of "machine closeness" I have never used c++ in anything other than a tutorial (ok I lied once for a serverside handler in Documentum, but only because my technical manager made me do it due to some ill conceived stickling for "avoidance of change").

I learned zx81 basic, Spectrum basic, then turbo pascal, then turbo pascal 7 on windows, then delphi, haskel & gopher (functional languages, decades before the current hype trend), Visual Basic (the man made me do it), Java (the man again), c# and I am stuck with Java for current work.

That's not counting all the platform specific scripting and tasking languages like docbasic, dql, sql, dapi, php, asp, xul, html, vrml, xsl.. buzzwords have been falling out my cooling vents my whole career, I can't remember them all. Some of the above I used a lot, others just to get part of a job done.

I am sure most of the developer types on this forum, especially those forum noobs like me who played elite as teens, have similar stories. The moral is that you will likely need to learn something else at your first job anyway... and then some. One thing should stand out from all the replies here though and that is C++ is an excellent launchpad for learning the rest of your arsenal of code. It teaches discipline, requires good habits and cleanliness, allows complex organisational constructs and packaging of common functionality. Amongst other virtues these will stand you in good with prospective employers at the technical interview stage.
 
So about half-way through my college, erm, life I find out that my school has dropped C++ from their curriculum all together. They've opted instead to focus on Java, C#, and other web-based languages.

This confused me because I was thinking that C++ skills are the most widely sought for in the software industry. Today however I realize that with the booming popularity of mobile app development that my school may have a point, with mobile devices like the Android OS using Java and Windows Mobile Apps built with C# (and XNA?). This left me to question where C++ comes into play now-a-days.

Mobile platforms seem to be fine with Java and .NET, PC.. Well you can use anything on PC/Mac, and I don't know anything about game consoles/handhelds except that Xbox has(had?) XNA. Is it worth the hassle of learning C++? I mean C# (like Java, Ruby... Most of the "modern" languages) is such a newbie friendly language in comparison and was built on top of C base. Where are C++ devs still needed? Is that what the game development studios still want? Should I still plan on learning C++ if I want a career in game development?

It is better to study friendly and easy to learnlanguage first. So better to take languages like c# , because C# http://csharp.net-informations.com is simple to learn and Object Oriented. Its syntaxes are very similar to java and C++. So you can study c++ or Java very easily after you study C#. So take you first step is to study C#.

yang.
 
... If you have a good employer you'll have a mentor but don't bank on it. In this industry you usually have to teach yourself.

This is a very good point, that hit a raw nerve with me. The luxury of having a mentor would have made my career far more structured and infinitely less stressful.
 
Languages are just syntax. As long as you understand the conceptual ground of how a computer execute the machine code and have a good understanding of different development and programming paradigms you can always learn another language. I never really coded anything big in C++. But I've been programming in a lot of different other languages... from mc68k assembler through C, Obj-C and up to Java, C# and a diversity of scripted languages. The language change have never been a problem since I know the difference between structured, OO and functional programming and how everything in the end is executed as structured machine code.

So to the basic question in the beginning of the thread:
I see no reason for schools to teach specific languages. As long as they teach how different paradigms work, how computers execute code, how data structures are implemented and how you translate algorithms to code.
 
Last edited:
This is a very good point, that hit a raw nerve with me. The luxury of having a mentor would have made my career far more structured and infinitely less stressful.

I've always done it because it is a basic way to get people up to speed quicker.... sharing knowledge and experience makes everyones life easier...

As far as the OP is concerned....

When interviewing I will always allow a candidate enough rope to hang themselves. (Ok sounds cynical, but I have a preference for people who tell the truth and know their limitations) - If you claim to know things I'll often pick on these as a way to drill down into your knowledge and suitability.

If I am recruiting a C++ candidate position, and a candidate only knows Java I will interview them with a view to determining whether they are capable of doing the Job (C++ syntax and idioms are learnt mostly by experience) - That means I try to determine whether they are they good at OO, Using data structures and solving problems.

A word of warning (to the original OP) :) if a candidate tells me that they have experience in C++ when I interview them and then they can't answer what I consider basic questions (Including some interesting syntax) It will colour my view (Not fail them, but put my back up) - "Learn C++ in 21 Days" is probably a fine book but if you've only been tinkering for 21 days it will be very apparent to anyone who's been in the business for years....

Often You should prefer to understand general concepts, how and when to use vectors, lists, trees etc... ; Threading and networking (basics) and Databases - These are applicable to every language and a lot of work situations. If you can put across the fact that you understand the basics of how and why you use these things (after college) then it will be much more useful to you.

My previous company used to hire grads and then put them on an 11 week course to train them in C++ and it's use in the company. (along with other stuff...)
 
I've always done it because it is a basic way to get people up to speed quicker.... sharing knowledge and experience makes everyones life easier...

Yes it does, but that ideal is not generally shared by all in the workplace. My first would-be mentor was a self serving contractor who's only interest was protecting his own position. I am now a contractor, I hope I behave better wrt my greener colleagues, especially the ones who will be better programmers than I am.

My previous company used to hire grads and then put them on an 11 week course to train them in C++ and it's use in the company. (along with other stuff...)

11 weeks of training! I had 2 weeks over the 4 years of employment in my first grad. position.

To the Op.. try and get a job with Caribou's previous employer ;)

Seriously though, most interviewers in any field will give you ample opportunity to make bold claims you maybe can't back up. Caribou's advice here is probably the biggest point to take to heart.
 
Personally, I like heavily typed languages because it goes a long way to avoid the biggest issue I think there is with C++; there being a lot of developers out there who write appalling unreadable code and yet it doesn't need to be that way. Thats the difference with good and bad software engineering. Its worth considering that some poor wretch in the future might have to read the code and work out whats going on.

Sometimes that poor wretch may be you, 15 years after you wrote it and dont remember a thing about the project :eek: Been there done that, not improved any...

I tend to go into a project in a bit of a blaze trying out a new idea seeing if I can make something work in a non conventional manner. I do a lot of heated tweaking bug fixing whilst its all fresh in my mind then leave it when it does what I wanted. Its not unusual to find a project of mine having not a single piece of annotation whatsoever:eek:. Fortunately Im not a frequent programmer these days.
 
Top Bottom