(no title)
OneGuy123 | 5 years ago
The main thing left is understanding pointers vs references vs stack vs heap allocation (egthe instance.x vs instance->x difference) because C++ has those explicitly different pointer vs non-pointer intances of "instance", while C# or Java hide that difference (so if you know C# you can slightly think of it as struct vs class in C# difference since struct is copy-by-value while class is always a reference (a pointer).
Moving away from objects doesn't make sense: objects are perfectly fine and usable. It all depends on the context. Anyone who says "don't use objects" is a religous zaelot who does't see the forest for the trees anymore. For certain extreme performance cases objects can be bad, but in ~95%+ of cases objects are perfectly fine. We are again starting to enter "it all depends on the context" territory.
IMO C++ got some very bad rep for no reason at all: it got mythologized into a "very difficult arcane language that people makes meme about". So because of this people think C++ is some boogey man, while it's really not. Unless you are making life-critical software like avionics it honestly isn't much more difficult than C# or Java.
Ironicaly you already understand the difference between pointer and non-pointer since you know instinctively that an "int" type is will get fully copied while in Java a class object is a reference (pointer). C++ just makes this even more explicity since YOU can decide if a class is a copy-by-value or a reference on the fly (assuming the class doesn't have complex sub-fields inside of it that require their own complex copy-by-value vs reference rules).
Also due to C++ being mythologized as an "super difficult language" you get some extra XP on resumes if you state that you know it.
User23|5 years ago
If we change 90% to about 20% then this becomes a true statement. Yes, you can get toy code to compile and apparently work by pretending C++ is Java with some low level stuff that can be ignored, but that's nowhere near proficiency. The language is full of seemingly obvious concepts like static initializers that function unlike what you'd expect from working with C#, Java, or even C.
> IMO C++ got some very bad rep for no reason at all: it got mythologized into a "very difficult arcane language that people makes meme about".
It got that reputation on account of having an 1853 page standard that even members of the committee admit no one of them fully understands.
> C++ just makes this even more explicity(sic) since YOU can decide if a class is a copy-by-value or a reference on the fly
And this is why it's such a kitchen sink standard. The C++ community is so large and has so many stake-holders relying on diverse problem domains and programming paradigms that the standard has to permit the developer much greater control than higher level languages like Java.
In closing, to speak to the original poster's question, becoming proficient in C++ is in no way a career limiting move, and will definitely open up some opportunities. However, becoming an expert is a very deep rabbit hole to go down. Even a level of proficiency that will allow you to work on a large project will take some serious intellectual commitment. One way this is apparent is how the C++ community has its own large and distinct conceptual lexicon that for the most part has not worked its way into the general programming community. I personally found working on large C++ projects intellectually gratifying, so I would recommend helping out on the project for a year or so to start. That's enough time to get a very basic understanding of the language and see if it's something you really want to become an expert at. And even if you don't, you'll learn a lot.
mucholove|5 years ago
One thing: I use Objective-C and I really like it. I don’t feel the same way about C++. If you feel the same way, honor the feeling. Still, I think you can learn C++ and have it be useful for you.
My best wishes!