Python no es realmente anormal aquí. Para una primera aproximación, se puede usar cualquier lenguaje para cualquier aplicación: muchos lenguajes son extremadamente inadecuados para la mayoría de las aplicaciones, pero eso nunca ha detenido los gustos de Java, C ++, Perl y PHP (que son extremadamente inadecuados para casi cada aplicación para la que se usan) de ser abusados por sus fanáticos.
Sin embargo, hay un par de diferencias. Una es que Python es popular tanto entre los principiantes como entre los expertos (porque es fácil comenzar con una sintaxis bastante legible y una pequeña plantilla, y porque es muy adecuada para la creación de prototipos de cosas complicadas). Otra es que Python tiene un conjunto enorme de características relativamente raras (soporte para números imaginarios integrados en el lenguaje, implementaciones de la mayoría de las construcciones de programación funcional centrales sin ser remotamente ‘puras’) y una biblioteca estándar muy grande y un conjunto muy grande. de bibliotecas de terceros en varios repositorios centralizados. Esto significa que la creación de prototipos en python es fácil (y a diferencia de otros lenguajes donde la creación de prototipos es fácil, la creación de módulos y la distribución de paquetes también es bastante fácil: python está al menos a la par con node + npm en este sentido).
Esto no quiere decir que Python sea realmente adecuado para todas estas cosas. Muchas personas que son programadores reacios intentan minimizar la cantidad de idiomas que aprenden, y Python es lo suficientemente útil en todos los ámbitos para que no sea tan difícil estirarlo; en otras palabras, se abusará más a menudo alrededor de sus bordes. competencia simplemente porque el área de su competencia atrae a personas que prefieren no aprender una serie de idiomas más adecuados. Otras veces, python inicialmente está destinado solo a prototipos, pero se bloquea una vez que la complejidad alcanza un cierto punto.
- ¿Realmente necesito una MacBook para completar la carrera de desarrollo de software?
- ¿Por qué tanta gente ha logrado hacerse bastante rica creando software?
- ¿Cuál es el origen del uso del término 'biblioteca' para software?
- Soy del departamento de CSE y me colocaron en una compañía llamada Gowyn Technology. El papel que se nos asigna es ingeniero de soporte técnico e ingeniero técnico de ventas. ¿Es bueno para mi carrera? ¿Puedo elegir este dominio?
- ¿Cuál es un mejor trabajo: ser gerente o ingeniero de software?
La popularidad de Python como lenguaje introductorio alcanzó su punto máximo al mismo tiempo que el rendimiento de la CPU alcanzó su punto máximo en el hardware del consumidor (es decir, alrededor de 2005), que también ocurre aproximadamente cuando pasamos el umbral donde muy pocas aplicaciones reales se verían notablemente afectadas por la penalización de velocidad de un lenguaje interpretado por bytecode con recolección de basura y un bloqueo global de intérprete. Las personas usan python en áreas donde su velocidad realmente puede ser un problema (como el aprendizaje automático) porque han aprendido un par de trucos para evitar que sea uno en casos especiales, y porque fuera de esos pocos casos, en su mayoría no importa relativamente Código bien estructurado. Ya en el año 2000, aún sería normal rechazar los lenguajes de secuencias de comandos como un rendimiento insuficiente para aplicaciones reales y traducir minuciosamente su prototipo de Python a C optimizado si pretendía distribuir archivos binarios.
Los días de Python en ML pueden estar contados. Julia comparte la mayoría de los atributos que hicieron atractivo a Python, y luego agrega paralelismo implícito, un rendimiento promedio mucho mayor y soporte para la mayoría de los paquetes importantes. No se está adoptando tanto en este momento porque algunos comportamientos no se han estandarizado por completo, y dudo que despegue fuera del contexto de las estadísticas de gran volumen / ‘big data’ (no diré simplemente ‘big data’ porque , por razones políticas, la mayoría de lo que la gente llama ‘big data’ en la industria en lugar de la academia está dominada por entornos basados en Java y lenguajes JRE como scala).
Dicho esto, Python probablemente continuará haciendo una buena presentación para las aplicaciones GUI, particularmente las simples destinadas a ser multiplataforma. Tk hace que las aplicaciones GUI simples sean triviales de una manera que avergüenza a otros marcos, y la traducción de Tkinter de la semántica de Tk de objetos de comando de estilo tcl a un modelo de objetos más parecido a Java realmente logra que sea mucho más sostenible; El buen soporte de Python para Qt y Wx (y presumiblemente gtk, aunque no he usado pygtk) significa que continuará dominando los prototipos y los proyectos más pequeños usando esos marcos.
La mayoría de las razones concretas por las que las personas usan Python son accidentes de la historia (como aprenderlo temprano o descubrir que hay un paquete para lo que quieren) o características que son comunes entre los lenguajes de secuencias de comandos (como un buen REPL y tipeo de pato). Muchas lenguas extremadamente pobres se ven elevadas por estos accidentes de la historia; hemos tenido suerte con Python, porque está realmente mejor diseñado y es más agradable de usar que el lenguaje de scripting promedio de finales de los 80.