To make a loose analogy, C++ is to Python as a violin is to a guitar. The guitar is more accessible to the beginner, while the violin allows the skillful expert tremendous control.
The choice of programming language involves tradeoffs. A few are:
- Speed of running code
- Speed of writing code
- Ease of use (i.e. years of software development experience to not suck)
As this answer describes, C++ allows high levels of programming abstraction (for productivity) but without performance penalties! In a sense, C++ prioritizes (1), (2) then (3). A number of libraries (eg. quantlib) where performance is important are written in C++. Updates to the C++ standard have added various features to modernize it.
On the other hand, (2) and (3) in practice are perhaps more important than (1) speed for many if not most purposes. Python has grown tremendously, partially because of its accessibility to professionals who didn't study computer science. In Python with numpy and pandas, you essentially call libraries written in C, C++ or other compiled languages for speed critical components while using the interpreted Python language for everything else. (Aside: Numpy in fact uses LAPACK written in Fortran).
Example: Pointers are a huge difference in C, C++ vs. Java etc...
To code well in C and C++, you need to perfectly understand how pointers work; you must understand the distinction between an object and the memory address of an object.
In C++, you need to explicitly think about memory management to not f*@#($* up while you can survive in some higher level languages like Python and Java just by ignoring or hand waving. Did Pandas give me a copy or a view of a dataframe? One can produce useful code without understanding all the nuance while in C++, you'd probably be dead.
A common paradigm?
- Use a language like Python or Java for non-speed critical components
- Write important, speed sensitive libraries and components in C++