Python

../../../_images/marketa-marcellova-Bjm9JmpNfd0-unsplash.jpg

Python es un lenguaje de programación de alto nivel creado a finales de los 80/principios de los 90 por Guido van Rossum, holandés que trabajaba por aquella época en el Centro para las Matemáticas y la Informática de los Países Bajos. Sus instrucciones están muy cercanas al lenguaje natural en inglés y se hace hincapié en la legibilidad del código. Toma su nombre de los Monty Python, grupo humorista de los 60 que gustaban mucho a Guido. Python fue creado como sucesor del lenguaje ABC. [1]

Características del lenguaje

A partir de su definición de la Wikipedia:

  • Python es un lenguaje de programación interpretado y multiplataforma cuya filosofía hace hincapié en una sintaxis que favorezca un código legible.

  • Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional.

  • Añadiría, como característica destacada, que se trata de un lenguaje de propósito general.

Ventajas

  • Libre y gratuito (OpenSource).

  • Fácil de leer, parecido a pseudocódigo.

  • Aprendizaje relativamente fácil y rápido: claro, intuitivo….

  • Alto nivel.

  • Alta Productividad: simple y rápido.

  • Tiende a producir un buen código: orden, limpieza, elegancia, flexibilidad, …

  • Multiplataforma. Portable.

  • Multiparadigma: programación imperativa, orientada a objetos, funcional, …

  • Interactivo, modular, dinámico.

  • Librerías extensivas («pilas incluídas»).

  • Gran cantidad de librerías de terceros.

  • Extensible (C++, C, …) y «embebible».

  • Gran comunidad, amplio soporte.

  • Interpretado.

  • Tipado dinámico [5].

  • Fuertemente tipado [6].

Desventajas

  • Interpretado (velocidad de ejecución, multithread vs GIL, etc.).

  • Consumo de memoria.

  • Errores no detectables en tiempo de compilación.

  • Desarrollo móvil.

  • Documentación a veces dispersa e incompleta.

  • Varios módulos para la misma funcionalidad.

  • Librerías de terceros no siempre del todo maduras.

Uso de Python

Al ser un lenguaje de propósito general, podemos encontrar aplicaciones prácticamente en todos los campos científico-tecnológicos:

  • Análisis de datos.

  • Aplicaciones de escritorio.

  • Bases de datos relacionales / NoSQL

  • Buenas prácticas de programación / Patrones de diseño.

  • Concurrencia.

  • Criptomonedas / Blockchain.

  • Desarrollo de aplicaciones multimedia.

  • Desarrollo de juegos.

  • Desarrollo en dispositivos embebidos.

  • Desarrollo web.

  • DevOps / Administración de sistemas / Scripts de automatización.

  • Gráficos por ordenador.

  • Inteligencia artificial.

  • Internet de las cosas.

  • Machine Learning.

  • Programación de parsers / scrapers / crawlers.

  • Programación de redes.

  • Propósitos educativos.

  • Prototipado de software.

  • Seguridad.

  • Tests automatizados.

De igual modo son muchas las empresas, instituciones y organismos que utilizan Python en su día a día para mejorar sus sistemas de información. Veamos algunas de las más relevantes:

../../../_images/who-uses-python.jpg

Grandes empresas y organismos que usan Python

Existen ránkings y estudios de mercado que sitúan a Python como uno de los lenguajes más usados y la vez, más amados dentro del mundo del desarrollo de software.

En el momento de la escritura de este documento, la última actualización del Índice TIOBE es de noviembre de 2023 en el que Python ocupaba el primer puesto de los lenguajes de programación más usados, por delante de C y C++.

../../../_images/tiobe.png

Índice TIOBE Noviembre 2023

Igualmente en la encuesta a desarrolladores/as de Stack Overflow del 2023 Python ocupaba el tercer puesto de los lenguajes de programación más populares, sólo por detrás de HTML/CSS y JavaScript:

../../../_images/stackoverflow-survey.png

Encuesta Stack Overflow 2023

También podemos reseñar el informe anual que realiza GitHub sobre el uso de tecnologías en su plataforma. En la edición de 2023 del estado del opensource de GitHub, Python ocupaba el segundo puesto de los lenguajes de programación más usados, sólo por detrás de JavaScript:

../../../_images/github-report.png

Informe GitHub 2023

Versiones de Python

En el momento de la escritura de este material, se muestra a continuación la evolución de las versiones mayores de Python a lo largo de la historia: [3]

Versión

Fecha de lanzamiento

Python 1.0

Enero 1994

Python 1.5

Diciembre 1997

Python 1.6

Septiembre 2000

Python 2.0

Octubre 2000

Python 2.1

Abril 2001

Python 2.2

Diciembre 2001

Python 2.3

Julio 2003

Python 2.4

Noviembre 2004

Python 2.5

Septiembre 2006

Python 2.6

Octubre 2008

Python 2.7

Julio 2010

Python 3.0

Diciembre 2008

Python 3.1

Junio 2009

Python 3.2

Febrero 2011

Python 3.3

Septiembre 2012

Python 3.4

Marzo 2014

Python 3.5

