Está en la página 1de 5

Historia de Python

Ir a la navegaci�nIr a la b�squeda

Logo de Python
Art�culo principal: Python
Python es uno de los lenguajes de programaci�n din�micos m�s populares que existen
entre los que se encuentran Perl, Tcl, PHP y Ruby. Aunque es considerado a menudo
como un lenguaje "scripting", es realmente un lenguaje de prop�sito general. En la
actualidad, Python es usado para todo, desde simples "scripts", hasta grandes
servidores web que proveen servicio ininterrumpido 24x7. Es utilizado para la
programaci�n de interfaces gr�ficas y bases de datos, programaci�n web tanto en el
cliente como en el servidor (v�ase Django o Flask) y "testing" de aplicaciones.
Adem�s tiene una amplia aceptaci�n por cient�ficos que hacen aplicaciones para las
supercomputadores m�s r�pidas del mundo y por los ni�os que reci�n est�n comenzando
a programar.

La historia del lenguaje de programaci�n Python se remonta hacia finales de los 80s
y principio de los 90s1?, su implementaci�n comenz� en diciembre de 19892? cuando
en Navidad Guido Van Rossum que trabajaba en el (CWI) (un centro de investigaci�n
holand�s de car�cter oficial que, entre otras cosas, actualmente alberga la oficina
central del W3C) decidi� empezar el proyecto como un pasatiempo d�ndole continuidad
al lenguaje de programaci�n ABC del que hab�a formado parte del equipo de
desarrollo en el CWI,3? dicho lenguaje se enfocaba en ser f�cil de usar y aprender
manteniendo potencia en su desempe�o pero el hardware disponible en la �poca de su
creaci�n hac�a dif�cil su uso y el proyecto no trascendi� como se esperaba. Van
Rossum es por tanto el autor principal de Python y contin�a ejerciendo un rol
central decidiendo la direcci�n del lenguaje, en la comunidad de Python se le
conoce como Benevolente Dictador Vitalicio (en ingl�s: Benevolent Dictator for
Life, BDFL). El nombre "Python" viene dado por la afici�n de Van Rossum al grupo
Monty Python.

El lenguaje de programaci�n Python fue originalmente desarrollado para el sistema


operativo Amoeba.

�ndice
1 Principales influencias de otros lenguajes
2 Cronolog�a de Python
3 Primera publicaci�n
4 Versi�n 1.0
4.1 BeOpen
5 Versi�n 2.0
6 Versi�n 3.0
6.1 Filosof�a
6.2 Cronolog�a y compatibilidad
6.3 Caracter�sticas
7 V�ase tambi�n
8 Referencias
9 Enlaces externos
Principales influencias de otros lenguajes
El n�cleo de la sintaxis de Python y grandes aspectos de su filosof�a fueron
heredados directamente del lenguaje de programaci�n ABC. Por ejemplo el siguiente
c�digo muestra una funci�n para obtener el conjunto de todas las palabras en un
documento en ABC4? y en Python:

Recuperar las palabras de un documento en ABC Recuperar las palabras de un


documento en Python
HOW TO RETURN words document:
PUT {} IN collection
FOR line IN document:
FOR word IN split line:
IF word not.in collection:
INSERT word IN collection
RETURN collection
def words(document):
collection = set()
for line in document:
for word in line.split():
if word not in collection:
collection.add(word)
return collection
En ABC no existe propiamente el tipo de dato conjunto, sino algo como
multiconjuntos, es decir, si se inserta un elemento dos veces, aparecer� dos veces
en esa colecci�n, pero en Python el if puede ser eliminado porque la operaci�n add
sobre los conjuntos en Python no hace nada si el elemento ya est� en el conjunto.
Se puede observar perfectamente las similitudes entre ambos c�digos, la
indentaci�n, el ciclo for, el operador in, pero tambi�n sus diferencias, como por
ejemplo en ABC no se utilizan par�ntesis y en Python s�, adem�s las palabras claves
en ABC son escritas en may�sculas as� como los nombres de los procedimientos o
funciones; ABC hace distinci�n entre procedimiento y funci�n, otra diferencia con
Python.

Las principales ideas de ABC que influyeron o se incluyeron en Python fueron seg�n
el propio Guido:5?

La indentaci�n para agrupar el c�digo


El car�cter : para indicar que comienza un bloque indentado (despu�s de pruebas con
usuarios)
El dise�o simple de las instrucciones: if, while, for,...
Tuplas, listas, diccionarios (fuertemente modificados en Python)
Tipos de datos inmutables
No imponer l�mites, como tama�o de un array, etc...
El "prompt" >>>
Otras ideas que influyeron en la concepci�n de Python fue tener un lenguaje que
pudiera ser tan potente como C pero tambi�n expresivo para ejecutar "scripts" como
sh.6? De hecho la sintaxis de Python copia much�simo de C. Por ejemplo, las
palabras claves (if, else, while, for, etc.) son las mismas que en C, los
identificadores tienen las mismas reglas para nombrarlos que C, y la mayor�a de los
operadores est�ndar tienen el mismo significado que en C. Una de las mayores
diferencias es que Python en lugar de usar llaves para agrupar c�digo usa
indentaci�n, la otra gran diferencia es que Python usa tipado din�mico.

