"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Développement Fullstack : apprendre Python en tant que développeur JavaScript

Développement Fullstack : apprendre Python en tant que développeur JavaScript

Publié le 2024-09-02
Parcourir:252

Fullstack Development: Learning Python as JavaScript Developers

Le voyage commence

Je travaille en tant que développeur frontend depuis plus de 8 ans, et au cours des 2 dernières années, j'ai décidé de repenser ma carrière et la manière dont je peux évoluer. J'ai constaté que la technologie frontend change fréquemment : différents frameworks, concepts et écart entre les composants et les hooks de la classe React. J'ai réalisé que tout cela n'était qu'une abstraction utilisée pour exprimer les besoins commerciaux et la vision personnelle. À partir de ce moment, j'ai décidé de changer de parcours professionnel et de devenir légèrement développeur full-stack.

Comme nous le savons tous, le développement frontend est aujourd'hui entièrement axé sur JavaScript, c'est pourquoi j'ai décidé d'apprendre Node.js et ses principaux frameworks. Tous les développeurs frontend rencontrent Node.js d'une manière ou d'une autre, et en tant que développeur frontend senior, vous devriez être capable d'écrire des points de terminaison de base dans Node.js avec Express ou une autre bibliothèque. Après 2 ans de développement actif côté Node.js, lorsque mon travail est devenu 50/50 entre frontend et backend, j'ai découvert que la plupart des projets ne se limitent pas à un seul langage.

Node.js n'est pas l'outil idéal pour tout, surtout lorsque vous travaillez dans une grande entreprise. Différents langages offrent différentes solutions ou sont plus optimaux pour résoudre des analyses de rentabilisation spécifiques. C'est pourquoi j'ai commencé à rechercher ce que je pourrais apprendre comme deuxième langage backend et comment je pourrais l'utiliser à l'avenir.

Je souhaite partager mon expérience et pourquoi j'ai décidé de m'en tenir à Python après avoir essayé d'apprendre Rust (principalement pas pour le développement Web), Swift (qui est principalement une solution mobile) et Golang. Ici, vous découvrirez pourquoi je pense que Python est une excellente opportunité pour les développeurs frontend d'apprendre et comment commencer à l'utiliser.

Pourquoi Python ?

De nos jours, l’IA est quelque chose dont tout le monde parle. Le mentionner lors d’un entretien dans le cadre de votre expérience vous donne toujours des points supplémentaires. Presque toutes les entreprises tentent d’intégrer l’IA dans leurs produits, et Python va de pair avec l’IA et le Machine Learning. En apprenant Python, vous avez non seulement la possibilité d'écrire des applications Web avec des frameworks tels que Django, Flask et FastAPI, mais vous pouvez également commencer à travailler avec les services d'apprentissage automatique et d'IA.
D'une part, apprendre des langages plus complexes comme Rust, Go ou Elixir est une bonne idée si vous souhaitez devenir un meilleur programmeur. Cependant, d'un point de vue professionnel, devenir développeur back-end avec un langage complètement différent que vous connaissez moins n'est pas une transition facile.

Python est un langage de programmation typé dynamiquement. En tant que développeur JavaScript ayant passé une partie importante de votre carrière dans un environnement similaire, cela ne devrait pas vous intimider, car vous savez déjà à quels types de problèmes vous attendre dans le code.
Avec Python, vous pouvez non seulement commencer à écrire des applications Web, mais également exploiter vos compétences dans les domaines liés à l'IA, ce qui donne à Python un avantage significatif en tant que deuxième langage.

La courbe d'apprentissage

La courbe d'apprentissage a été simple. En Python, vous devez certainement apprendre quelques concepts de base. Si vous avez de l'expérience avec JavaScript, cela ne devrait pas être un gros problème.

Voici l'exemple de code 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()

Je ne pense pas que vous trouverez quelque chose de trop complexe ici. Même si vous n'avez jamais appris Python auparavant, vous pouvez comprendre presque toutes les lignes sans lire la documentation.

La plus grande différence que vous remarquerez est que Python utilise l'indentation pour définir des blocs de code au lieu d'accolades. Cela peut paraître étrange, et je trouve toujours cela un peu inhabituel, mais au bout d'un moment, on s'y habitue et la lecture du code devient plus facile.

En dehors de cela, de nombreux concepts en Python sont similaires à ceux de JavaScript. Au lieu de console.log, vous pouvez utiliser print, et pour l'interpolation de chaîne, vous pouvez ajouter f au début de la chaîne et utiliser presque la même syntaxe qu'en JavaScript.

Voici la version JavaScript du code ci-dessus :

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

Surmonter les obstacles : concepts clés

Vous pouvez apprendre de nombreux concepts différents en Python. J'ai montré le plus déroutant pour moi en tant que développeur JavaScript.

Syntaxe basée sur l'indentation

En tant que développeur JavaScript, vous savez peut-être comment utiliser les blocs de code avec if/else et d'autres opérateurs. Dans la plupart des cas, vous ajoutez simplement {} et c'est tout. Le système basé sur l'indentation de Python peut être délicat.

Voyons le code JavaScript :

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

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

    return posts
}

Analogue Python :

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

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

    return posts

Comme vous pouvez le constater, la lisibilité des blocs en Python peut être difficile dès le premier point de vue. C'est pourquoi pour moi, il était important d'éviter les blocs profondément imbriqués, car ils sont difficiles à lire et faciles à manquer. Gardez à l'esprit que Python pourrait attacher votre code à un mauvais bloc de code en raison d'une indentation manquée.

