They're two different languages. I don't see why python3 "replaces" python2 anymore than say ruby does. IMO they should have separate namespaces and invocation.
They do -- it's trivial to have python2 installed on the same system as python3. The deal with RHEL is that they will no longer include python2 packages at all.
That isn't really to say that somebody else won't make packages.
>The deal with RHEL is that they will no longer include python2 packages at all.
Generally, if you are installing your own application you will use a virtualenv with all the packages closed off from the base operating system and dependencies installed with pip (we're all doing this, right folks!?).
The same compilers and tools are used for both, many developers mix the two in one codebase, and use small features from C++ in "C programs" because the compiler allows them to. For example before recent C standards, function overloading by argument types or declaring variables in the middle of a function.
But Python2 and Python3 are way more similar than C and C++.
They share a special relationship, don't they? The difference to Python is though, that you're restricting yourself A LOT more when writing C and C++ compatible code (you're basically writing C with a few exceptions).