Acabo de comenzar a aprender Python, y me gustaría obtener más contexto sobre el lenguaje.
Me doy cuenta de que, en muchos casos, Python es un lenguaje lento en relación con C o C ++. Por lo tanto, Python probablemente no sea la mejor opción para aplicaciones que necesitan ejecutarse lo más rápido posible.
Fuera de esto, parece que Python es un gran lenguaje de propósito general que es fácil de leer y escribir. Las bibliotecas disponibles le dan una gran cantidad de funcionalidad. Fuera de las aplicaciones críticas de rendimiento, ¿dónde es una mala elección usar Python (y por qué)?
Respuestas:
Software dirigido a objetivos integrados con sus recursos limitados. La mayoría de los procesadores en este planeta no pueden ejecutar Python debido a recursos insuficientes, o nadie ha portado una versión a esa arquitectura. La mayoría de los procesadores, incluso ahora, vienen con menos de un megabyte de memoria.
fuente
Los dos lugares que me vienen a la mente son cosas que requieren mucha concurrencia, para lo cual usaría Erlang. O cálculo numérico de alta resistencia, que probablemente trataría de usar Fortran.
fuente
Dado que Python es un lenguaje de tipo dinámico, sin verificación de tiempo de compilación, será difícil refactorizar un gran proyecto de Python que no tenga pruebas unitarias extensas.
Entonces, si tiene un proyecto grande que necesita mantenimiento y modificación durante mucho tiempo, y su equipo no está comprometido a crear pruebas automatizadas para todo, entonces es mejor que use Java o C #.
fuente
Si el enfoque principal es el desarrollo de la GUI de Windows, entonces recomendaría contra CPython ya que hay una escasez de buenos diseñadores de formularios (en comparación con el uso de .Net).
Sin embargo, IronPython se ejecuta en .Net y hay dos IDE con diseñadores de formularios para elegir: Visual Studio y SharpDevelop. De hecho, las herramientas de Python para Visual Studio se pueden usar para CPython y IronPython, que es bastante bueno, aunque todavía no lo he probado ...
fuente
Esto realmente depende de lo que quiere decir con "mala elección".
Si te refieres a aplicaciones en las que usar Python es muy difícil, entonces hay relativamente pocas: la principal que viene a la mente y que aún no se ha mencionado es el código que requiere altos niveles de corrección donde los idiomas con sistemas de tipos sofisticados (Haskell, lenguajes de tipo dependiente) ) son mejores opciones.
Si te refieres a aplicaciones donde Python es subóptimo (es decir, hay mejores opciones), entonces hay más pero también son más subjetivas. Por ejemplo, en mi experiencia ciertamente limitada, trabajar en compiladores e intérpretes es mucho más fácil con tipos de datos algebraicos, coincidencia de patrones y más funciones funcionales que Python. Sin embargo, enumerar exhaustivamente aplicaciones como esta es imposible ya que varían según la persona.
fuente
Es ideal para crear secuencias de comandos rápidamente debido a su capacidad expresiva y su amplia variedad de bibliotecas de soporte.
La verificación dinámica de tipos y la falta de declaración explícita de variables lo convierten en una mala elección para proyectos grandes que involucran cientos de miles, o incluso millones de líneas de código. Lo mismo ocurre con los sistemas de misión crítica o de seguridad. En un sistema de aviónica, por ejemplo, sería completamente inaceptable que un sistema fallara debido a un error que podría haberse detectado en el momento de la compilación.
fuente
Bueno, al igual que tú, también estoy empezando con Python. Pero para mí en el contexto del aprendizaje automático y la ciencia de datos.
También acabo de adquirir todo el conocimiento nuevo en Java 8 y sus nuevas bibliotecas orientadas a la transmisión.
Realmente me encantó la sensación fluida de las nuevas bibliotecas de secuencias de Java 8, y lo cerca que me sentí que debía a las bibliotecas de chispas de Apache. Cuando entré en Python, esperaba lo mismo y más.
Vi más Pero mucho menos. Mala documentación, aunque había mucha; sin fluidez, y de hecho me quedé adivinando si un método reinaba un nuevo objeto, o si funciona con esto; nada cerca de un mapa / reducir, etc. Me sorprendió que me dejaran decepcionado.
Sin embargo, desde el principio, no tenía grandes expectativas de lo fácil que sería aprender a aprender un idioma. Se descubrió que tenía razón: inconsistente, poco intuitivo, difícil de aprender. Pero esa fue solo mi experiencia de ser bastante bueno en todo lo que le gusta a Java.
fuente