Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Perhaps it's a bit offtopic, but as I have not found myself a good pet language that I'd truly make my favourite yet, being a 21-year old university student, is there any other reasons of studying, learning C++ as an all-around language, than being in the game industry? The dream of working for a company like Valve has pushed me into learning C++, but I am not so sure anymore whether that is a good choice due to both the horror stories and simple statistics. I want to make the best possible investment in my future and so these kind of articles are strong manipulators.

I do love programming, even more than games, so it wouldn't be a problem for me to work at something less gamey. But should I nonetheless continue with cherishing C++ and making it the best language for me? Your replies are highly valued. Also, I do understand, that in reality, it's unlikely ever about just one language.



C++ has plenty of uses outside games and it's still one of the most demanded languages, although here on HN most people seem to work on web development and rarely need C++.

The truth is, if you don't like C++, you won't like working on an industry that relies heavily on it (however, not every game is done in C++, and certainly few games use it exclusively), so in that case it may be a good idea to go for another industry where you feel more comfortable. If you like C++, of course, keep using it, and don't worry about finding a C++ job, they're still very common.

The best advice, and the one you'll read around here most often, is: don't learn a single language. It's OK that you specialize in C++ (so do I), but never put all your eggs on a single basket. From C++ you can very easily go to C, Java and C#, which also provide a lot of jobs, and outside of the C family there is a whole universe of languages you should always be aware of.


I really like the way C++11 is and I already see how it is in so many ways more likeable than Java as an OO language. But a question arises: would the common C++ jobs be maintaining legacy C++98 codebases?

Also, when I am thinking about possibly being in web development, then is it a much more diverged path from the C family or could I somehow keep this as an open option? Is the easiest solution simply learn e.g. Javascript in parallel?


Good question. It depends on the field, I guess.

In academia there are a lot of ad hoc scientific simulations, and yes, many people still prefer C++ over Matlab, R or Numpy (because of speed or because they feel more comfortable with it). In those cases, you'll write a few medium-sized programs from scratch, and will probably be free to use the new features.

In videogames you will likely develop new code over an existing engine, which means that C++11 may be available, but the engine will probably be written in an older version of C++, and C++11 maybe won't be allowed during engine maintenance.

When maintaining big ancient systems, which are all over the place, chances are that you will be restricted to C++03 or maybe an even older version, but it's not the only possibility, so you may get lucky.

In any case, C++11-ready compilers should accept C++98 and C++03 code, so there is always the option of starting to use modern compilers, and when every potential problem is solved, you can use the C++11 features. Just hope your boss is not too averse to changes, and keep in mind that mixing modern style C++ with older style may result in poorly readable code.

As for web development, well, there actually exist a few people using C or C++, but the only languages from the C family you're likely to find on a web server are Java and C#, and they're less and less prevalent nowadays. You're more likely to find PHP, Python or Ruby. In the client you're obviously restricted to javascript, but beware: despite the syntax, it's very different from the C family. If you want to learn javascript, that surely won't hurt, just keep in mind that it carries a few paradigm changes (lack of static typing, object modeling and inheritance through prototypes, and A LOT of quirks about the syntax).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: