"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Desarrollo Fullstack: aprender Python como desarrolladores de JavaScript

Desarrollo Fullstack: aprender Python como desarrolladores de JavaScript

Publicado el 2024-09-02
Navegar:806

Fullstack Development: Learning Python as JavaScript Developers

El viaje comienza

He trabajado como desarrollador frontend durante más de 8 años y en los últimos 2 años decidí repensar mi carrera y cómo puedo crecer. Descubrí que la tecnología frontend cambia con frecuencia: diferentes marcos, conceptos y la brecha entre los componentes y ganchos de la clase React. Me di cuenta de que todo esto es sólo una abstracción utilizada para expresar necesidades comerciales y una visión personal. A partir de ese momento, decidí cambiar mi trayectoria profesional y convertirme ligeramente en desarrollador full-stack.

Como todos sabemos, el desarrollo frontend tiene que ver con JavaScript hoy en día, por eso decidí aprender Node.js y sus marcos principales. Todos los desarrolladores frontend encuentran Node.js de una forma u otra y, como desarrollador frontend senior, debería poder escribir puntos finales básicos en Node.js con Express u otra biblioteca. Después de 2 años de desarrollo activo en el lado de Node.js, cuando mi trabajo pasó a ser 50/50 entre frontend y backend, descubrí que la mayoría de los proyectos no se limitan a un solo lenguaje.

Node.js no es la herramienta ideal para todo, especialmente cuando trabajas en una empresa más grande. Diferentes lenguajes brindan diferentes soluciones o son más óptimos para resolver casos comerciales específicos. Es por eso que comencé a investigar qué podría aprender como mi segundo lenguaje de backend y cómo podría utilizarlo en el futuro.

Quiero compartir mi experiencia y por qué decidí seguir con Python después de intentar aprender Rust (principalmente no para desarrollo web), Swift (que es principalmente una solución móvil) y Golang. Aquí descubrirá por qué creo que Python es una gran oportunidad para que los desarrolladores frontend aprendan y cómo comenzar a usarlo.

¿Por qué Python?

Hoy en día, la IA es algo de lo que todo el mundo habla. Mencionarlo en una entrevista como parte de tu experiencia siempre te da puntos extra. Casi todas las empresas están intentando incorporar IA a sus productos, y Python va de la mano de la IA y el Machine Learning. Al aprender Python, no solo obtienes la oportunidad de escribir aplicaciones web con marcos como Django, Flask y FastAPI, sino que también puedes comenzar a trabajar con servicios de aprendizaje automático e inteligencia artificial.
Por un lado, aprender lenguajes más complejos como Rust, Go o Elixir es una buena idea si quieres convertirte en un mejor programador. Sin embargo, desde una perspectiva profesional, no es una transición fácil convertirse en desarrollador backend con un lenguaje completamente diferente con el que estás menos familiarizado.

Python es un lenguaje de programación de tipo dinámico. Como desarrollador de JavaScript que ha pasado una parte importante de su carrera en un entorno similar, esto no debería intimidarlo, ya que ya sabe qué tipo de problemas puede esperar en el código.
Con Python, no solo puedes empezar a escribir aplicaciones web, sino también aprovechar tus habilidades en campos relacionados con la IA, lo que le da a Python una ventaja significativa como segundo idioma.

La curva de aprendizaje

La curva de aprendizaje fue sencilla. En Python, seguro que necesitas aprender algunos conceptos básicos. Si tienes experiencia con JavaScript, no debería ser gran cosa.

Aquí está el ejemplo de código en Python:

import random

def guess_the_number():
    number_to_guess = random.randint(1, 100)
    attempts = 0
    guessed = False

    print("Welcome to the Number Guessing Game!")
    print("I'm thinking of a number between 1 and 100. Can you guess what it is?")

    while not guessed:
        user_guess = int(input("Enter your guess: "))
        attempts  = 1

        if user_guess  number_to_guess:
            print("Too high! Try again.")
        else:
            print(f"Congratulations! You guessed the number {number_to_guess} in {attempts} attempts.")
            guessed = True

guess_the_number()

