Para quien no lo supiese ya, ¡estamos en la era de la tecnología! La programación ya no es algo que solo se ve en películas, con pantallas negras con muchas letras y símbolos crípticos que una selecta minoría es capaz de entender (la mayoría de los cuales llevan capuchas negras y tienen intenciones dudosas). Se están enseñando las bases desde edades muy tempranas y, poco a poco, todo el mundo lo está aprendiendo e incorporando a su día a día, de una forma más o menos avanzada según el caso.

Dentro de este nuevo paradigma, para quien decide que quiere adentrarse más aún en este mundo y hacer una carrera de ello, tiene una primera pregunta clave que responder: ¿qué lenguaje de programación quiero aprender?

En este post vamos a hablar de las bondades de Python, uno de los lenguajes de programación más demandados en los últimos años.

Legibilidad y sencillez del lenguaje

Cuando empecé a estudiar programación, lo que más rechazo me producía de la mayoría de los lenguajes era esa sensación de ser lenguajes distintos (valga la redundancia). Está claro que todos parten del inglés y tienen su sintaxis, pero dentro de esto, considero que Python tiene un cierto acercamiento al lenguaje humano, que hace que se vea como algo más próximo a lo conocido y, por tanto, más sencillo de entender y aprender a trabajar.

Por ejemplo, aquí podemos ver el código de un bucle for, que se recorre todos los elementos de una lista y ejecuta una función sobre ellos si se cumple cierta condición:

department_employees = get_department_employees(department_id)
for employee in department_employees:
    if employee.incorporation_year <= 2020: 
        update_seniority(employee)

Esto no quiere decir que sea necesariamente más fácil de aprender. Como todos los lenguajes, Python tiene su curva de aprendizaje y requiere tiempo y esfuerzo dominarlo de una manera óptima.

Indentado

Siguiendo con la legibilidad, uno de los puntos de choque habituales en los distintos lenguajes de programación son la apertura y cierre de bloques de código y la indentación que se utiliza en ellos.

En Python, lo único que nos distingue los distintos bloques de código es la indentación. Un bloque de código empieza y termina en su mismo nivel de indentación. Esto nos da una ventaja sustancial respecto a las típicas llaves de apertura y cierre de bloques, y es que nunca vas a poder encontrar un código de Python mal indentado ya que, de ser así, no funcionará dicho código.

def update_seniority(employee):
    current_seniority = employee.seniority
    positive_satisfaction = 0
    negative_satisfaction = 0
    for colleague in employee.colleagues:
        satisfaction = colleague.get_satisfaction(employee)
        if satisfaction > 8:
            positive_satisfactions += 1
        elif satisfaction < 4:
            negative_satisfaction += 1
    if positive_satisfaction > negative_satisfaction:
        employee.seniority = next_seniority_level(current_seniority)
    elif positive_satisfaction < negative_satisfaction:
        employee.seniority = previous_seniority_level(current_seniority)

Desde un punto de vista de aprendizaje, esto nos va a instaurar desde un primer momento unos buenos hábitos en términos de indentación, que nos servirán en todo nuestro futuro como profesionales de la programación, ya sea en Python como si se decide dar el salto a otro lenguaje.

Tipado dinámico

Una de las características más llamativas de Python es su tipado dinámico. Esto quiere decir principalmente dos cosas: que no tenemos que definir el tipo de una variable antes de utilizarla, y que podemos (si es necesario) cambiar dicho tipo a mitad de ejecución. Esto aplica tanto al crear una variable como en la definición de los parámetros de una función.

Es muy importante hacer hincapié en la especificación “si es necesario”, ya que en muchos casos estos cambios de tipos no son necesarios ni recomendables.

def get_department_employees(department_id):
    department = Department.get(id=department_id)
    if department:
        return department
    else:
        return ''

Con este ejemplo, lo único que se va a conseguir es perder esa legibilidad del código, y aumentar la posibilidad de que haya algún error por tener un tipo inesperado en una variable.

Las ventajas de este tipado dinámico residen principalmente en su uso en el procesado de datos de una fuente externa, en los que es posible que no conozcamos de antemano cómo van a ser estos datos o que estos no sean uniformes.

Esta flexibilidad en el tipado nos permite poder dar solución a ciertos problemas que no serían posibles sin ello, pero debe convivir con la responsabilidad de no abusar de ello en otras situaciones para no perder el control de nuestra aplicación.

