Settings

Theme

Ask HN: In the current climate, is it a poor decision to learn C++?

12 points by MarcusP 11 years ago · 10 comments · 1 min read


I studied Computer Science, have always been a Java developer and I am still young, living in London.

I am considering picking up C++ more seriously so that I can spend more time closer to the metal where there is more to learn which is closer to my technical inclination.

However, I worry about the job market for C++ developers who want to be rewarded for their technical ability. I know in the past few years we have seen a boom in the financial industry around high performance systems, but are we seeing the tail end of C++'s popularity? [1]

It seems like a very vague question, but given the current trend, would I be shooting myself in the foot if I jumped the Java ship and embarked on a 5 year quest to learn to ins and outs of C++?

Is C++ here to stay as the language of choice for ultra high performance? Is there sustainable demand for the benefits of C++?

[1] http://langpop.com/timeline.html

vishnuharidas 11 years ago

Two main areas: System Application / Native Application Programming AND "Business Application" programming.

System programming still considers C/C++ the best. Heavy applications that need good performance are still built using C/C++. For example, Google Chrome, Adobe Photoshop, Games etc.

For developing "Business Applications", they need a rapid delivery system, easiness of development, better collaboration etc., and most of the business systems consider Java programming. Because Java has a good collection of libraries and frameworks, great support and documentation. It's suitable for both desktop (Eclipse IDE is developed in Java) and web applications.

Other popular business application languages include Javascript (not related to Java in any ways), Python, Ruby, Scala etc.

So, you need to consider which is your preferred area to work on.

- If you are too much interested in developing OSs, drivers, games, or high-performance applications, you can go with C++.

- If you like to develop business systems (like websites, weather APIs, BigData analysis, this HackerNews website, social networks, online-shopping, share-trading platforms etc.) you can leave C++ and learn some trendy langs like Java or Ruby.

tannk11001 11 years ago

We're finally starting to see some exciting substitutes for C++ in general systems programming, and increasingly many embedded devices are able to support runtimes that are more tolerant of faults and inefficiencies.

So even with it's innovations, C++ will probably eventually fall out use over the course of your career. But spending a few years focusing on it will give you a tremendous amount of foundational knowledge and shouldn't hurt your ability of step into something else as it comes up.

If you want to do systems programming or other high performance work, it's probably your best bet, even while you keep an eye on some of the technologies that are competing for the same space.

veeti 11 years ago

Step out of the HN echo chamber. C++ isn't going anywhere.

  • Someone1234 11 years ago

    C hasn't decreased in popularity, but there are some indications that C++ has been losing popularity in the last ten years (e.g. tiobe).

    With GoLang and Rust coming on tap for real, the next ten years will be very interesting as far as C++ goes (they really have the potential of "eating" C++ more than C in my opinion).

    If you look at this site:

    http://langpop.com/

    And turn off everything (set to 0) except Github, it is rather interesting seeing what new code is being produced today. So while I definitely think the legacy C++ code base is massive, and that jobs will exist for some time to come (40+ years), it doesn't seem like a lot of new projects are choosing C++ (I certainly wouldn't for a new project, unless it was a game, or I needed a specific library written in C++).

    Security issues are a major boat anchor around C++'s neck, and while the newer standards solve a lot of those issues, if you're going to have to almost completely re-write to that, you could equally consider Rust or GoLang when they've stabilized a little.

    But, right now in 2015, C++ is fine and the jobs should exist enough for it to be worthwhile. I am more just saying "keep an eye on it."

  • chimmychonga 11 years ago

    I think C++ will always be a big player. I'm sure it will lose popularity to some new languages as time goes on but I doubt it will go away completely. There's just too much stuff already written in it and too many companies dependent.

lingua_franca 11 years ago

you better decide what you are interested in doing first, then pick a language that suits best. if you want to do kernel/OS, choose C; for big data Java/python is the way to go. C++ thrives in middle-ware systems, like messaging/storage/databases/gaming...

jedi_master 11 years ago

If you can wrap your head around advanced C++ concepts and idioms, learning other languages will be a walk in the park. All the knowledge will be 100% transferable to anything you use in future. Also a lot of companies using java, c# etc will take c++ experience as relevant experience even though you aren't a java/c# expert, but the inverse is not true.

It's never a bad idea to learn something that has shaped essentially everything that has come along since.

SamReidHughes 11 years ago

I think learning C++ is fine, and I don't think you should worry about obsolescence. I think any language that replaces C++ will still use its idioms. When it comes to high performance stuff, the real knowledge is not in C++, it's in dealing with cache-friendliness, how to shovel stuff in/out the network or other devices quickly, architectural stuff like event loops vs. threads. I think C++, the language, is a tiny portion of that knowledge.

bnejad 11 years ago

I don't see a need to jump ship with java... Stick with whats paying you but that doesn't mean you can't learn C++ on the side. Personally I don't see C++ going anywhere (I code C++/C for a living) and learning a language closer to the metal will make you a better developer overall.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection