Python


 ¿Que es Python?

Python es un lenguaje de alto nivel de programación interpretado cuya filosofía hace hincapié en la legibilidad de su código. Se trata de un lenguaje de programación multiparadigma, ya que soporta parcialmente la orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretadodinámico y multiplataforma.

Administrado por Python Software Foundation, posee una licencia de código abierto, denominada Python Software Foundation License.[3]​ Python se clasifica constantemente como uno de los lenguajes de programación más

Historia

Python fue creado a finales de los años ochenta por Guido van Rossum en Stichting Mathematisch Centrum (CWI),[5]​ en Países Bajos, como un sucesor del lenguaje de programación ABC, capaz de manejar excepciones e interactuar con el sistema operativo Amoeba.[6]

El nombre del lenguaje proviene de la afición de su creador por los humoristas británicos Monty Python.[7]

Guido van Rossum es el principal autor de Python, y su continuo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como Benevolente Dictador Vitalicio (en inglés: Benevolent Dictator for Life, BDFL); sin embargo el 12 de julio de 2018 declinó de dicha situación de honor sin dejar un sucesor o sucesora y con una declaración altisonante:[8]


El 20 de febrero de 1991, van Rossum publicó el código por primera vez en alt.sources, con el número de versión 0.9.0.[10]​ En esta etapa del desarrollo ya estaban presentes clases con herencia, manejo de excepciones, funciones y los tipos modulares, como: strlistdict, entre otros. Además en este lanzamiento inicial aparecía un sistema de módulos adoptado de Modula-3; van Rossum describe el módulo como «una de las mayores unidades de programación de Python».[5]​ El modelo de excepciones en Python es parecido al de Modula-3, con la adición de una cláusula else.[6]​ En el año 1994 se formó comp.lang.python, el foro de discusión principal de Python, marcando un hito en el crecimiento del grupo de usuarios de este lenguaje.

Python alcanzó la versión 1.0 en enero de 1994. Una característica de este lanzamiento fueron las herramientas de la programación funcionallambdareducefilter y map.[11]​ Van Rossum explicó que «hace 12 años, Python adquirió lambda, reduce(), filter() y map(), cortesía de Amrit Perm, un hacker informático de Lisp que las implementó porque las extrañaba».[12]

La última versión liberada proveniente de CWI fue Python 1.2. En 1995, van Rossum continuó su trabajo en Python en la Corporation for National Research Initiatives(CNRI) en Reston, Virginia, donde lanzó varias versiones del software.

Durante su estancia en CNRI, van Rossum lanzó la iniciativa Computer Programming for Everybody (CP4E), con el fin de hacer la programación más accesible a más gente, con un nivel de 'alfabetización' básico en lenguajes de programación, similar a la alfabetización básica en inglés y habilidades matemáticas necesarias por muchos trabajadores. Python tuvo un papel crucial en este proceso: debido a su orientación hacia una sintaxis limpia, ya era idóneo, y las metas de CP4E presentaban similitudes con su predecesor, ABC. El proyecto fue patrocinado por DARPA.[13]​ Para el año 2007, el proyecto CP4E se encontraba inactivo[14]​; a pesar de ello, Python continúa intentando ser fácil de aprender y no muy arcano en su sintaxis y semántica, con el objetivo de ser entendible incluso para no-programadores.

En el año 2000, el equipo principal de desarrolladores de Python se cambió a BeOpen.com para formar el equipo BeOpen PythonLabs. CNRI pidió que la versión 1.6 fuera pública, continuando su desarrollo hasta que el equipo de desarrollo abandonó CNRI; su programa de lanzamiento y el de la versión 2.0 tenían una significativa cantidad de traslapo.[15]​ Python 2.0 fue el primer y único lanzamiento de BeOpen.com. Después que Python 2.0 fuera publicado por BeOpen.com, Guido van Rossum y los otros desarrolladores de PythonLabs se unieron en Digital Creations.

Python 2.0 tomó una característica mayor del lenguaje de programación funcionalHaskell: 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.[15]

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.

Código Python con coloreado de sintaxis