Septiembre 2015

Python 3.6

Diciembre 2016

Python 3.7

Junio 2018

Python 3.8

Octubre 2019

Python 3.9

Octubre 2020

Python 3.10

Octubre 2021

Python 3.11

Octubre 2022

Python 3.12

Octubre 2023

Python 3.13

Octubre 2024 ?

Un dato curioso, o directamente un «frikismo»: Desde Python 3.8, cada nueva versión estable sale a la luz en el mes de Octubre. En este escenario de Python 3.version se cumplen las siguientes igualdades:

\[ \begin{align}\begin{aligned}version = year - 2011\\year = version + 2011\end{aligned}\end{align} \]

El cambio de Python 2 a Python 3 fue bastante «traumático» ya que se perdió la compatibilidad en muchas de las estructuras del lenguaje. Los «core-developers» [4], con Guido van Rossum a la cabeza, vieron la necesidad de aplicar estas modificaciones en beneficio del rendimiento y expresividad del lenguaje de programación. Este cambio implicaba que el código escrito en Python 2 no funcionaría (de manera inmediata) en Python 3.

El pasado 1 de enero de 2020 finalizó oficialmente el soporte a la versión 2.7 del lenguaje de programación Python. Es por ello que se recomienda lo siguiente:

  • Si aún desarrollas aplicaciones escritas en Python 2, deberías migrar a Python 3.

  • Si vas a desarrollar una nueva aplicación, deberías hacerlo directamente en Python 3.

Importante

Únete a Python 3 y aprovecha todas sus ventajas.

CPython

Existen múltiples implementaciones de Python según el lenguaje de programación que se ha usado para desarrollarlo. Veamos algunas de ellas:

Implementación

Lenguaje

CPython

C

Jython

Java

IronPython

C#

Brython

JavaScript

RustPython

Rust

MicroPython

C

Nota

Cuando hacemos referencia a Python hablamos (implícitamente) de CPython. Este manual versa exclusivamente sobre CPython.

Zen de Python

Existen una serie de reglas «filosóficas» que indican una manera de hacer y de pensar dentro del mundo pitónico [2] creadas por Tim Peters, llamadas el Zen de Python y que se pueden aplicar incluso más allá de la programación:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

En su traducción de la Wikipedia:

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

  • Espaciado es mejor que denso.

  • La legibilidad es importante.

  • Los casos especiales no son lo suficientemente especiales como para romper las reglas.

  • Sin embargo la practicidad le gana a la pureza.

  • Los errores nunca deberían pasar silenciosamente.

  • A menos que se silencien explícitamente.

  • Frente a la ambigüedad, evitar la tentación de adivinar.

  • Debería haber una, y preferiblemente solo una, manera obvia de hacerlo.

  • A pesar de que esa manera no sea obvia a menos que seas Holandés.

  • Ahora es mejor que nunca.

  • A pesar de que nunca es muchas veces mejor que ahora 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 son una gran idea, ¡tengamos más de esos!

Ver también

Si quieres darle un toque a tu escritorio, puedes descargar este fondo de pantalla del Zen de Python que queda muy chulo.

Consejos para programar

Un listado de consejos muy interesantes cuando nos enfrentamos a la programación, basados en la experiencia de @codewithvoid:

  1. Escribir código es el último paso del proceso.

  2. Para resolver problemas: pizarra mejor que teclado.

  3. Escribir código sin planificar = estrés.

  4. Pareces más inteligente siendo claro, no siendo listo.

  5. La constancia a largo plazo es mejor que la intensidad a corto plazo.

  6. La solución primero. La optimización después.

  7. Gran parte de la programación es resolución de problemas.

  8. Piensa en múltiples soluciones antes de decidirte por una.

  9. Se aprende construyendo proyectos, no tomando cursos.

  10. Siempre elije simplicidad. Las soluciones simples son más fáciles de escribir.

  11. Los errores son inevitables al escribir código. Sólo te informan sobre lo que no debes hacer.

  12. Fallar es barato en programación. Aprende mediante la práctica.

  13. Gran parte de la programación es investigación.

  14. La programación en pareja te enseñará mucho más que escribir código tu solo.

  15. Da un paseo cuando estés bloqueado con un error.

  16. Convierte en un hábito el hecho de pedir ayuda. Pierdes cero credibilidad pidiendo ayuda.

  17. El tiempo gastado en entender el problema está bien invertido.

  18. Cuando estés bloqueado con un problema: sé curioso, no te frustres.

  19. Piensa en posibles escenarios y situaciones extremas antes de resolver el problema.

  20. No te estreses con la sintaxis de lenguaje de programación. Entiende conceptos.

  21. Aprende a ser un buen corrector de errores. Esto se amortiza.

  22. Conoce pronto los atajos de teclado de tu editor favorito.

  23. Tu código será tan claro como lo tengas en tu cabeza.

  24. Gastarás el doble de tiempo en corregir errores que en escribir código.

  25. Saber buscar bien en Google es una habilidad valiosa.

  26. Lee código de otras personas para inspirarte.

  27. Únete a comunidades de desarrollo para aprender con otros/as programadores/as.