C++ grew from C, and changed a few things...before adding alot on.
Today C is however still used widely as a C-api is generally more compatible and esp. compiler compatible (exporting of C++ code to dynamic/shared libraries is a compiler specific thing, so eg: need a VC++ compiler if built in VC++, a MingW if built in MingW etc, wheras for C, there a standard (=> will be used everwhere) format for exporting functions).
C++'s object orientation is something you can appreciate the larger the programs you write become (though i'd encourage writing program after program, only just making the new one larger than the last). But for a while, it would mainly be C like structures youd be using, the syntax almost exact. (ie functions, eventually structs, typedefs and pointers and fucntion pointers). The main differences to be experienced are merely which libraries to use, and the operators new and delete. So for months , growing really from C into C++.
asm is a powerful language.
So is writing in machine code heh.
Its practically just a set of mnemonics for machine instructions, and was developed as the first way of abstracting the task of programming (prior to this only a mathematical genius could consider programming lol).
It is a valuable thing to learn, as it gives you certain understandings of things.
I think that to really grasp asm an understanding of the base electronics involved is needed: something which takes you just beyond high school physics anyway.
Otherwise, various things just wont make sense...Theyll seem like inappropriate thing to be done...but arent as they related directly to the hardwares required arrangement.
Asm isnt too commonly required, and even less nowadays.
Its very tedious to write portable code in asm.
Not just OS portable..processor portable...
Change from 32 bit to 64 bit processor, and you need, no not to recompile but to re-write your asm.
High level language compilers can also optimise code greatly, and even with specification to a processor (Pentium 4s especially: which introduced alot of changes in the relative execution times of various instructions to optimise their processor massively for particular tasks).
Asm's also pretty difficult to read...Takes time, and once someone writes something for a company in asm, there are so many less people for them to obtain if they later want to update it. Slow, expensive etc.
Compilers can produce optimisations that are computer mechanical, and beyond a humans observations. And with risc processors on things like consoles, theres no chance of programming asm for them (reduced instruction set is beyond humans understanding on optimal use)
Its a good thing to learn, even make some programs in.
But, not really a practical programming language for a world with....money.
Also remmember that one day you are going to die.
Would you rather have less done, with the satisfaction that it ran 2% faster? lol.
So...Learn asm....good to know.
But dont exclude higher level languages, as they are there for thier efficient reasons.
Anyway, You can learn asm step by step every once in a while, while learning something else. Alot of it is actually mechanically simple, making it hard to forget.