Love learning C++, discouraged by all the negativity surrounding it?

Thank you for your answers!
Last edited on
My Google search endeavours show that C++ developers are not paid much more than any other set of developers, despite the fact that C++ is much harder to learn and less likely to be digested by the general software development community.

It isn't the complexity of the language that determines the payroll, it is the complexity of the job you do with it, and the importance of that job is to the business that makes the money from which to allocate that payroll. I would say complexity of C++ is nothing compared to the complexity of many of the systems programmed with it.

I use C++ because it's the only language that works (for the jobs I consider worth doing), not because it's intellectually stimulating per se. If you really want your mind to "get a rush", check out Haskell and APL. C++ is all about getting the job done, every part of it is there to solve a problem, not to be abstract or complex for its own sake.

And, for what it's worth (I am just one programmer, not a statistic), I am not aware of java jobs that pay half as much as the C++ jobs I normally see here in NYC. It doesn't mean they pay for knowing C++ (except maybe Bjarne Stroustrup's job at Morgan Stanley): they pay for making software that works and does what is asked of it.

Will I be worse off if I focus my time exclusively to writing my projects in C++ as opposed to say, Python?

Not "as opposed to", make it "at the same time as". As Stroustrup likes to say, you need to know 5 programming languages to be a good programmer. Here in finance it's common to do exploratory work in python and then when you have something that works, deploy it for real in C++. Or even interop between python model and C++ engine.

Should I shift my focus to trying to solve real-world problems with more simple and abstract syntax as opposed to fiddling with the intrinsics of C++?

Again, not "as opposed to": leverage your understanding of those intrinsics to make the programs simple.

It sounds like you're in college, in your place I'd use the college to learn computer science - data structures, algorithms, type theory if you're lucky - and spend your own time learning software engineering. If your server is not responsive, how do you find out why? If it's because one thread is run bound, how do you find out what line of code caused that? How do you redesign it to be tolerant of similar errors in future? Contributing to open source projects can help with engineering skills.

As for negativity you may find on the internet, see Stroustrup's famous one-liner "There are only two kinds of languages: the ones people complain about and the ones nobody uses" - http://www.stroustrup.com/bs_faq.html#really-say-that
Last edited on
I'm probably older than most or all the folks who post here but I'll give you my two cents, for what its worth.

I use and like C++, in fact, I'd go so far as to say its my main programming language. The reasons I like it are that the compilers are excellent and that it isn't proprietary, i.e., no one owns it. It is governed by international standards.

Right at this moment all my mission critical applications at work were coded in PowerBASIC, which is a truly outstanding language, but the creator of the language passed away several years ago, and now the language appears to have no future. Within the past several years I recoded everything in C++. But my C++ versions aren’t being used yet. But I have them as backup.

Some other issues I’ll mention are these. You had mentioned that you found references to C++ being bloated. I would agree with that. Like I said, I’m old, and my early years were spent working on systems with very, very low memory and resources compared to what’s available now. So I’m very biased in terms of efficient code designs and efficient coding practices.

However, with regard to this issue of ‘bloatedness’, one has to examine the issue more closely with C++ and parse things a good bit finer. The fact of the matter is that C++ absolutely has nothing to do with bloatedness. What’s bloated are various C++ Standard Library implementations.

Also, if one adopts the common C++ coding mantra of ‘encapsulate and abstract everything’, and make heavy use of everything in the C++ Standard Library, then one will most certainly end up with reams of large binaries.

And in a lot of instances it might not matter. Memory is about infinite now.

Because I’m old fashioned I don’t do things that way. And I don’t end up with bloated code. The other thing I’ve done to fight that issue is that I’ve written all my own library code. I don’t use anything whatsoever from The C++ Standard Library, and I’ve written my own version of the C Standard Library. Because I’ve done that I can create an x64 Windows GUI program in 2,560 bytes. There’s no bloat in that! Andd I use C++ Classes all the time. I have my own String Class, my own dynamic multi-dimensional array class, my own classes for connecting to databases, etc. The C++ Class mechanism is excellent for encapsulation.

Another issue Cubbi mentioned, and you mentioned it too, is complexity. My own philosophy is that I want to tackle very complicated coding problems with simple programming constructs which I fully understand. I do not believe I can personally be successful at using complicated programming constructs (classes with complex and deep inheritance hierarchies) to solve complex problems. Maybe someone smarter that I could do this, but I personally can’t. So I have to work within my limitations. Perhaps that is why C has done as well as it has. It tends to use very ‘atomic’ constructs which are fairly easy to understand. One can attack problems at a very low level. The same is true in C++, but with C++ one has the ability to encapsulate functionality into Classes, which can help organize code and improve syntax. All these things help one to think through problems. Hope this helps!


Last edited on
Topic archived. No new replies allowed.