Fine, go explain me lvalue and rvalue semantics. Go. You will be confronted very fast with too many advanced topics. Even the STL requires a wide range of knowledge. It does not make any sense at all to learn that as a first programming language. Thinking about how you structure your data, what your data is, etc is so very important. If you just start with some arbitrary language without that you will in the best case turn into a stupid CRUD money. That is what most programmers are. I myself have wasted too much time like that, and I am regretting it very much.