4 ms·
What languages do you already know? What problem are you trying to solve? I would learn C++ if you need to know it to get your job done. Like others have sai
by jpmec 13y ago
What languages do you already know? What problem are you trying to solve?
I would learn C++ if you need to know it to get your job done.
Like others have said, C++ is a complex language. Some people don't like it as a "language", some people like all the features it has. But at the end of the day, it is complex to learn and understand.
Also you have to think about a lot when programming in C++. You have to think about objects in terms of their life cycle. Compared to a garbage collected language, this accounts for mental overhead that could be applied elsewhere.
A couple of other negatives about C++:
1) Its harder to interface than C.
2) It has many different flavors that vary depending on what platform you are on.
3) Up until C++11 it didn't have built-in regex.
A couple of positive things about C++ and learning C++:
1) The STL is great, and has patterns that you can apply to other languages.
2) Generic programming to write re-usable code in C++ can be quite fun, and you can learn how the compiler can help you during compile time (+).
3) Learning OOP in C++ can be an artform, and can be fun. There is a lot of bad C++ out there, but there is some very elegant C++ out there as well.
4) You will learn that C++ is not C. You will also learn to chuckle at anyone that writes "C/C++". (Hint, if they write this, then they do not know C++)
(+) Note on this point: Some people from the more dynamic languages might poo poo this as not needed, and that in their favorite language you don't need to define types. This is a mixed bag, on one side, that is true and can let good programmers work faster. However, they either have to not test, or perform all tests at run-time. A compiler and linker can tell you much faster if you have done something stupid like call a method that doesn't exist. In a dynamic language, you have to write tests and hope you happened to test that branch of code where you made the mistake.