Los generadores e iteradores fueron inspirados por Icon, y fusionados con las ideas
de la programaci�n funcional en un modelo unificado. Modula-3 fue la base del
modelo de excepciones y del sistema de m�dulos.1?3? Perl contribuy� en las
expresiones regulares, usadas para la manipulaci�n de "string".7? Las adiciones a
biblioteca est�ndar de Python standard library y algunas opciones sint�cticas
fueron influenciadas por Java algunos ejemplos son: el paquete de logging,8?
introducido en la versi�n 2.3,9? el paquete threading para aplicaciones
multihilos,10? el parser SAX, introducido en la versi�n 2.0, y la sintaxis del
decorador que usa @,11? incluida en la versi�n 2.412?

Cronolog�a de Python

Las versiones indicadas en rojo se consideran obsoletas.

Las versiones indicadas en rojo se consideran obsoletas.


Fechas de publicaci�n:13?14?
Comienzo de la implementaci�n - December, 1989
Publicaci�n interna en CWI - 1990
Python 0.9 - 20 de febrero de 1991 (publicado en alt.sources)
Python 0.9.1 - Febrero de 1991
Python 0.9.2 - Oto�o de 1991
Python 0.9.4 - 24 de diciembre de 1991
Python 0.9.5 - 2 de enero de 1992 (solo para Macintosh)
Python 0.9.6 - 6 de abril de 1992
Python 0.9.7 beta - 1992
Python 0.9.8 - 9 de enero de 1993
Python 0.9.9 - 29 de julio de 1993
Python 1.0 - Enero de 1994
Python 1.5 - 31 de diciembre de 1997
Python 1.6 - 5 de septiembre de 2000
Python 2.0 - 16 de octubre de 2000
Python 2.1 - 17 de abril de 2001
Python 2.2 - 21 de diciembre de 2001
Python 2.3 - 29 de julio de 2003
Python 2.4 - 30 de noviembre de 2004
Python 2.5 - 19 de septiembre de 2006
Python 2.6 - 1 de octubre de 2008
Python 2.7 - 3 de julio de 2010
Python 3.0 - 3 de diciembre de 2008
Python 3.1 - 27 de junio de 2009
Python 3.2 - 20 de febrero de 2011
Python 3.3 - 29 de septiembre de 2012
Python 3.4 - 16 de marzo de 2014
Primera publicaci�n
En 1991, Van Rossum public� el c�digo de la versi�n 0.9.0 en alt.sources.15? En
esta etapa del desarrollo ya estaban presentes clases con herencia, manejo de
excepciones, funciones y los tipos modulares, como: str, list, dict, 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�.1? El modelo de excepciones en Python es parecido al de
Modula-3, con la adici�n de una cl�usula else.3? 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.

Versi�n 1.0
Python llega a la versi�n 1.0 en enero de 1994. Las caracter�sticas m�s importantes
incluidas en esta publicaci�n fueron las herramientas de la programaci�n funcional
lambda, reduce, filter y map. Van Rossum ha comentado que "Python adquiere lambda,
reduce(), filter() and map(), cortes�a de un hacker de Lisp que las extra�aba y
envi� parches que funcionaban".16?

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.

Para la versi�n 1.4, Python adquiri� varias caracter�sticas nuevas. Es notable


entre estas los argumentos por nombre inspirados por Modula-3 (que tambi�n son
similares a los de Common Lisp) y soporte "built-in" para los n�meros complejos.

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 las habilidades b�sicas en ingl�s y matem�ticas necesarias por muchos
empleadores. 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.17? El
proyecto CP4E est� inactivo, y mientras tanto Python intenta ser f�cil de aprender
y no muy arcano en su sintaxis y sem�ntica, pero alcanzar a los no-programadores ya
no es una preocupaci�n activa.18?

BeOpen
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 publicada hasta el punto de desarrollo en que el equipo abandon� CNRI.
Consecuentemente su agenda de lanzamiento para la versi�n 1.6 y la versi�n 2.0
ten�an una significativa cantidad de solapamiento.19? 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 a
Digital Creations.

La publicaci�n de Python 1.6 inclu�a una nueva licencia de CNRI que era
substancialmente m�s larga que la licencia de CWI que hab�a sido usada en las
publicaciones anteriores. La nueva licencia inclu�a una cl�usula estipulando que la
licencia estaba gobernada por las leyes del estado de Virginia. La Free Software
Foundation (FSF) argumento la cl�usula era incompatible con GNU GPL. Entonces
BeOpen, CNRI, y FSF acordaron cambiar Python hacia una licencia de software libre
que lo har�a compatible con GPL. Python 1.6.1 es b�sicamente el mismo que Python
1.6, con unos arreglos de bugs, y con la nueva licencia compatible con GPL.20?