No creo que encuentres nada demasiado complejo aquí. Incluso si no has aprendido Python antes, puedes entender casi todas las líneas sin leer la documentación.

La mayor diferencia que notarás es que Python usa sangría para definir bloques de código en lugar de llaves. Puede parecer extraño, y todavía lo encuentro un poco inusual, pero después de un tiempo, te acostumbras y leer el código se vuelve más fácil.

Aparte de eso, muchos conceptos en Python son similares a los de JavaScript. En lugar de console.log, puedes usar print y, para la interpolación de cadenas, puedes agregar f al principio de la cadena y usar casi la misma sintaxis que en JavaScript.

Aquí está la versión JavaScript del código anterior:

function guessTheNumber() {
    const numberToGuess = Math.floor(Math.random() * 100)   1;
    let attempts = 0;
    let guessed = false;

    console.log("Welcome to the Number Guessing Game!");
    console.log("I'm thinking of a number between 1 and 100. Can you guess what it is?");

    while (!guessed) {
        const userGuess = parseInt(prompt("Enter your guess: "), 10);
        attempts  ;

        if (userGuess  numberToGuess) {
            console.log("Too high! Try again.");
        } else {
            console.log(`Congratulations! You guessed the number ${numberToGuess} in ${attempts} attempts.`);
            guessed = true;
        }
    }
}

guessTheNumber();

Superar obstáculos: conceptos clave

Puedes aprender muchos conceptos diferentes en Python. Mostré lo más confuso para mí como desarrollador de JavaScript.

Sintaxis basada en sangría

Como desarrollador de JavaScript, es posible que esté familiarizado con cómo usar bloques de código con if/else y otros operadores. En la mayoría de los casos simplemente agregas {} y listo. El sistema basado en sangría de Python puede ser complicado.

Veamos el código JavaScript:

if (role === "admin") {
    const posts = getDraftPosts()

    if (posts.length === 0) {
        throw NotFound()
    }   

    return posts
}

Análogo de Python:

if role == "admin":
    posts = get_draft_posts()

    if posts.length == 0:
        raise NotFound()

    return posts

Como puede ver, la legibilidad de los bloques en Python podría ser un desafío desde la primera vista. Por eso para mí era importante evitar los bloques profundamente anidados porque es difícil de leer y es fácil pasar por alto la sangría correcta. Tenga en cuenta que Python podría adjuntar su código a un bloque de código incorrecto debido a una sangría omitida.

Sistema de tipos

Python es un lenguaje de escritura dinámico, pero me sorprendió encontrar la anotación de tipos integrada en Python.

def add(x: int, y: int) -> int:
    return x   y

No necesitas instalar funciones adicionales, solo las que necesitas en Python *3.5 y superior.*

Tipos aún más complejos podrían describirse como iguales a Typecript:

# enums
from enum import Enum # import enum for built in lib

class Season(Enum): # extend class to mark it as enum
    SPRING = 1
    SUMMER = 2
    AUTUMN = 3
    WINTER = 4

print(Season.SPRING.name) # SPRING
print(Season.SPRING.value) # 1

# or generics
def first(container: List[T]) -> T:
    return container[0]

list_two: List[int] = [1, 2, 3]
print(first(list_two)) # 1

Para usar estos tipos, no es necesario instalar nada ni transpilar este código. Esto es algo que extrañé en JavaScript, al menos en Node.js. Sé que Node.js está agregando algunos tipos básicos en la versión más cercana (consulte la publicación mediana sobre la compatibilidad con los tipos integrados de node.js), pero ahora se ve pobre si lo compara con Python.

Bloqueo global de intérprete de Python (GIL)

JavaScript utiliza un modelo sin bloqueo controlado por eventos, mientras que el bloqueo global de intérprete (GIL) de Python puede ser un concepto confuso en programas multiproceso.
El bloqueo global de intérprete de Python (GIL) es un mecanismo que garantiza que solo un subproceso ejecute código Python a la vez. Incluso si su programa Python tiene varios subprocesos, solo un subproceso puede ejecutar código Python a la vez debido al GIL.
Con JavaScript, puedes lograr subprocesos múltiples con trabajadores web, pero en Python, necesitas usar bibliotecas adicionales para lograrlo.

Una mentalidad pitónica

La filosofía de "múltiples formas de hacerlo" de JavaScript no funciona tan bien en Python porque Python se adhiere más estrechamente al concepto "Debería haber una - y preferiblemente solo una - forma obvia de hacerlo".
En el mundo de JavaScript, cada empresa suele crear su propia guía de estilo de código y es una suerte que siga las recomendaciones básicas de estilo de JavaScript. En realidad, prácticas como el uso de punto y coma pueden variar ampliamente, hasta el punto de que un proyecto puede usar punto y coma y otro no.
En Python, se recomienda encarecidamente seguir los principios de Pythonic de PEP 8 (guía de estilo de Python). Esta guía describe las reglas básicas sobre cómo escribir código Python.
Para escribir mejor código, es esencial interactuar con la comunidad y aprender prácticas idiomáticas de Python que prioricen la claridad y la simplicidad.

Gestión de dependencias y entornos virtuales

Esta parte también puede resultar confusa. En JavaScript, normalmente puedes agregar un administrador de paquetes y comenzar a instalar dependencias sin ningún problema. Sin embargo, los entornos virtuales y pip de Python pueden ser conceptos nuevos.

En Python, cuando se utilizan dependencias adicionales, se recomienda encarecidamente utilizar un entorno virtual independiente. La instalación de dependencias con pip (el equivalente Python de npm en JavaScript) en su entorno podría potencialmente dañar las utilidades del sistema o el propio sistema operativo, ya que el sistema operativo utiliza el intérprete Python del sistema (el que viene preinstalado con su sistema operativo) y otras utilidades del sistema.

Como solución, puedes crear un entorno virtual con el módulo venv:

python -m venv myenv
myenv\Scripts\activate # for windows
source myenv/bin/activate # for Mac

Después de ingresar al entorno virtual, puede instalar todas las dependencias sin ningún problema o peligro para su entorno raíz.

Encontrar apoyo y recursos

Cómo aprendí Python

Aprender un nuevo idioma siempre es un desafío. Comencé a aprender los conceptos básicos de Python en una plataforma en línea, donde también completé algunos proyectos pequeños. Este es el plan que utilicé durante mi proceso de aprendizaje:

  • Conceptos básicos de Python.
  • Conceptos avanzados de Python (sistema de módulos, tipos, entorno, código asíncrono).
  • Aprendiendo los conceptos básicos de los frameworks más populares como Django, Flask y FastAPI.
  • Escribiendo mi primer servidor API con FastAPI.
  • Agregar una base de datos y aprender a trabajar con bases de datos en Python.
  • Implementar la aplicación en un servicio de alojamiento gratuito.

Dónde encontrar ayuda

Puedes encontrar mucha ayuda en las comunidades de Reddit o en los servidores de Discord mientras aprendes. Soy principalmente un usuario de Reddit y sugeriría buscar subreddits para Python y el marco que decidas usar para tu primera aplicación.

Recuerda utilizar la documentación oficial. En mi opinión, parece abrumador y la mayoría de las veces trato de encontrar artículos relacionados si me quedo atascado en un concepto.

Asegúrate de leer PEP 8 — Guía de estilo para código Python, donde puedes encontrar reglas básicas sobre cómo escribir código Python.

Mirando hacia atrás y hacia adelante

Mientras reflexiono sobre mi viaje desde un desarrollador de JavaScript hasta adoptar Python, no me arrepiento. Esta transición ha abierto oportunidades interesantes, particularmente en los ámbitos de la IA y el aprendizaje automático, que ahora aprovecho ampliamente en mis proyectos, especialmente en el backend.

De cara al futuro, las posibilidades con Python son enormes. Ya sea desarrollo web, ciencia de datos, automatización o profundización en la IA y el aprendizaje automático, Python proporciona una base poderosa y versátil para construir y explorar nuevos horizontes.

Declaración de liberación Este artículo se reproduce en: https://dev.to/oversec/fullstack-development-learning-python-as-javascript-developers-l6l?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3