I have been learning C++ for a while, not to long as in years of experiences. I am comfortable programming in C++, do not get my wrong, I am currently learning other languages as well, but I still enjoy C++ a lot. I am just curious, is it still worth learning it? is it useful, do companies still use C++? As far as I heard it is perfect for game design. But what about software? every time I come across forums, there seems to be someone either describing how C++ sucks and it is useless, or how much it is hated. As far as I see it, I have no problem learning and using the language...
I would go so far as to say that C++ is 'the industry standard'.
If that's not enough for you, ask yourself, why shouldn't you keep learning it?
I personally am not leaning towards a career in programming, but I still continue to learn C++ for myself/personal growth. I'm not sure if that makes much sense, but that's what my gut instinct tells me to write.
I had no experience with games, but C++ is the language for resource-constrained, deterministic, and infrastructure programming: it's used where precise resource control is required: from printers to jet engines, where high speed is required: open road toll collection, telecom systems, friend-or-foe, high-frequency trading, and where where high level of abstraction is required with no or minimal performance penalties: in the core internal libraries of most major software companies. I enjoy C++ programming jobs, but your mileage may vary.
It always came across my mind on what exactly is fast about C++. I always hear it has a lot of speed, but never understood the speed part. Is it the debugging? I know it is very close to the hardware which means there are things that can be done that most other languages do not offer like Java. I hope I am right?
> every time I come across forums, there seems to be someone either describing how C++ sucks
> and it is useless, or how much it is hated.
That has been going on, more or less incessantly, for the last two decades or so. Even in pure C++ forums like this one, you would find someone who doesn't have even a minimal understanding of how C++ is used professionally, spewing gratuitous inaccuracies about it.
March 2013: C++ continues to be alive and well; continues to be indispensable for a whole lot of domains; and continues to have detractors "either describing how C++ sucks and it is useless, or how much it is hated."
> I know it is very close to the hardware which means there are things that can be done
> that most other languages do not offer like Java.
Well, C++ can be very close to the hardware; but it can also be at a very high a level of abstraction if you so wish. One of the fundamental strengths of the language is that it allows us to operate at different cognitive levels, even within the same program.
In regards to the speed of C++, it translates to assembly and machine language very efficiently, and it does it very fast too. The C family is a 3rd generation programming language. This basically means, the C family is a level up from assembly language, which is a notch above machine language; what your OS reads as pretty much straight forward commands. C is a more user-friendly language than assembly, which consequently caused the C language type to become more complicated and even embedded in some aspects. Ultimately, this takes more time for the OS to break down and translate to the raw language that it reads.
The beauty of the C family, as stated above by others, is its ability to efficiently and quickly perform the many tasks that intricate software designs require.