“¿Por qué Python no escalaría?” Depende de lo que quieras decir con escala:
- Si escalar significa escribir un sistema grande y complejo , no hay nada que impida a Python escalar para esto, si tienes un pequeño equipo de grandes desarrolladores.
- Si la escala significa escribir un sistema con un número grande y cambiante de desarrolladores que debe mantenerse con vida durante muchos años, hay varios problemas con Python que hicieron que compañías como Google decidan no usarlo regularmente para servicios de producción.
Permítanme enumerar algunas de las razones de (2):
- Mecanografía estática . Claro que los desarrolladores “reales” pueden no necesitar tipeo estático, pero si terminas en una situación en la que un sistema necesita una corrección crítica de errores y los desarrolladores principales ya no están o están de vacaciones, y la solución debe implementarse en millones de usuarios, cualquier análisis estático antes del tiempo de ejecución es extremadamente útil.
- Interfaz nativa débil . No hay mucha protección en Python si algo sale mal en el nivel de la interfaz nativa, tanto en las bibliotecas estándar como en sus extensiones (en comparación con JNI, por ejemplo). Incrustar código nativo es un requisito común para aplicaciones grandes. Python deja todos los caminos abiertos para disparar en tu pie con código nativo.
- Sintaxis ambigua . La forma en que funciona la sintaxis basada en sangría de Python es bastante peligrosa. Sé de casos en los que no se ejecutó un caso de prueba crítico y, por lo tanto, un error podría filtrarse en la producción porque la prueba no estaba destinada a nivel de clase sino a nivel global. Un pequeño pero molesto detalle.
- Velocidad de ejecución . Python no se ejecuta tan rápido como dice Java. En general, eso está bien porque los algoritmos inteligentes son en muchos casos más importantes para la velocidad que el poder de procesamiento puro, sin embargo, los desarrolladores inexpertos pueden introducir fácilmente regresiones de rendimiento significativas con Python.
- Programación asincrónica . Si bien Python puede tener excelentes bibliotecas para la programación secuencial, la programación asincrónica no tiene realmente una metodología bien desarrollada. Una vez más, un gran programador puede hacer lo que necesita, pero considere el caso de alguien que no esté familiarizado con el sistema y / o el idioma.
- … y más
Entonces, la pregunta es realmente sobre qué tipo de proceso de desarrollo observas, no la escala del sistema. El desarrollo de software es en la mayoría de los casos un proceso social que está menos dominado por la productividad medible en líneas de código que por la capacidad de coordinar un grupo más grande de personas diversas (y a menudo promedio) para trabajar juntas en un producto de alta calidad.
- ¿Qué software de terceros debo usar para una función de videoconferencia en la intranet de mi empresa?
- ¿Cuál es el mejor lugar para escribir sobre software empresarial o aspectos del software empresarial que realmente atraerán lectores?
- ¿Cuál es la mejor solución de póker de marca blanca?
- ¿Cuál de estos softwares es mejor para aprender: autocad, CATIA, ProE o ANSYS?
- ¿Cuál es el mejor software de clínica?
Después de 30 años en la industria, mi punto de vista aquí ciertamente ha cambiado. Cuando comencé mi carrera, la elegancia y brevedad del lenguaje de programación era la prioridad número uno para mí. Así que tengo plena comprensión de una posición diferente sobre este tema. Sin embargo, para modificar una cita famosa:
Si no está interesado en la brevedad y elegancia del lenguaje de programación con 25, no tiene pasión por la disciplina. Si todavía tienes 45 años, no tienes cerebro. (O simplemente trabajas en Academics o en una startup con un código de corta duración de una sola vez).