Chapitre 1

Mise en place de l’environnement et bases de l’exécution du code

Maîtriser la configuration de l’environnement de développement, comprendre le flux complet du code, de l’écriture à l’exécution, et apprendre des techniques de débogage efficaces.

Configuration de l’environnement de développement

Un bon environnement de développement est la base d’une programmation efficace. Différentes piles techniques nécessitent différents environnements d’exécution. Sélectionnez un type de développement et une pile technique pour afficher les guides de configuration détaillés.

Backend

Langages et frameworks de développement côté serveur

Java

Le leader du développement d’entreprise, l’écosystème Spring Boot est mature

Version recommandée : OpenJDK 17+

Étapes d’installation

  • Téléchargez et installez OpenJDK (17 ou version ultérieure recommandée)
  • Windows : Télécharger depuis Adoptium ou Microsoft Build of OpenJDK
  • macOS : utiliser Homebrew pour installer `brew install openjdk@17`
  • Linux : utilisez le gestionnaire de paquets pour installer `sudo apt install openjdk-17-jdk`
  • Vérifier l’installation : `java -version`

Gestion des versions (SDKMAN / jenv)

Installer :

SDKMAN: `curl -s "https://get.sdkman.io" | bash`

Commandes courantes :

  • Installer plusieurs versions de JDK : `sdk install java 17.0.8-tem`
  • Changer de version : `sdk use java 17.0.8-tem`
  • Définir la version par défaut : `sdk default java 17.0.8-tem`

Gestionnaire de paquets (Maven / Gradle)

Installer :

Maven : télécharger et décompresser, configurer la variable d’environnement PATH

Configuration :

  • Fichier de configuration Maven : `~/.m2/settings.xml`
  • Fichier de configuration Gradle : `~/.gradle/gradle.properties`
  • Fichier de configuration du projet : `pom.xml` (Maven) ou `build.gradle` (Gradle)

Configuration de la source miroir (Miroir Maven)

Miroir recommandé :

Alibaba Cloud, Tencent Cloud, Huawei Cloud

Méthode de configuration :

  • Configurer le miroir Alibaba Cloud : ajoutez la balise `<mirror>` dans `settings.xml`
  • Ou utilisez la variable d’environnement : `MAVEN_OPTS=-Dmaven.repo.local=~/.m2/repository`

IDE recommandé

IntelliJ IDEA (recommandé)EclipseVS Code + Java Extension Pack

Bonnes pratiques des gestionnaires de paquets

  • Verrouiller les versions des dépendances:Utiliser un lockfile (package-lock.json, yarn.lock, pnpm-lock.yaml, Gemfile.lock, composer.lock, Cargo.lock, etc.)
  • Distinguer les types de dépendances : dépendances de production vs dépendances de développement
  • Mettre à jour régulièrement:Utiliser des outils pour vérifier les dépendances obsolètes
  • Audit de sécurité: Exécuter régulièrement des analyses de sécurité (npm audit, pip-audit, cargo audit, etc.)
  • Utiliser une source miroir: L’utilisation d’une source miroir en local peut améliorer considérablement la vitesse de téléchargement

Principes d’exécution du code

Une compréhension approfondie du processus complet, de l’écriture du code à son exécution, ainsi que des mécanismes d’exécution des différents langages, aide à mieux déboguer et optimiser le code. Cette section propose une analyse complète du processus d’exécution du code, des principes de base aux applications pratiques.

Le cycle de vie complet de l’exécution du code

Du code source à l'exécution finale, le code passe par plusieurs étapes de traitement. Comprendre ce processus aide à comprendre les caractéristiques de performance et les méthodes de débogage de différents langages.

1

Analyse lexicale

Décomposez le code source en une série de jetons (tokens), tels que des mots-clés, des identifiants, des opérateurs et des littéraux.

Exemple :

let x = 10;

→ Token: [let] [x] [=] [10] [;]

2

Analyse syntaxique / Parsing

Organiser les séquences de jetons en arbre syntaxique abstrait (AST - Abstract Syntax Tree) pour représenter la structure syntaxique du code.