Versi�n 2.0
Python 2.0 tom� una importante caracter�stica del lenguaje de programaci�n
funcional Haskell: generaci�n de listas. 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. Python 2.0 introdujo adem�s un sistema de recolecci�n de basura capaz de
recolectar referencias c�clicas.

Python 2.1 fue un trabajo derivado de Python 1.6.1, as� como tambi�n de Python 2.0.
Su licencia fue renombrada a: Python Software Foundation License. Todo el c�digo,
documentaci�n y especificaciones a�adidas, desde la fecha del lanzamiento de la
versi�n alfa de Python 2.1, pertenece a Python Software Foundation (PSF), una
organizaci�n sin �nimo de lucro fundada en el a�o 2001, tomando como modelo la
Apache Software Foundation.20? Este lanzamiento incluy� un cambio en el lenguaje
para soportar �mbitos anidados (m�s conocido en programaci�n como "nested scopes")
como lo soportan otros lenguajes de "static scoping" (del cual Scheme es el
originador).21? (Esta caracter�sticas fue deshabilitada por defecto, y no
requerida, hasta Python 2.2.)

Una gran innovaci�n 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 orientado a objetos de Python puro y consistente.22?
Tambi�n fueron agregados los generadores que fueron inspirados por el lenguaje
Icon.23?

Versi�n 3.0
Python 3.0 (tambi�n conocido como "Python 3000" o "Py3K") fue dise�ado para
rectificar ciertas fallas fundamentales en el dise�o del lenguaje (los cambios
requeridos no pod�an ser implementados mientras se mantuviera compatibilidad hacia
atr�s con la serie 2.x). El principio que gu�a Python 3 es: "reducir la duplicaci�n
de caracter�sticas eliminando viejas formas de hacer las cosas (reduce feature
duplication by removing old ways of doing things)".

Filosof�a
Python 3.0 fue desarrollado con la misma filosof�a que en las versiones anteriores.
Sin embargo, como Python ha acumulado nuevas y redundantes formas de programar la
misma tarea, Python 3.0 ha hecho �nfasis en eliminar constructores duplicados y
m�dulos, en consecuencia con "Debe haber un� y preferiblemente solo un �modo obvio
de hacerlo".

A pesar de esto, Python 3.0 se mantiene como un lenguaje de programaci�n


multiparadigma. Los programadores todav�a tienen opciones entre orientaci�n a
objetos, programaci�n estructurada, programaci�n funcional y otros paradigmas, pero
dentro de estas amplias opciones, los detalles intentan ser m�s obvios en Python
3.0 que como eran en Python 2.x.

Cronolog�a y compatibilidad
Python 3.0 fue liberado el 3 de diciembre de 2008.24? Las series Python 2.x y
Python 3.x estaban planeadas para coexistir por varias publicaciones lanz�ndolas en
paralelo, con la serie 2.x existente mayormente por compatibilidad y con algunas
nuevas caracter�sticas siendo importadas hacia atr�s de la serie 3.x. Python 2.6
fue liberado para coincidir con Python 3.0, e incluye algunas caracter�sticas de
esa publicaci�n, as� como un modo de "alertas (warnings)" que resalta el uso de
caracter�sticas que han sido eliminadas en Python 3.0.25? Similarmente, Python 2.7
coincide e incluye caracter�sticas de Python 3.1,26? que fue publicado el 26 de
junio de 2009. Python 2.7 fue la �ltima publicaci�n en la serie 2.x;27? las
publicaciones en paralelo terminaron con Python 3.2.

Python 3.0 rompe la compatibilidad hacia atr�s. El c�digo de Python 2.x no


necesariamente debe "correr" en Python 3.0 sin modificarlo. Hay cambios b�sicos
tales como el cambio de print en una funci�n (por lo tanto cualquier uso como print
"Hello Python" provocar� un error en Python 3.x), y el cambio a Unicode para todos
los textos "strings". El tipado din�mico de Python combinado con los planes para
cambiar la sem�ntica de ciertos m�todos de los diccionarios, por ejemplo, hacen que
convertir perfectamente de Python 2.x a Python 3.0 sea muy dif�cil de manera
autom�tica. Sin embargo, una herramiento llamada "2to3" puede hacer la mayor�a del
trabajo de "traducci�n", se�alando �reas que confusas para ella usando comentarios
o alertas. Incluso en la etapa "alpha", 2to3 se mostraba claramente satisfactoria
para ejecutar las traducciones del c�digo.28? For projects requiring compatibility
with both the 2.x and 3.x series, the Python development team recommended keeping
one source (for the 2.x series), and producing releases for the Python 3.x platform
using 2to3. Edits to the Python 3.x code were discouraged for so long as the code
needed to run on Python 2.x.

También podría gustarte