Una guía para desarrolladores sobre los pros y los contras de Python

Python es facturado por la Python Software Foundation como fácil de aprender y ejecutar en todas partes. Es útil para una variedad de tipos de aplicaciones, incluido el desarrollo web, la informática científica y la educación. Google e Instagram han estado entre los muchos usuarios de Python, y el idioma tiene una buena puntuación en los índices de popularidad.

Pero Python ha tenido sus problemas, con preguntas sobre su rendimiento y peculiaridades de diseño. Para llegar al fondo de lo que es correcto, y tal vez no tan correcto, sobre Python, el editor general Paul Krill pidió a los dignatarios de la comunidad de Python su opinión.

Pros de Python

Léalo, úselo con facilidad. "Las principales características de un programa Python es que es fácil de leer", dice Pierre Carbonnelle, un programador y bloguero de Python que ejecuta el índice del lenguaje PyPL. "Esto tiene beneficios para ti y para los demás. Te ayuda a pensar con más claridad al escribir programas y ayuda a los demás que mantendrán o mejorarán tu programa. En ambos casos, escribir un programa Python requiere menos esfuerzo que escribir uno en otro idioma como C ++ o Java ". La legibilidad de Python facilita el desarrollo de código abierto, agregó Carbonnelle.

Python es fácil de usar y extremadamente popular en el mundo académico, lo que crea un gran grupo de talentos, dice Sumit Chachra, CTO de Tivix, una firma de consultoría de software que se especializa en el desarrollo de Python / Django. Django y Python son aprovechados por Tivix en el desarrollo web y móvil, dice.

Python es una forma muy productiva de escribir código, dice Stephen Deibel, de Wingware, que fabrica Wing Python IDE. "Algo de esto proviene de la sintaxis simple y la legibilidad - virtualmente no hay 'texto estándar' en absoluto. Algo de esto proviene de la biblioteca estándar e incorporada rica y bien diseñada y la disponibilidad de muchas fuentes abiertas de terceros bibliotecas y módulos ". Al ser fácil de entender, el código es más fácil de mantener, agrega. 

Python, dice Chachra, se escribe dinámicamente y es flexible, con un código que es menos detallado. Sin embargo, cita la escritura dinámica como un potencial negativo (ver más abajo).

Oportunidades de Internet de las cosas. Python puede volverse popular para la Internet de las cosas, ya que nuevas plataformas como Raspberry Pi se basan en él, dice Carbonnelle. La documentación de Raspberry Pi cita el lenguaje como "un lenguaje de programación maravilloso y poderoso que es fácil de usar (fácil de leer y escribir) y con Raspberry Pi le permite conectar su proyecto al mundo real".

Beneficios de la codificación asincrónica. Python, dice Deibel, "es excelente para escribir código asincrónico, que en lugar de subprocesos usa un solo ciclo de eventos para trabajar en unidades pequeñas". Este código, dice, a menudo es más fácil de escribir y mantener sin confusiones de recursos, interbloqueos, etc. "Los generadores de Python son una excelente manera de intercalar la ejecución de muchos bucles de procesamiento en este enfoque". 

El enfoque multiparadigma supera a Java. El enfoque de programación de Python no es tan limitado como el de Java, dice Carbonnelle. "Por ejemplo, no es necesario crear una clase OO para imprimir 'Hola mundo' en Python, debe hacerlo en Java". A diferencia de Java, Python es multiparadigma y admite estilos de programación OO, procedimental y funcional, dice. (Java agregó recientemente capacidades funcionales en Java 8.)

"En Python, todo es un objeto", dice Brian Curtin, miembro de la junta directiva de la Python Software Foundation y colaborador principal de CPython. "Es posible escribir aplicaciones en Python usando varios paradigmas de programación, pero permite escribir código orientado a objetos muy claro y comprensible".

Contras de Python

La velocidad puede ser un problema. "Debido a que es un lenguaje interpretado, a menudo es mucho más lento que los lenguajes compilados", dice Curtin. "Sin embargo, se trata de separar el lenguaje del tiempo de ejecución. Ciertos puntos de referencia del código Python se ejecutan en PyPy más rápido que el código C equivalente u otros".

"Una posible desventaja de Python es su baja velocidad de ejecución", dice Carbonnelle. Pero muchos paquetes de Python se han optimizado a lo largo de los años y se ejecutan a velocidad C, dice.

El rendimiento, dice Chachra, "es más lento en comparación con los lenguajes más antiguos como C / C ++ e incluso los más nuevos como Go".

Ausencia de navegadores e informática móvil. "Python está presente en muchas plataformas de servidor y de escritorio, pero es débil en la informática móvil; muy pocas aplicaciones para teléfonos inteligentes se desarrollan con Python", dice Carbonnelle. "También se ve raramente en el lado del cliente de una aplicación web".

Python no está en los navegadores web, señala Deibel. "Es una verdadera lástima. Hay brython, pero no creo que se pueda usar en el mundo real". Python es difícil de proteger y por eso no se encuentra en los navegadores, agrega. "Todavía no existe una caja de arena / cárcel segura para Python, y creo que se considera básicamente imposible para CPython (la implementación estándar). 

Restricciones de diseño. Los devotos de Python citaron varios problemas con el diseño del lenguaje. Debido a que el idioma se escribe dinámicamente, requiere más pruebas y tiene errores que solo aparecen en tiempo de ejecución, dice Chachra.

Mientras tanto, el bloqueo del intérprete global de Python significa que solo un hilo puede acceder a los componentes internos de Python a la vez, dice Deibel. "Esto puede ser menos importante en estos días, ya que puede generar tareas fácilmente en procesos separados utilizando el módulo de multiprocesamiento, o escribir código asincrónico en su lugar". 

Curtin dice que hay algunas convenciones en torno al uso de Python, pero que el intérprete impone espacios en blanco importantes. "La estructura de los programas Python debe ser coherente, por lo que cuando los corchetes u otros identificadores permiten al usuario más libertad en otros lenguajes, la sangría es lo que importa cuando se trata de Python".