Structure AST :

VariableDeclaration
  ├─ Identifier: x
  └─ Literal: 10
3

Analyse sémantique (Semantic Analysis)

Vérifier la correction sémantique du code : vérification des types, analyse de portée, liaison des variables, détection des erreurs.

  • • Vérification des types : assurer la correspondance des types (langages à typage statique)
  • • Analyse de portée : déterminer la portée visible des variables
  • • Construction de la table des symboles : enregistrer les informations telles que les variables et les fonctions
4

Génération de code (Code Generation)

Convertir l’AST en code cible : code machine (compilé), bytecode (JVM, .NET), représentation intermédiaire (LLVM IR), etc.

Compilé

AST → code machine

Bytecode

AST → bytecode

Interprété

AST → exécution directe

5

Optimisation (Optimization)

Optimisez le code généré pour améliorer les performances et réduire la consommation de ressources.

  • Optimisation au moment de la compilation: Pliage de constantes, élimination du code mort, optimisation des boucles, insertion en ligne
  • Optimisation à l’exécution (JIT): détection du code hotspot, compilation dynamique, dé-optimisation
6

Exécution

Exécuter du code dans l’environnement d’exécution : le CPU exécute le code machine, la machine virtuelle exécute le bytecode et l’interpréteur exécute l’AST.

Environnement d'exécution :

  • • CPU : exécute directement le code machine (C, C++, Rust, Go)
  • • Machine virtuelle : exécute le bytecode (JVM, .NET CLR)
  • • Interpréteur : exécute l’AST ligne par ligne (Python, JavaScript initial)

Organigramme complet

Code sourceAnalyse lexicaleAnalyse syntaxiqueASTAnalyse sémantiqueGénération de codeOptimisationExécuter

Astuces de débogage

Une capacité de débogage efficace est une compétence fondamentale pour les développeurs. Maîtriser plusieurs méthodes de débogage permet d’identifier et de résoudre rapidement les problèmes.

Débogage avec point d’arrêt

  • Point d'arrêt conditionnel:Mettre en pause uniquement lorsque les conditions sont remplies
  • Point d’arrêt de journalisation : enregistrer les informations sans interrompre l’exécution
  • Analyse de la pile d’appels: Suivre les chaînes d’appels de fonctions
  • Surveillance des variables: visualiser en temps réel les changements de valeur des variables

Débogage des journaux

  • Niveau de journalisation:DEBUG、INFO、WARN、ERROR
  • Journalisation structurée: utiliser le format JSON pour faciliter l’analyse
  • Agrégation des journaux: Collecter et analyser les journaux de manière centralisée
  • Journaux de performance: Enregistrer le temps pris par les opérations clés

Débogage assisté par l’IA

Utilisez des outils d’IA pour identifier rapidement les problèmes :

  • • Collez le message d’erreur dans l’IA pour obtenir des solutions possibles
  • • Utiliser l’IA pour analyser la logique du code et repérer les problèmes potentiels
  • • Faire générer des cas de test par l’IA pour vérifier l’effet du correctif
  • • Utiliser l’IA pour expliquer des piles d’erreurs complexes

Résultats d’apprentissage

À la fin de ce chapitre, vous pourrez :

  • 1Peut configurer un environnement de développement complet, notamment :
    • Frontend:Node.js/TypeScript、React、Vue、Angular、Svelte、Next.js、Vite、Webpack
    • Backend:Java、Python、Go、Node.js、C#、Rust、C++、Ruby、PHP
    • Appareils mobiles:React Native、Flutter、Swift/iOS、Kotlin/Android、Dart、Android Studio、Xcode
  • 2Comprendre le flux complet du code, de l’écriture à l’exécution (interprété vs compilé)
  • 3Maîtriser les méthodes de débogage de base (débogage par points d’arrêt, débogage par logs, débogage assisté par l’IA)
  • 4Comprendre les bonnes pratiques et les considérations de sécurité des gestionnaires de paquets, et pouvoir configurer des miroirs pour différentes piles technologiques