Système de saisie

Python est un langage de typage dynamique mais j'ai été surpris de trouver l'annotation Types intégrée à Python.

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

Vous n'avez pas besoin d'installer de fonctionnalités supplémentaires, uniquement ce dont vous avez besoin dans Python *3.5 et supérieur.*

Des types encore plus complexes pourraient être décrits comme égaux à 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

Pour utiliser ces types, vous n'êtes pas obligé d'installer quelque chose ou de transpiler ce code. C'est quelque chose qui m'a manqué en JavaScript, du moins Node.js. Je sais que Node.js ajoute quelques types de base dans la version la plus proche (voir l'article Medium sur la prise en charge des types intégrés de node.js), mais cela semble médiocre maintenant si vous le comparez avec Python.

Le verrouillage global de l'interprète (GIL) de Python

JavaScript utilise un modèle non bloquant basé sur les événements, tandis que le Global Interpreter Lock (GIL) de Python peut être un concept déroutant dans les programmes multithread.
Le Python Global Interpreter Lock (GIL) est un mécanisme qui garantit qu'un seul thread exécute le code Python à la fois. Même si votre programme Python comporte plusieurs threads, un seul thread peut exécuter du code Python à la fois grâce au GIL.
Avec JavaScript, vous pouvez réaliser le multithreading avec les Web Workers, mais en Python, vous devez utiliser des bibliothèques supplémentaires pour y parvenir.

Un état d'esprit pythonique

La philosophie JavaScript des « plusieurs façons de le faire » ne fonctionne pas aussi bien en Python car Python adhère plus étroitement au concept « Il devrait y avoir une - et de préférence une seule - façon évidente de le faire. »
Dans le monde JavaScript, chaque entreprise crée souvent son propre guide de style de code, et c'est une chance si elle suit les recommandations de base en matière de style JavaScript. En réalité, les pratiques telles que l'utilisation de points-virgules peuvent varier considérablement, au point qu'un projet peut utiliser des points-virgules et un autre non.
En Python, il est fortement recommandé de suivre les principes Pythonic de PEP 8 (le guide de style de Python). Ce guide décrit les règles de base pour écrire du code Python.
Pour écrire un meilleur code, il est essentiel de s'engager avec la communauté et d'apprendre des pratiques Python idiomatiques qui privilégient la clarté et la simplicité.

Gestion des dépendances et des environnements virtuels

Cette partie peut également prêter à confusion. En JavaScript, vous pouvez généralement ajouter un gestionnaire de packages et commencer à installer les dépendances sans aucun problème. Cependant, le pip et les environnements virtuels de Python peuvent être de nouveaux concepts.

En Python, lors de l'utilisation de dépendances supplémentaires, il est fortement recommandé d'utiliser un environnement virtuel distinct. L'installation de dépendances avec pip (l'équivalent Python de npm en JavaScript) dans votre environnement pourrait potentiellement interrompre les utilitaires système ou le système d'exploitation lui-même, car l'interpréteur système Python (celui qui est préinstallé avec votre système d'exploitation) est utilisé par le système d'exploitation et autres utilitaires système.

En guise de solution, vous pouvez créer un environnement virtuel avec le module venv :

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

Après avoir accédé à l'environnement virtuel, vous pouvez installer toutes les dépendances sans aucun problème ni danger pour votre environnement racine.

Trouver du soutien et des ressources

Comment j'ai appris Python

Apprendre une nouvelle langue est toujours un défi. J'ai commencé à apprendre les bases de Python sur une plateforme en ligne, où j'ai également réalisé quelques petits projets. Voici le plan que j'ai utilisé lors de mon processus d'apprentissage :

  • Bases de Python.
  • Concepts Python avancés (système de modules, types, environnement, code asynchrone).
  • Apprendre les bases des frameworks les plus populaires comme Django, Flask et FastAPI.
  • Écrire mon premier serveur API avec FastAPI.
  • Ajout d'une base de données et apprentissage de l'utilisation de bases de données en Python.
  • Déploiement de l'application sur un service d'hébergement gratuit.

Où trouver de l'aide

Vous pouvez trouver beaucoup d'aide dans les communautés Reddit ou sur les serveurs Discord pendant votre apprentissage. Je suis principalement un utilisateur de Reddit et je suggèrerais de trouver des sous-reddits pour Python et le framework que vous décidez d'utiliser pour votre première application.

N'oubliez pas d'utiliser la documentation officielle. À mon avis, cela semble écrasant, et la plupart du temps, j'essaie de trouver des articles connexes si je reste bloqué sur un concept.

Assurez-vous de lire PEP 8 — Style Guide for Python Code, où vous pouvez trouver les règles de base sur la façon d'écrire du code Python.

Regarder en arrière et en avant

Alors que je réfléchis à mon parcours de développeur JavaScript à l'adoption de Python, je n'ai aucun regret. Cette transition a ouvert des opportunités passionnantes, en particulier dans les domaines de l'IA et de l'apprentissage automatique, que j'exploite désormais largement dans mes projets, notamment sur le backend.

Pour l’avenir, les possibilités avec Python sont vastes. Qu'il s'agisse de développement Web, de science des données, d'automatisation ou d'approfondissement de l'IA et de l'apprentissage automatique, Python fournit une base puissante et polyvalente sur laquelle s'appuyer et explorer de nouveaux horizons.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/oversec/fullstack-development-learning-python-as-javascript-developers-l6l?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3