1.3 Python
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.
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, …
- Portable.
- Multiparadigma: programación imperativa, orientada a objetos, funcional, .
- Interactivo, modular, dinámico.
- Librerías extensivas («pilas incluidas»).
- Gran cantidad de librerías de terceros.
- Extensible (C++, C, …) y «embebible».
- Gran comunidad, amplio soporte.
- Interpretado
- Tipado dinámico
- Fuertemente tipado
Desventajas
- Interpretado (velocidad de ejecución, multithread vs GIL, etc.).
- Consumo de memoria.
- Errores durante la ejecución.
- Dos versiones mayores no del todo compatibles (v2 vs v3).
- 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.
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.
- Seguirdad
- 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:
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 febrero de 2022 en el que Python ocupaba el primer lugar de los lenguajes de programación más usados, por delante de C y Java.
Figura 4: Grandes empresas y organismos que usan Python
Figura 5: Índice TIOBE 2022
Igualmente en la encuesta a desarrolladores de Stack Overflow hecha en 2022, Python ocupaba el cuarto puesto de los lenguajes de programación más populares, sólo por detrás de JavaScript, HTML/CSS y SQL:
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:
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» 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.
Nivel avanzado
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 |
PyPy | Python (JIT) |
MicroPython | C |
Existen una serie de reglas «filosóficas» que indican una manera de hacer y de pensar dentro del mundo pitónico2 creadas por Tim Peters, llamadas el Zen de Python y que se pueden aplicar incluso más allá de la programación:
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
- 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!
Un listado de consejos muy interesantes cuando nos enfrentamos a la programación, basados en la experiencia de @codewithvoid:
- Escribir código es el último paso del proceso.
- Para resolver problemas: pizarra mejor que teclado.
- Escribir código sin planificar = estrés.
- Pareces más inteligente siendo claro, no siendo más listo.
- La consistencia a largo plazo es mejor que la intensidad a corto plazo.
- La solución primero. La optimización después.
- Gran parte de la programación es resolución de problemas.
- Piensa en múltiples soluciones antes de decidirte por una.
- Se aprende construyendo proyectos, no tomando cursos.
- Siempre elije simplicidad. Las soluciones simples son más fáciles de escribir.
- Los errores son inevitables al escribir código. Sólo te dicen lo que no hacer.
- Fallar es barato en programación. Aprende haciendo.
- Gran parte de la programación es investigación.
- La programación en pareja te enseñará mucho más que escribir código.
- Da un paseo cuando estés bloqueado con un error.
- Convierte en un hábito el hecho de pedir ayuda.
- Pierdes 0 credibilidad pidiendo ayuda.
- El tiempo gastado en entender el problema está bien invertido.
- Cuando estés bloqueado con un problema: sé curioso, no te frustres.
- Piensa en posibles escenarios y situaciones extremas antes de resolver.
- No te estreses con la sintaxis de programación. Entiende conceptos.
- Aprende a ser un buen corrector de errores. Esto se amortiza.
- Conoce pronto los atajos de teclado de un editor favorito.
- Tu código es tan claro como tu lo piensas.
- Gastarás el doble de tiempo en corregir errores que en escribir código.
- Saber buscar bien en google es una habilidad valiosa.
- Lee código de otras personas para inspirarte.
- Únete a comunidades de desarrollo para aprender con otros/as programadores/as.