Opinión

Lenguaje Python: El esperanto de las computadoras Parte 2

Lenguaje Python: El esperanto de las computadoras Parte 2

WIKIPEDIA: Python 2.0 tomó una característica mayor del lenguaje de programación funcional Haskell: listas por comprensión.

La sintaxis de Python para esta construcción es muy similar a la de Haskell, salvo por la preferencia de los caracteres de puntuación en Haskell, y la preferencia de Python por palabras claves alfabéticas. Python 2.0 introdujo además un sistema de recolección de basura capaz de recolectar referencias cíclicas.

Posterior a este doble lanzamiento, y después que van Rossum dejara CNRI para trabajar con desarrolladores de software comercial, quedó claro que la opción de usar Python con software disponible bajo la GNU GPL era muy deseable. La licencia usada entonces, la Python License, incluía una cláusula estipulando que la licencia estaba gobernada por el estado de Virginia, por lo que, bajo la óptica de los abogados de Free Software Foundation (FSF), se hacía incompatible con GPL. Para las versiones 1.61 y 2.1, CNRI y FSF hicieron compatibles la licencia de Python con GPL, renombrándola como Python Software Foundation License. En el año 2001, van Rossum fue premiado con el FSF Award for the Advancement of Free Software.

Las adiciones a la biblioteca estándar de Python y las decisiones sintácticas fueron influenciadas fuertemente por Java en algunos casos: el paquete logging, introducido en la versión 2.3, está basado en log4j; el parser SAX, introducido en 2.0; el paquete threading, cuya clase Thread expone un subconjunto de la interfaz de la clase homónima en Java.

Con Python 3.5 llegaría el soporte incluido para entrada/salida asíncrona a través de la biblioteca asyncio, orientada a aplicaciones que requieren alto rendimiento de código concurrente, como servidores web, bibliotecas de conexión de bases de datos y colas de tareas distribuidas.

En la actualidad, Python se aplica en los campos de inteligencia artificialy machine learning.

Características y paradigmas

Python es un lenguaje de programación multiparadigma. Esto significa que más que forzar a los programadores a adoptar un estilo particular de programación, permite varios estilos: programación orientada a objetos, programación imperativa y programación funcional. Otros paradigmas están soportados mediante el uso de extensiones.

Python usa tipado dinámico y conteo de referencias para la gestión de memoria.

Una característica importante de Python es la resolución dinámica de nombres; es decir, lo que enlaza un método y un nombre de variable durante la ejecución del programa (también llamado enlace dinámico de métodos).

Otro objetivo del diseño del lenguaje es la facilidad de extensión. Se pueden escribir nuevos módulos fácilmente en C o C++. Python puede incluirse en aplicaciones que necesitan una interfaz programable.

Aunque la programación en Python podría considerarse en algunas situaciones hostil a la programación funcional tradicional expuesta por Lisp, existen bastantes analogías entre Python y los lenguajes minimalistas de la familia Lisp (como Scheme).

Filosofía

Los usuarios de Python se refieren a menudo a la filosofía de Python, que es bastante similar a la filosofía de Unix. El código que siga los principios de Python es reconocido como 'pythónico'. Estos principios fueron descritos por el desarrollador de Python Tim Peters en El Zen de Python:

· Bello es mejor que feo.

· Explícito es mejor que implícito.

· Simple es mejor que complejo.

· Complejo es mejor que complicado.

· Plano es mejor que anidado.

· Disperso es mejor que denso.

· La legibilidad cuenta.

· Los casos especiales no son tan especiales como para quebrantar las reglas.

· Lo práctico gana a lo puro.

· Los errores nunca deberían dejarse pasar silenciosamente.

· A menos que hayan sido silenciados explícitamente.

· Frente a la ambigüedad, rechaza la tentación de adivinar.

· Debería haber una —y preferiblemente solo una— manera obvia de hacerlo.

· Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.

· Ahora es mejor que nunca.

· Aunque nunca es a menudo mejor que ya mismo.

· Si la implementación es difícil de explicar, es una mala idea.

· Si la implementación es fácil de explicar, puede que sea una buena idea.

· Los espacios de nombres (namespaces) son una gran idea. ¡Hagamos más de esas cosas!

Tim Peters, El Zen de Python


×