Why would you want to learn C++ today?
Why not, it's still one of the most commonly used languages out there
and it's also one of the more advanced ones. I claim that anything you
learn while working with C++ can be of use in other languages as well,
the reverse however is not always true since some other languages are
simplified (to allow faster learning) which makes some constructs
impossible.
No in theory, yes in practice. C++ is an extension of C done in
several evolutionary steps. If you don't know the roots of the
language it just appears weird to you.
Most (I among them) would probably disagree with that statement,
knowledge of C is in no way necessary to learn C++, however if you want
to learn how to use "all" of the C++ language you'll sooner or later
come in contact with the C heritage of C++ and thus will learn how to
program in C also.
The roots of modern C++ (which is mostly concerned with OO and generic
programming and less with procedural programming) are not in C, but
rather Simula and I doubt that you'll recommend the OP to learn that,
will you?
Certainly. Many basic programming concepts are the same. Some C++
libraries, e.g. STL, are directly derived from C.
I'd say perhaps, that depends on which parts of C++ you'll be using, if
you focus on the OO parts you'll have less use of what you learned from
C, if you want to use C++ as C with classes then you'll have more use of it.
This point of view was propagated for some time and it probably left
many students in confusion.
The reason is simple, old habits die hard, and by learning to program in
C first you'll learn a certain "style", certain ways to do thing and
organizing your code, store data and so on. The problem is that C is a
procedural language while C++ is a multi-paradigm language supporting
procedural, object-oriented and generic programming, and all of these
paradigms leads to different "styles". If you learn C first it might be
harder to learn the "styles" needed to efficiently use the other
paradigms and to make the most use of C++ is to use a mix of them.