I am starting to learn that C++ is there for a reason, and some of that is protection from "pain" of low level languages (lower than c++). Having said that maybe someday I ought to try ASM. |
The thing is, C and C++ are quite different animals.
C is a procedural language, so there are all these functions which do quite simple things. These functions might not have bounds checking, may not be type safe, and may not be thread safe. It is up to the coder to make sure things work as intended.
On the other hand, C++ has all kinds of things to make life easier. In terms of the language itself, there is function & operator overloading, classes, OOP, virtual polymorphism (runtime), exceptions, templates, static polymorphism (compile time), TMP.
Then there is the STL. One can achieve huge amounts by just using the STL containers and algorithms. These do have bounds checking, are type & thread safe, so this is one example of where the coder is spared the low level "pain". The STL is tremendously convenient in terms of functionality, especially with the algorithms.
And there are third party libraries like boost and juce for example, these have even more really good stuff.
Also, there are design patterns which can aid in writing quality scalable software.
I did some SX assembly programming and I have an itch to scratchwith regards to ASM. But the more I look at that OMG its light years ahead of SX and that's what c++ was invented in the meantime. |
Crikey, ASM is light years ahead of SX? Well you should fit into ASM quite easy then, maybe you should do some of that, followed by C, then C++ - although that would be a long hard road, it would certainly make for a well rounded education. I have thought that a really good course would involve detailed work with (every aspect of) ASM, C, Data structures & algorithms, C++, STL, TMP, Boost, Design Patterns, compiler implementation. Not sure if such a course exists :+)
Btw, there were a plethora of languages invented long before C++, including some OO ones. If one was only looking at the evolution of the C family, then C came much earlier than C++.
cppreference is a good site, it has detailed technical descriptions of C++. It is taken from the C++ standards, and is much easier to understand than reading the standard directly. I like it because it doesn't gloss over things like some other sites do. However it is good to look to look at the reference material here too, then go to cppreference for the detail.
I guess it sometimes pays to appreciate C++ by experiencing the "pain" of lower level languages. I think I'll take everyone's word for it. : ) |
For me, I taught myself C from K&R "C Programming" book, then was less than impressed by having to learn Fortran77 at uni, similarly with Pascal. Wasn't until years later that I learnt some ASM - a lot things clicked then. After playing around with others things like UNIX shell scripting, RDMS, VBA, I started on C++. Well that was a massive jump forward, so much capability there. I probably should learn another language such as D or Java, but at the moment there is always plenty more to learn with C++.
Probably immoral to post this, but you could buy probably quite cheap (it's not a big book, and is old). It's good to have an actual paper book :+)