Python 2.1 fue un trabajo derivado de las versiones 1.6.1 y 2.0. Es a partir de este momento que  Python Software Foundation(PSF) pasa a dirigir el proyecto, organizada como una organización sin ánimo de lucro fundada en el año 2001, tomando como modelo a la Apache Software Foundation.[3]​ Incluida con este lanzamiento estuvo una implementación del alcance de variables más parecida a las reglas del static scopingoriginado por Scheme.[16]

Una innovación mayor en Python 2.2 fue la unificación de los tipos en Python (tipos escritos en C), y clases (tipos escritos en Python) dentro de una jerarquía. Esa unificación logró un modelo de objetos de Python puro y consistente.[17]​ También fueron agregados los generadores, que fueron inspirados por el lenguaje Icon.[18]

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,[19]​ introducido en la versión 2.3, está basado en log4j; el parser SAX, introducido en 2.0; el paquete threading,[20]​ cuya clase Thread expone un subconjunto de la interfaz de la clase homónima en Java.

Python 2.7.x (última versión de la serie Python 2.x) fue oficialmente descontinuado el 1 de enero de 2020 (paso inicialmente planeado para 2015), por lo que ya no se publicarán parches de seguridad y otras mejoras para él.[21][22]​ Con el final del ciclo de vida de Python 2, solo tienen soporte la rama Python 3.6.x[23]​ y posteriores.

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.[24]

En la actualidad, Python se aplica en los campos de inteligencia artificial y machine learning.[25]

Características


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 objetosprogramació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.[26]

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).

Modo interactivo 

El intérprete de Python estándar incluye un modo interactivo en el cual se escriben las instrucciones en una especie de intérprete de comandos: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente, lo que da la posibilidad de probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como para los programadores más avanzados.

Existen otros programas, como IDLEbpython e IPython,[29]​ que añaden funcionalidades extra al modo interactivo, como completamiento automático de código y coloreado de la sintaxis del lenguaje.

Ejemplo del modo interactivo:

>>> 1 + 1
2
>>> a = range(10)
>>> print(list(a))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


Sistemas de objetos 


En Python todo es un objeto (incluso las clases). Las clases, al ser objetos, son instancias de una metaclase. Python, además, soporta herencia múltiple y polimorfismo.

>>> cadena = "abc"  # Una cadena es un objeto de "str"
>>> cadena.upper()  # Al ser un objeto, posee sus propios métodos
'ABC'
>>> lista = [True, 3.1415]  # Una lista es un objeto de "list"
>>> lista.append(42)  # Una lista (al igual que todo) es un objeto, y también posee sus propios métodos
>>> lista
[True, 3.1415, 42]

Biblioteca estándar 

Python tiene una gran biblioteca estándar, usada para una diversidad de tareas. Esto viene de la filosofía "pilas incluidas" (batteries included) en referencia a los módulos de Python. Los módulos de la biblioteca estándar pueden complementarse con módulos personalizados escritos en C o en Python. Debido a la gran variedad de herramientas incluidas en la biblioteca estándar, combinada con la capacidad de usar lenguajes de bajo nivel como C y C++ (los cuales son capaces de interactuar con otras bibliotecas), Python es un lenguaje que combina su clara sintaxis con el inmenso poder de lenguajes de más bajo nivel.[40]

Implementaciones


Existen diversas implementaciones del lenguaje:

  • CPython es la implementación original, disponible para varias plataformas en el sitio oficial de Python.
  • IronPython es la implementación para .NET.
  • Stackless Python es la variante de CPython que trata de no usar el stack de C(www.stackless.com).
  • Jython es la implementación hecha en Java.
  • Pippy es la implementación realizada para Palm (pippy.sourceforge.net).
  • PyPy es una implementación de Python escrita en Python y optimizada mediante JIT(pypy.org).
  • ActivePython es una implementación privativa de Python con extensiones, para servidores en producción y aplicaciones de misión crítica desarrollado por ActiveState Software.



Comentarios

Publicar un comentario

Entradas más populares de este blog

Desfracmentador de Disco Duro

Computación Cuántica #2