Si tratta in particolare di un problema di implementazione, non di una lingua (tuttavia la digitazione è diversa nelle lingue).
Pedanticamente, sia Python che amp; C ++ sono lingue complete di Turing con molti binding a librerie esterne, quindi ogni programma che potresti scrivere in Python potrebbe essere riscritto in C ++ e viceversa.
Su Linux, /usr/bin/python
(a.k.a. cpython ) è un interprete bytecode
ma /usr/bin/g++
è un compilatore nativo
Quindi molto spesso un programma C ++ sarebbe più veloce del programma python equivalente .
noti che esistono compilatori python sperimentali (ad esempio pypy ) e interpreti C ++ sperimentali.
Quindi C ++ è utile per i programmi che devono essere veloci, ma possono accettare più tempo di sviluppo e Python è utile per i programmi che devono essere scritti rapidamente.
Probabilmente non scriverete una shell Unix o un kernel OS (o anche un compilatore C ++ ottimizzante) in Python (ma in C ++ o C), e probabilmente non scriverete uno script sysadmin o un'utilità in C ++ (ma in Python).
Inoltre, un programma C ++ può essere normalmente distribuito come un eseguibile autonomo (collegato staticamente o utilizzando molte librerie condivise C ++).
Finalmente, C ++ è tipizzato staticamente, e Python è digitato dinamicamente. Ciò significa che è necessario eseguire l'intera analisi del tipo di programma per compilare Python in codice efficiente. Tuttavia, alcune implementazioni JavaScript JIT (ad esempio v8 ) sembrano indicare che le lingue digitate in modo dinamico potrebbero essere compilate in modo efficiente con un molto impegno (sullo sviluppo dell'implementazione). Ma nessuno ha pagato un simile sforzo per una mitica implementazione del compilatore di interi programmi Python.
BTW, alcune implementazioni comuni di Lisp (ad esempio SBCL ) ti offrono una digitazione dinamica e un'espressività simile a quella di Python con una performance vicina a C ++.