Para hacer una analogía poco precisa, C++ es a Python lo que un violín es a una guitarra. La guitarra es más accesible para el principiante, mientras que el violín permite al experto un control tremendo.
La elección del lenguaje de programación implica un compromiso. Algunas son:
- Velocidad de ejecución del código
- Velocidad de escritura del código
- Facilidad de uso (es decir, años de experiencia en el desarrollo de software para no apestar)
Como esta respuesta ¡describe, C++ permite altos niveles de abstracción de la programación (para la productividad) pero sin penalizaciones de rendimiento! En cierto sentido, C++ prioriza (1), (2) y luego (3). Varias bibliotecas (p. ej. quantlib ) donde el rendimiento es importante están escritos en C++. Actualizaciones de la norma C++ han añadido varias características para modernizarlo.
Por otro lado, (2) y (3) en la práctica son quizás más importantes que (1) la velocidad para muchos, si no la mayoría, de los propósitos. Python ha crecido enormemente En parte, por su accesibilidad a los profesionales que no han estudiado informática. En Python con numpy y pandas En este caso, se llama a las bibliotecas escritas en C, C++ u otros lenguajes compilados para los componentes críticos de velocidad, mientras que se utiliza el lenguaje interpretado de Python para todo lo demás. (Nota: Numpy, de hecho, utiliza LAPACK escrito en Fortran).
Ejemplo: Los punteros son una gran diferencia en C, C++ frente a Java, etc.
Para codificar bien en C y C++, es necesario perfectamente entender cómo punteros trabajar; debes entender la distinción entre un objeto y la dirección de memoria de un objeto.
En C++, es necesario pensar explícitamente en la gestión de la memoria para no fastidiar, mientras que se puede sobrevivir en algunos lenguajes de alto nivel como Python y Java simplemente ignorando o agitando la mano. ¿Pandas me dio una copia o una vista de un marco de datos? Uno puede producir código útil sin entender todos los matices mientras que en C++, probablemente estarías muerto.
¿Un paradigma común?
- Utilizar un lenguaje como Python o Java para los componentes no críticos para la velocidad
- Escribir bibliotecas y componentes importantes y sensibles a la velocidad en C++