Si has considerado estudiar algún lenguaje de programación nuevo, es muy probable que hayas escuchado acerca de Python. Así que te puedes estar preguntando ¿Por qué este lenguaje es tan popular?, es decir, hay muchos otros lenguajes que son mucho más rápidos (como C, C++, Julia, Go, Rust), otros que son muy usados en entornos empresariales (como C#, Java); otros que son mucho más modernos en comparación (Zig, Nim), e incluso otros que pueden llegar a ofrecer una experiencia de desarrollo similar a Python (como Lua).
Bueno, entre algunas de las razones de la popularidad de Python, está que este es un lenguaje muy sencillo de aprender, con una sintaxis muy simple, lo que lo hace una buena elección para principiantes; además que este lenguaje tiene un ecosistema de herramientas muy amplio, en donde desde el primer día ya puedes utilizarlos para crear programas que resuelvan problemas reales, y no necesitas inicialmente estar mucho tiempo estudiando distintos temas como paradigmas de código (como la orientación a objetos o la programación funcional), Frameworks grandes, o herramientas complicadas tan a fondo. Es decir, puedes ir conociendo el lenguaje de a poco mientras creas tu programa.
De hecho, al ser muy sencillo, existe una enorme cantidad de paquetes que muchos desarrolladores han creado para poder hacer casi de todo con el lenguaje. Así que en este artículo veremos qué es posible hacer en Python y cuáles son las bibliotecas y Frameworks que podemos usar en distintas áreas del desarrollo de software.
Si tienes prisa, las áreas y los tipos de software que mencionaré en donde podemos utilizar Python son estos:
- Scripts de automatización
- Aplicaciones Desktop
- Aplicaciones Web
- Seguridad Informática
- Data Science
- Otras Áreas
Así que empecemos conociendo cómo Python es usado en creación de Scripts de automatización.
Scripts de automatizacion
Contrario a lo que muchos iniciantes en programacion puedan creer, los programas de Scripting son muy usados actualmente. Y Cuando hablo de programas de Scripting, me refiero a estos programas que se ejecutan desde la terminal y que nos permiten automatizar tareas que hacemos muy a menudo.
Por ejemplo con Python podemos:
- Automatizar tareas de procesado de archivos: Puedes leer y escribir archivos CSV, Excel, PDF, archivos de texto, y más. Esto es útil para tareas como convertir archivos de un formato a otro, filtrar y clasificar datos, o generar informes automaticamente. Puedes utilizar librerías como ReportLab para crear documentos PDF y PyFPDF para crear documentos PDF y HTML; o bibliotecas como openpyxl, o XlsxWriter, para generar archivos de excel
- hacer Web Srapping, para poder extraer informacion de sitios web de forma aumatica, usando bibliotecas como BeautifulSoup, Scrapy o Selenium
- Controlar ventanas de forma automatica, Creando scripts que tomen el control del mouse y del teclado para que hagan tareas por nosotros usando PyAutoGUI, oPywinauto
- Enviar correos, Por ejemplo, puedes programar Python para enviar correos electrónicos diarios o semanales a los miembros de tu equipo o para enviar recordatorios de próximos eventos o fechas importantes.
- Automatizar tareas de administración de sistemas: como la programación de tareas, la monitorización de servidores, la gestión de bases de datos y la creación de informes de estado. Bibiliotecas como Fabric, Ansible y SaltStack pueden ayudarte a realizar estas tareas.
Incluso relacionado a este ultimo, en lo refiere a servidores, como estos usan el sistema operativo Linux, este ya permite crear programas con su propio lenguaje interpetado; esto progrmas reciben el nombre de Bash Scripts, y como su nombre sugiere es porque permite crear scripts automatizados. Asi que es aqui donde más se usan estos tipos de programas.
Pero como Bash esta lejos de ser un lenguaje tan potente como Python. Muchos desarrolladores, administradores de sistemas o Pentesters (Penetration Testers) usan Python al permiterles crear los mismos programas que crearian usando Bash.
Ahora muy a parte de crear aplicaciones de Scripting, que tipicamente son usados por profesionales desde la terminal, Python tambien permite crear aplicaciones para un usuario finales usando interface Graficas (GUI), aqui estarian las aplicaciones de escritorio y las aplicaciones web. veamos primero las aplicaciones de escritorio
Aplicaciones de Escritorio
Cuando instalas Python este viene con un paquete para crear interfaces graficas de escritorio llamado tkinter, este es un muy sencillo de usar, y ofrece algunas caracteristicas basicas para crear ventanas, y es muy util si llegas a necesitar crear aplicacion sencillas, que no necesiten de tanta personalizacion.
Pero para proyectos grandes y que requieran de muchas caracteristicas como crear graficos estadisticos, graficos de nodos, tener un canvas, renderizado 3d, y demas; kinter no será suficiente, es por esto que tambien hay frameworks, bibliotecas y SDKs (Software Development Kits) alternativos, que ofrece crear aplicaciones más robustas, entre los que podemos encontrar a:
- PyQt
- PySide
- wxPython
- PyGTK
- Flet
Todos estas opciones permiten crear ventanas, inputs, graficos, y demas usando solo Python, e incluso algunos ofrece un rendimento superior al estar sus componentes o Widgets desarrollados en lnguajes como C, C++, Dart, entre otros lenguajes. Aunque algo a considerar es que como en comparacion a las aplicaciones web, las aplicaciones de escritorio ya no son tan populares, aqui es mucho más complicado encontrar más informacion, aparte de la documentacion, así que debes investigar primero que tan grande es la comunidad de cada Herramienta, si quieres ver esto en más prondudidad, puedes leer articulo Framework Desktop para Python
Ahora relacionado a esto de las aplicaciones de escritorio, tambien podrian estar los Game Engines, que son sofware para crear videojuegos, ya que Python tambien tiene algunas biblitecas enfocadas en este tipo de aplicaciones, como lo seria:
Sin embargo, denuevo al no ser las aplicaciones de escritorio un entorno tan usado para este lenguaje, el uso de estas biblitoecas tampoco está tan extendido, en compracion de otros lenguajes como si lo seria C#, Java, o C++, o Lua.
Aplicaciones web
Cuando hablamos de la web esta tipicamente se divide en dos partes Backend y Frontend. el backend se refiere a crear aplicaciones de servidor, y cuando hablamos de Frontend, hablamos de crear interfaces graficas de usuario que se ejecutaran dentro del navegador. Asi que como Javascript es el unico lenguaje que se ejecuta nativamente en el navegador, cuando hablo de Desarrollo web con Python, me refiero principalmente a usar Python en el backend.
Y de hecho Python tiene Frameworks web backend muy populares en esta area, en los que estarian:
- Django(incluido tambien Django Rest Framework)
- FastAPI
- Flask
Todas estas opciones nos permiten crear aplicacion aplicaciones web, que se conectan a bases de datos, generan HTML, pueden servir archivos estaticos (imagenes, videos, pdfs, etc), o pueden permitirnos crear aplicaciones en tiempo real (usando WebSockets), y demas.
Asi como todas hacen lo mismo cada uno se diferencia a partir de que tan facil hace la escritura de codigo, o si uno es más veloz que el otro, o que tan facil hace que un proyecto pueda crecer, o ser actualizado.
Aunque por supuesto estas no son las unicas opciones, asi que tambien hay una lista de otros frameworks alternativos a estos tres:
Que en comparacion con los anteriores no son tan populares, pero ofrecen una experiencia de desarrollo muy simple para proyectos pequeños o intermedios.
ahora como mencione antes, en el navegador el unico lenguaje que se ejecuta nativamente es Javascript, esto hace que cuando se hable de Python para la web, todo el mundo piense en el backend, pero desde el año anterior, la empresa que desarrolla Anaconda, esta creando una bilioteca de Javascript que permite ejecutar Python en el navegador llamado PySCript, que esta basada en Web Assembly, asi que quizas a partir de este año veamos algunos ejemplos practicos de proyectos creados en Python para el Frontend tambien.
Seguridad Informatica
En el ambito de la seguridad Python es uno de los lenguajes más usados por profesionales debido a su capacidad para crear herramientas personalizadas rapidamentente, automatizar tareas y analizar grandes cantidades de datos facilmente gracia a su variedad de paquetes, asi que Python se clasifica constantemente como uno de los favoritos en esta area.
Asi que puedes crear tus propios Scripts o incluso puedes usar modulos ya creados bastante producidos, en los que podemos encontrar por ejemplo:
- Scapy: una biblioteca de manipulación de paquetes que se puede utilizar para crear herramientas de escaneo de red, herramientas de prueba de penetración y herramientas de detección de intrusiones.
- [Requests], una biblioteca que se utiliza para enviar solicitudes HTTP y HTTPS
- IMpacket, una colección de herramientas escritas en Python para interactuar con protocolos de red de bajo nivel
- pwntools, un Framework CTF y biblioteas de desarrollo de Xploits
Ademas de muchas otras que tambien estan relacionadas a encriptacion, analisis de red, o herramientas de automatizacion de navegaores.
- Pyew: una biblioteca de análisis de malware que se puede utilizar para examinar archivos maliciosos y extraer información sobre ellos.
- Yara: una biblioteca que se utiliza para identificar patrones en archivos, lo que puede ser útil para identificar malware.
- Volatility: una biblioteca de análisis forense que se utiliza para examinar la memoria de un sistema y encontrar evidencia de actividades maliciosas.
- Pyshark: una biblioteca que se utiliza para capturar y analizar paquetes de red en tiempo real.
- Suricata: un sistema de detección de intrusiones de red que se utiliza para detectar y prevenir ataques en tiempo real.
en las que tambien hay algunas que se puede usar en conjunto con Frameworks y paquetes muy populares de en otros lenguajes, como Metasploit (hecho en Ruby), o Nmap (hecho en C),
Ciencia de Datos
De todas las areas que he mencionado, en donde Python puede llegar a ser usado, creo que la ciencia de datos es el area en donde más destaca este lenguaje. Es decir Python es creado por Guidon Van Rossum, que tiene una maestria en Matematicas, asi que es predecible que el lenguaje tenga un muy buen soporte en areas como el Machine Learning, la computacion estadistica, o las finanzas.
Y menciono todas estas areas porque la ciencia de datos no es un area de estudio pequeña, de hecho esta conformada por varios campos que unidos forman lo que es el termino ciencia de datos, y que aun sigue desarrollandose actualmente.
Asi que si hablamos de un area multidiciplinaria, tambien necesitamos un lenguaje que sirva de herramienta en todas estas areas, o en la mayoria de ellas. Ademas durante muchos años se han estado creando biblioteca relacionadas a generacion de graficos, desarrollo de software, machine learning, que en conjunto permiten crear proyectos practicos y no solo ser usados en investigacion o analisis como lo seria el caso de R, que es otro lenguaje popular en este ambito.
Entre algunas areas importantes donde podemos usar Python tenemos:
- Manipulación de datos, Pandas, NumPy, Polars, Dask, o PySpark. Los cuales permiten:
- Carga de datos desde diferentes fuentes (CSV, Excel, bases de datos, etc.)
- Limpieza y preprocesamiento de datos
- Manipulación de datos tabulares y multidimensionales
- Generacion de Graficos, usando bibliotecas como Matplotlib, Seaborn, Bokeh, o Plotly. Los cuales permiten:
- Creación de gráficos personalizados y de alta calidad (histogramas, mapas de calor, etc.)
- Visualización interactiva y dinámica de datos
- Representación de datos geoespaciales
- Machine Learnng. En donde usando bibliotecas como Scikit-learn, TensorFlow, Keras, PyTorch, XGBoost, LightGBM, se puede llegar a obtener:
- Clasificación, regresión y agrupamiento de datos
- Predicción de valores faltantes y detección de anomalías
- Procesamiento de lenguaje natural y visión artificial
- Procesamiento del lenguaje natural, usando bilioteca scomo NLTK, spaCy, Gensim, en donde se puede:
- Tokenización y etiquetado de texto
- Análisis sintáctico y semántico de texto
- Modelado de temas y recuperación de información
Y si a pesar que actualemnte podemos usar lenguajes como Julia, o C++, que son mucho más veloces, la cantidad de herramienas que estas ofrecen no estan ni cerca de lo que python tiene actualmente. De hecho ni siquiera estoy contanto con sus otras herramientas como:
- Jupyter, que permite crear documentos enrequisidos donde puedes usar LateX para poder representar formulas matematicas, markdown para escribir textos, en combinancion con bibliotecas de graficos como matplotlib, o bibliotecas con pandas, o numpy
- Spyder IDE, que es una interfaz grafica dedicada a ciencia de datos hecha en Python, equivalnete a lo que ofrece R con R Studio
E incluso no queda aqui tampoco porque estas son las areas más comunes de Python, asi que si hablaramos de otros usos podriamos ver que tambien hay bibliotecas para programar Hardware o Internet of Things, Finanzas, Cienciass biologicas, entre otas más. Pero creo que con las que te mencionado ya podrias darte una idea.
Conclusión
En fin como pudes ver Python es un lenguaje que puede llegar a ser muy usado en una enorme cantidad de areas, brillando ultimamente más en la ciencia de datos. Asi que actualemnte estas considerando estudiar Python desde cero, conocimiento los fundamentos solidos del lenguaje y poniendo en practica en cada una de estas areas, te dejo el curso de Python a continuacion, en donde trataremos las bases del lenguaje y veremos como es que se puede llegar a usar en la mayor cantidad de estas areas.