Historia y Evolución de Python

Los Orígenes

La historia de Python comienza a principios de la década de los 90’s, cuando Guido van Rossum, un programador y matemático holandés que trabajaba en el Instituto Nacional de Investigación en Matemáticas e Informática de los Países Bajos, decidió iniciar un proyecto para crear un lenguaje basado en ABC (lenguaje de programación imperativo en el que ya había trabajado).

ABC era un lenguaje diseñado para la enseñanza de la programación, pero tenía limitaciones significativas que daban lugar a una incapacidad para adaptarse a ciertas exigencias más prácticas ya que principalmente ABC no podía acceder directamente al sistema operativo ni a su sistema de archivos.
Van Rossum quiso tomar sus mejores características y crear algo más extensible y práctico.
Algunas de las características más significativas por versión son las siguiente:

Python 0.9.0

En febrero de 1991, Van Rossum publicó la versión 0.9.0 de Python en el grupo de noticias alt.sources. Esta primera versión ya incluía:

  • Clases con herencia, manejo de excepciones, funciones y módulos
  • Tipos de datos principales: listas, diccionarios, cadenas y números
  • Indentación como sintaxis del lenguaje
  • Sistema de módulos básico

Python 1.x

Python 1.0 se lanzó en enero de 1994, esta versión incluyó:

  • Herramientas de programación funcional: lambda, map, filter y reduce
  • Soporte completo para números complejos
  • Sistema de módulos/funciones más robusto
  • Mejoras en el manejo de memoria
  • Sistema de empaquetado y distribución

Durante esta época, Python comenzó a ganar adeptos en la comunidad científica y académica.

Python 2.x

Python 2.0, lanzado en octubre de 2000, representó un salto cualitativo importante:

  • List comprehensions
  • Recolección de basura mejorada con detección de ciclos
  • Soporte Unicode completo
  • Unificación de tipos de datos y clases
  • Proceso PEP (Python Enhancement Proposal) para desarrollo comunitario
  • Iteradores y el protocolo de iteración

Versiones posteriores (2.3, 2.5 y 2.7) añadieron:

  • Generadores y palabra clave yield
  • Decoradores para funciones y métodos
  • Context managers (with statement)
  • Módulo multiprocessing para paralelismo
  • Expresiones condicionales (operador ternario)
  • Mejoras en la biblioteca estándar

Python 2.7 (2010) fue la última versión de la rama 2.x y recibió soporte hasta enero de 2020.

Python 3.x

Python 3.0, lanzado en diciembre de 2008, rompió la compatibilidad hacia atrás. Cambios principales:

  • print como función en lugar de declaración
  • División / siempre devuelve float, // para división entera
  • Todas las cadenas son Unicode por defecto
  • Mejoras en iteradores y sintaxis de excepciones
  • Bytes vs strings claramente diferenciados
  • Eliminación de código y bibliotecas obsoletas

Evolución de Python 3:

  • Python 3.4 (2014): asyncio para programación asíncrona, pathlib para manejo de rutas, enumeraciones (enum), pip como parte oficial de la distribución
  • Python 3.5 (2015)async/await para programación asíncrona, type hints, operador @ para multiplicación de matrices
  • Python 3.6 (2016): F-strings, mejoras de rendimiento significativas, variables de anotación, diccionarios ordenados por defecto
  • Python 3.7 (2018): Data classes, orden garantizado en diccionarios, breakpoint() incorporado, postponed evaluation de anotaciones
  • Python 3.8 (2019): Operador walrus (:=), parámetros posicionales y solo por nombre, f-strings con = para debugging
  • Python 3.9 (2020): Operadores de unión para diccionarios (|), type hints mejorados con tipos genéricos integrados, removedor de prefijos/sufijos en strings
  • Python 3.10 (2021): Pattern matching (match/case), mensajes de error mejorados, union types con |, paréntesis en context managers
  • Python 3.11 (2022): Mejoras de rendimiento (10-60% más rápido), mensajes de error más detallados, grupos de excepciones, TOML en biblioteca estándar
  • Python 3.12 (2023): Más optimizaciones de rendimiento, sintaxis de type hints mejorada, f-strings más flexibles, buffer protocol mejorado
  • Python 3.13 (2024): GIL desactivable experimental (free-threading), intérprete JIT experimental, mensajes de error aún más claros, mejoras en el REPL interactivo