Tipos de programación

Otro de los puntos fuertes de Python es lo polifacético qué es, dándole al programador la opción de elegir en cada momento el tipo de programación que mejor se adapte al entorno y problema que tiene que resolver, manteniéndose en todo momento en el mismo ecosistema y lenguaje de Python.

Programación secuencial

Este será el punto de partida de nuestro desarrollo en Python. Solo necesitamos un fichero para escribir las líneas de código Python (con los condicionales o bucles que necesitemos) y ya tendremos nuestro programa. A partir de aquí, iremos añadiendo distintas funciones en el mismo fichero para aumentar la legibilidad y reusabilidad del código, y cuando sea necesario pasaremos a tener distintos módulos.

triangle_height = 5
triangle_base = 7

rectangle_height = 8
rectangle_base = 14

triangle_area = triangle_height * triangle_base / 2
rectangle_area = rectangle_height * rectangle_base

Programación orientada a objetos

Uno de los puntos fuertes de Python es la creación de clases para hacer programación orientada a objetos. Algunas de las características más relevantes de esta modalidad son las siguientes:

class Shape:
    sides = None

    def __init__(self, height, base):
        self.height = height
        self.base = base

    def area(self):
        pass

    def describe(self):
        if self.sides is not None:
            return f"A {type(self)} is a shape with {self.sides} sides"
        else:
            return "Unknown shape"

 class Triangle(Shape):
     sides = 3

     def area(self):
        return self.height * self.base / 2

class Square(Shape):
    sides = 4

    def area(self):
        return self.height * self.base

Programación funcional

A pesar de nos ser un lenguaje puramente funcional, Python tiene varios puntos claves que nos permiten programar de forma funcional manteniendo los principios de esto:

def triangle_area(base, height):
    return base * height / 2

def rectangle_area(base, height):
    return base * height

def area(shape, base, height):
    rectangle_area = None
    if shape == 'triangle':
        area_function = triangle_area
    elif shape == 'rectangle':
        area_function = rectangle_area
    return rectangle_area(base, height) if rectangle_area else None

Salidas profesionales

Otro de los puntos clave a la hora de elegir el lenguaje de programación en el que se quiere profundizar son las aspiraciones profesionales que se tienen. Cada lenguaje tiene ámbitos en los que destaca más y ámbitos en los que es menos propenso a ser utilizado, y según la trayectoria profesional que se pretenda seguir, habrá que elegir en consonancia.

Un punto a favor de Python en este aspecto es que no solo lleva mucho tiempo siendo el lenguaje de programación más utilizado según el índice TIOBE, sino que este ratio lleva varios años aumentando.

Desarrollo web

Para el desarrollo web, prácticamente todos los lenguajes de programación tienen soluciones estándar para el abordaje de este problema.

En el caso de Python, tiene varios frameworks muy extendidos que nos facilitan el desarrollo tanto de aplicaciones web completas como APIs para que estas sean explotadas por distintos frontales.

  1. Django

Django lleva siendo muchos años el framework de referencia para el desarrollo web en Python. Es verdad que en los últimos años, con el auge de los microservicios, está viendo reducido su uso en favor de otros frameworks más modulares, pero sigue siendo una opción muy buena cuando se desea desarrollar tanto aplicaciones web como APIs en Django por muchos motivos:

  1. FastAPI

Si Django ha sido durante mucho tiempo la referencia de Python en el tema web, FastAPI se está convirtiendo rápidamente en su heredero parcial en el mundo de las APIs. Es un framework muy “joven”, pero rápidamente está ganando popularidad gracias a su simplicidad y todas las facilidades que ofrece.

Es verdad que no ofrece una solución tan completa como puede ofrecer Django, pero para el desarrollo de APIs y microservicios ofrece una gran cantidad de ventajas que ha hecho que gane bastante popularidad en este ámbito.

Data

Python lleva siendo uno de los lenguajes de referencia en el mundo data desde sus inicios, haciendo que sea una buena opción para los interesados en orientar su carrera por ese ámbito.

Conclusión

Como hemos visto, Python es un lenguaje de programación muy completo y versátil, el cual nos permite con el mismo conocimiento base tener la capacidad de abordar problemas de diversa índole.

Si estás pensando en aprender un lenguaje de programación, ya sea el primero o ampliar tu repertorio, échale un vistazo a su documentación y manos a la obra.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete