"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Desenvolvimento Fullstack: Aprendendo Python como desenvolvedores JavaScript

Desenvolvimento Fullstack: Aprendendo Python como desenvolvedores JavaScript

Publicado em 2024-09-02
Navegar:876

Fullstack Development: Learning Python as JavaScript Developers

A jornada começa

Trabalho como desenvolvedor frontend há mais de 8 anos e, nos últimos 2 anos, decidi repensar minha carreira e como posso crescer. Descobri que a tecnologia frontend muda frequentemente: diferentes estruturas, conceitos e a lacuna entre os componentes da classe React e os ganchos. Percebi que tudo isso é apenas abstração usada para expressar necessidades de negócios e visão pessoal. A partir daí, decidi mudar minha carreira e me tornar um pouco um desenvolvedor full-stack.

Como todos sabemos, o desenvolvimento frontend hoje em dia gira em torno de JavaScript, por isso decidi aprender Node.js e seus principais frameworks. Todos os desenvolvedores front-end encontram o Node.js de uma forma ou de outra e, como desenvolvedor front-end sênior, você deve ser capaz de escrever endpoints básicos em Node.js com Express ou outra biblioteca. Após 2 anos de desenvolvimento ativo no lado do Node.js, quando meu trabalho passou a ser 50/50 entre frontend e backend, descobri que a maioria dos projetos não se limita a apenas uma linguagem.

Node.js não é a ferramenta ideal para tudo, especialmente quando você trabalha em uma empresa maior. Diferentes idiomas fornecem soluções diferentes ou são mais ideais para resolver casos de negócios específicos. É por isso que comecei a pesquisar o que poderia aprender como minha segunda linguagem de back-end e como poderia utilizá-la no futuro.

Quero compartilhar minha experiência e por que decidi continuar com Python depois de tentar aprender Rust (principalmente não para desenvolvimento web), Swift (que é principalmente uma solução mobile-first) e Golang. Aqui, você descobrirá por que acredito que Python é uma ótima oportunidade para desenvolvedores front-end aprenderem e como começar a usá-lo.

Por que Python?

Hoje em dia, IA é algo de que todo mundo fala. Mencioná-lo em uma entrevista como parte de sua experiência sempre lhe dá pontos extras. Quase todas as empresas estão tentando incorporar IA em seus produtos, e Python anda de mãos dadas com IA e aprendizado de máquina. Ao aprender Python, você não apenas terá a oportunidade de escrever aplicativos da web com estruturas como Django, Flask e FastAPI, mas também poderá começar a trabalhar com aprendizado de máquina e serviços de IA.
Por um lado, aprender linguagens mais complexas como Rust, Go ou Elixir é uma boa ideia se você deseja se tornar um programador melhor. No entanto, do ponto de vista de carreira, não é uma transição fácil para se tornar um desenvolvedor backend com uma linguagem completamente diferente com a qual você está menos familiarizado.

Python é uma linguagem de programação de tipo dinâmico. Como desenvolvedor JavaScript que passou uma parte significativa de sua carreira em um ambiente semelhante, isso não deve intimidá-lo, pois você já sabe que tipos de problemas esperar no código.
Com o Python, você pode não apenas começar a escrever aplicativos da web, mas também aproveitar suas habilidades em áreas relacionadas à IA, o que dá ao Python uma vantagem significativa como segunda linguagem.

A curva de aprendizagem

A curva de aprendizado foi direta. Em Python, você precisa aprender alguns conceitos básicos com certeza. Se você tem experiência com JavaScript, isso não deve ser um grande problema.

Aqui está o exemplo de código em 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()

Não acho que você encontrará nada muito complexo aqui. Mesmo que você não tenha aprendido Python antes, você pode entender quase todas as linhas sem ler a documentação.

A maior diferença que você notará é que Python usa recuo para definir blocos de código em vez de chaves. Isso pode parecer estranho, e ainda acho um pouco incomum, mas depois de um tempo, você se acostuma e a leitura do código fica mais fácil.

Além disso, muitos conceitos em Python são semelhantes aos de JavaScript. Em vez de console.log, você pode usar print e, para interpolação de string, pode adicionar f no início da string e usar quase a mesma sintaxe do JavaScript.

Aqui está a versão JavaScript do código acima:

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();

Superando Obstáculos: Conceitos Chave

Você pode aprender muitos conceitos diferentes em Python. Mostrei o que há de mais confuso para mim como desenvolvedor JavaScript.

Sintaxe baseada em recuo

Como desenvolvedor JavaScript, você deve estar familiarizado com o uso de blocos de código com if/else e outros operadores. Na maioria dos casos basta adicionar {} e pronto. O sistema baseado em indentação do Python pode ser complicado.

Vamos ver o código JavaScript:

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

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

    return posts
}

Python analógico:

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

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

    return posts

Como você pode ver, a legibilidade dos blocos em Python pode ser um desafio à primeira vista. É por isso que para mim foi importante evitar blocos profundamente aninhados porque é difícil de ler e fácil perder o recuo correto. Tenha em mente que o Python pode anexar seu código a um bloco de código errado devido a um recuo perdido.

Sistema de tipos

Python é uma linguagem de digitação dinâmica, mas fiquei surpreso ao encontrar a anotação de tipos integrada do Python.

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

Você não precisa instalar recursos adicionais, apenas o que você precisa no Python *3.5 e superior.*

Tipos ainda mais complexos poderiam ser descritos como iguais ao Typescript:

# 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 esses tipos não é necessário instalar nada ou transpilar este código. Isso é algo que perdi no JavaScript, pelo menos no Node.js. Eu sei que o Node.js está adicionando alguns tipos básicos na versão mais próxima (consulte a postagem média sobre o suporte a tipos integrados do node.js), mas parece ruim agora se você compará-lo com o Python.

Bloqueio Global de Interpretador do Python (GIL)

JavaScript usa um modelo sem bloqueio orientado a eventos, enquanto o Global Interpreter Lock (GIL) do Python pode ser um conceito confuso em programas multithread.

O Python Global Interpreter Lock (GIL) é um mecanismo que garante que apenas um thread execute código Python por vez. Mesmo que o seu programa Python tenha vários threads, apenas um thread pode executar código Python por vez devido ao GIL.
Com JavaScript, você pode obter multithreading com web workers, mas em Python, você precisa usar bibliotecas adicionais para fazer isso.

Uma mentalidade pitônica

A filosofia de "múltiplas maneiras de fazer isso" do JavaScript não funciona tão bem em Python porque Python adere mais ao conceito "Deve haver uma - e de preferência apenas uma - maneira óbvia de fazer isso."

No mundo JavaScript, cada empresa geralmente cria seu próprio guia de estilo de código, e será uma sorte se ele seguir as recomendações básicas de estilo JavaScript. Na realidade, práticas como o uso de ponto e vírgula podem variar amplamente, a ponto de um projeto poder usar ponto e vírgula e outro não.
Em Python, é altamente recomendado seguir os princípios Pythonic do PEP 8 (guia de estilo do Python). Este guia descreve as regras básicas de como escrever código Python.
Para escrever um código melhor, é essencial interagir com a comunidade e aprender práticas idiomáticas do Python que priorizam a clareza e a simplicidade.

Gerenciando Dependências e Ambientes Virtuais

Esta parte também pode ser confusa. Em JavaScript, normalmente você pode adicionar um gerenciador de pacotes e começar a instalar dependências sem problemas. No entanto, o pip e os ambientes virtuais do Python podem ser novos conceitos.

Em Python, ao usar dependências adicionais, é altamente recomendado usar um ambiente virtual separado. Instalar dependências com pip (o equivalente Python do npm em JavaScript) em seu ambiente pode potencialmente quebrar os utilitários do sistema ou o próprio sistema operacional, já que o interpretador Python do sistema (aquele que vem pré-instalado com seu sistema operacional) é usado pelo sistema operacional e outros utilitários do sistema.

Como solução, você pode criar um ambiente virtual com o módulo venv:


python -m venv meuenv myenv\Scripts\activate # para Windows fonte myenv/bin/activate # para Mac
python -m venv myenv
myenv\Scripts\activate # for windows
source myenv/bin/activate # for Mac
Depois de entrar no ambiente virtual você pode instalar todas as dependências sem nenhum problema ou perigo para o seu ambiente raiz.

Encontrando suporte e recursos

Como aprendi Python

Aprender um novo idioma é sempre desafiador. Comecei a aprender o básico de Python em uma plataforma online, onde também concluí alguns pequenos projetos. Aqui está o plano que usei durante meu processo de aprendizagem:

    Noções básicas de Python.
  • Conceitos avançados de Python (sistema de módulos, tipos, ambiente, código assíncrono).
  • Aprendendo o básico dos frameworks mais populares como Django, Flask e FastAPI.
  • Escrevendo meu primeiro servidor API com FastAPI.
  • Adicionando um banco de dados e aprendendo como trabalhar com bancos de dados em Python.
  • Implantando o aplicativo em um serviço de hospedagem gratuito.
Onde encontrar ajuda

Você pode encontrar muita ajuda nas comunidades do Reddit ou nos servidores do Discord enquanto aprende. Sou principalmente um usuário do Reddit e sugeriria encontrar subreddits para Python e a estrutura que você decidir usar para seu primeiro aplicativo.

Lembre-se de usar a documentação oficial. Na minha opinião, parece complicado e, na maioria das vezes, tento encontrar artigos relacionados se fico preso a um conceito.

Certifique-se de ler

PEP 8 — Guia de estilo para código Python, onde você pode encontrar regras básicas sobre como escrever código Python.

Olhando para trás e para frente

Ao refletir sobre minha jornada de desenvolvedor JavaScript até a adoção do Python, não me arrependo. Essa transição abriu oportunidades interessantes, especialmente nas áreas de IA e aprendizado de máquina, que agora aproveito extensivamente em meus projetos, especialmente no back-end.

Olhando para o futuro, as possibilidades com Python são vastas. Quer se trate de desenvolvimento web, ciência de dados, automação ou aprofundamento em IA e aprendizado de máquina, Python fornece uma base poderosa e versátil para construir e explorar novos horizontes.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/oversec/fullstack-development-learning-python-as-javascript-developers-l6l?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3