Mejor respuesta
Mira este meme de Python
Respuesta
Algunas razones:
- En cierto punto, el cerebro humano no puede percibir ninguna mejora en la velocidad. Si vuelvo a implementar mi código Python en C y se ejecuta 200 veces más rápido, el usuario ni siquiera notará si el código original ya se ejecutó en 0.01 segundos. Diablos, probablemente ni siquiera notarán si el código original solo se ejecutó en 0.1 segundos. La diferencia entre 0,1 segundos y 0,0005 segundos es prácticamente imperceptible para la mayoría de las personas. Incluso para las personas que realmente pueden discernirlo, todavía se siente completamente normal.
- Su lentitud depende en gran medida de cómo lo esté utilizando. El problema real es que muchas personas sufren el problema de la optimización prematura. Sí, Python es lento, pero es probable que su código no sea realmente lento debido a Python; es lento porque su código usa estructuras de datos y algoritmos incorrectos para abordar un problema dado. Usar un lenguaje compilado como C solo oculta el problema. Sí, es más rápido, pero solo es más rápido en un algoritmo ineficiente. El uso de las estructuras de datos y los algoritmos correctos se escalará, prácticamente independientemente del idioma en el que los implemente y de la cantidad de datos con los que termine tratando. Un lenguaje más rápido solo generará ganancias a corto plazo. Un algoritmo O (n!) sigue siendo un algoritmo O (n!), ¡incluso si lo implementas en C! Los ingenieros verdaderamente expertos saben esto y pueden crear aplicaciones que son lo suficientemente rápidas y que escalan bien, independientemente del lenguaje de implementación, porque usan las estructuras y algoritmos correctos.
- Python ha sido (y probablemente seguirá siendo) principalmente un lenguaje «pegamento»; es muy bueno para conectar softwares que no eran origina Tenía la intención de trabajar directamente entre ellos. También es bueno para automatizar tareas que normalmente se realizarían a mano. Para estos fines, es más que suficientemente rápido, ya que el trabajo principal ocurre en otro lugar de todos modos. Para lenguajes «más rápidos» como C, este tipo de trabajo de encolado es tan dolorosamente lento y propenso a errores en el código que apenas vale la pena el esfuerzo. Cualquier ganancia en la velocidad de ejecución se ve más que compensada por la cantidad de tiempo desperdiciado por el desarrollador para hacer que funcione. Esa es una gran razón por la que sigue siendo tan popular.
- Algunos cuellos de botella están simplemente fuera del control directo del lenguaje de implementación. IO es común. Estoy tratando con una aplicación en este momento donde todo en Python es más que lo suficientemente rápido. Solo cuando accedemos a la red para consultar la base de datos, las cosas se vuelven lentas. Mi perfil muestra que incluso las partes más lentas del código Python son completamente insignificantes en comparación con el tiempo que se pasa esperando en la E / S de la red. Ahora estoy tratando de encontrar formas de acceder menos a la base de datos (almacenamiento en caché del lado del cliente, evitando verificaciones de cordura redundantes con los datos, etc.). Incluso si escribiera la aplicación en ensamblador, esto seguiría siendo un problema. Solucionar este problema con Python es en realidad más rápido y más fácil porque viene con bibliotecas de perfiles (muy robustas) en la biblioteca estándar. Muchos lenguajes compilados «rápidos» tradicionalmente no vienen con esto fuera de la caja.
La moraleja de la historia es: el tiempo del desarrollador triunfa sobre el tiempo de la máquina, casi siempre. Cuando eso no ocurre En espera, la lentitud suele identificarse con ciertos cuellos de botella que se pueden optimizar fácilmente en una biblioteca o servicio externo. Los momentos en los que algo realmente no se puede optimizar en una biblioteca o servicio externo son increíblemente raros. Como en, casi inexistente.
Una excepción es si sabe desde el principio que su aplicación requiere lo más cerca posible del rendimiento en tiempo real y la mayor parte del código estará centrado en la computación. Un buen ejemplo son los videojuegos o las aplicaciones DCC. Es mejor que estén lo más cerca posible del tiempo real o no tendrás un usuario base para hablar.
Sin embargo, a menos que este sea el caso, muchos desarrolladores prefieren las ganancias de productividad de Python, aunque solo sea para la creación de prototipos.