Les différences entre langages de programmation, et les frameworks et bibliothèques

Cet article fait partie du cours Les bases de l'informatique, qui construit depuis zéro les connaissances informatiques pratiques indispensables pour programmer et faire du vibe coding.
Python et JavaScript diffèrent par la façon d'écrire, pas par ce que tu fais. Des schémas vont jusqu'à distinguer une bibliothèque d'un framework par le sens de l'appel.

Cet article traite des différences entre langages de programmation et des frameworks et bibliothèques.

Tu sauras dire si un nom comme React ou Next.js est un langage ou quelque chose d'écrit dans un langage.

Il couvre Python et JavaScript, plus quatre noms : React, Next.js, Django et Flutter.

Tout nom rencontré dans un livre pour débutants relève de l'une de ces trois catégories
LangageBibliothèqueFrameworkPythonJavaScriptReactNext.jsDjangoRègles pour écriretoi-même le codeAppelée depuiston propre codeTu écris ton codeaux places prévuesS'il va avec unenv. d'exécutionSi l'appel partde ton codeSi l'appel vientvers ton code
La rangée du haut est l'appellation, celle du milieu un exemple typique, celle du bas le rapport avec ton propre code. La colonne tout à droite est ce qu'il faut vérifier quand tu croises le nom.

Ce qu'est un langage de programmation — une syntaxe différente, un contenu identique

Un langage de programmation (le vocabulaire et les règles d'écriture du code source) va de pair avec un environnement d'exécution.

Ce qui diffère, c'est la syntaxe (les règles qui fixent avec quels signes et dans quel ordre s'écrit une instruction).

Même rôlePythonJavaScript
Donner un nom à une valeura = 3let a = 3;
Séparer selon une conditionif a > 2:if (a > 2) {
Afficher à l'écranprint(a)console.log(a)

Python marque un bloc par le : en fin de ligne et l'indentation, JavaScript par ; et { }.

Sur les quatre lignes qui suivent, les trois premières sont écrites à la manière de JavaScript et la dernière à celle de Python.

let a = 3;
let b = 4;
console.log(a + b);
console.log(len([a, b]))

Après le 7 affiché à la troisième ligne, l'exécution s'arrête à la dernière.

Même quand tu veux faire la même chose, l'environnement d'exécution ne sait pas lire une écriture différente.

Les langages diffèrent par l'écriture, pas par ce qu'ils font

Un langage de programmation, c'est l'ensemble des règles de signes et d'ordre des mots pour écrire du code.

Donner un nom à une valeur, séparer selon une condition et répéter existent dans tous les langages ; ce qui diffère, c'est seulement l'écriture et l'environnement d'exécution qui la lit.

Bibliothèques et frameworks — l'appel va dans des sens opposés

Une bibliothèque (library) comme un framework sont des ensembles de programmes écrits par d'autres, et tu les utilises pour écrire moins toi-même.

Désigner par son nom une fonction d'un autre programme pour la faire s'exécuter, c'est l'appeler (call).

La différence entre les deux, c'est le sens de cet appel.

Ce qu'il faut regarderBibliothèqueFramework
Terme anglaislibraryframework
ContenuDes programmes qui ont une fonction préciseLe déroulement de toute l'application
Rapport avec ton propre codeTu l'appelles depuis ton propre codeTu ajoutes du code à des endroits fixés
Sens de l'appelTon propre code → bibliothèqueFramework → ton propre code
Ce qui décide du déroulementTon propre codeFramework
Le sens de l'appel découle de ce qui se trouve à l'extérieur
Quand tu utilises une bibliothèque
  • Ce que l'environnement d'exécution lance, c'est ton propre code (app.js)
Ton propre code (app.js)
  • Décide du déroulement de tout le programme
  • Appelle la bibliothèque là où il en a besoin
Bibliothèque
  • Ne s'exécute que lorsqu'il est appelé
  • Rend la main à ton propre code une fois terminée
Quand tu utilises un framework
  • Ce que l'environnement d'exécution lance, c'est le framework
Framework
  • Le déroulement de toute l'application y est déjà écrit
  • Appelle ton propre code à des moments fixés
Ton propre code (dans des fichiers imposés)
  • Ne s'exécute que lorsqu'il est appelé
  • L'endroit où l'écrire et son nom sont imposés
Le cadre du haut, c'est quand tu utilises une bibliothèque ; celui du bas, quand tu utilises un framework. Ce qui est à l'extérieur décide du déroulement d'ensemble, et l'intérieur ne s'exécute que lorsqu'il est appelé.

Dans le cadre du bas, l'intérieur et l'extérieur sont inversés, et c'est le framework qui appelle ton propre code.

Ce qui est à l'extérieur décide du déroulement d'ensemble.

Appeler une bibliothèque tient en une ligne, au lieu des dizaines que tu écrirais toi-même.

La seule différence, c'est qui a écrit ce traitement.

Une bibliothèque qui doit être installée avant d'être appelée s'arrête sur une erreur si tu l'appelles sans l'avoir installée.

Les guides les appellent aussi « paquets » ou « modules », et leur fonctionnement est traité dans l'article « La gestion de paquets ».

Un framework d'application web porte le déroulement qui va de la réception de la requête au renvoi de la réponse.

Ce dont le framework se charge dans une application web
Ce dont le framework se charge
  • Reçoit la requête arrivée du navigateur
  • Regarde l'URL et cherche le traitement correspondant
  • Assemble la réponse à partir du résultat obtenu et la renvoie
Où tu écris ton propre code
  • Ne s'exécute que lorsqu'il est appelé
  • Lit et écrit la base de données et produit un résultat
  • Renvoie au framework le résultat produit
Le cadre extérieur est ce dont le framework se charge, de la réception de la requête à l'assemblage de la réponse. Seul le cadre intérieur est l'endroit où tu écris ton propre code.

Les trois éléments extérieurs sont assurés par le framework, donc tu ne les écris pas.

La raison d'utiliser un framework, c'est de ne pas avoir à écrire l'extérieur toi-même.

Ton propre code ne s'exécute qu'à la troisième étape, et le framework se charge de l'avant et de l'après.

Quelle URL exécute quel morceau de code s'écrit, là aussi, à un endroit imposé.

Appeler, ou être appelé

Une bibliothèque comme un framework sont des programmes écrits par d'autres, et la différence est de savoir lequel se trouve à l'extérieur.

La bibliothèque est appelée depuis l'intérieur de ton propre code, tandis que le framework appelle ton propre code depuis l'extérieur et décide du déroulement d'ensemble.

Ce que sont React, Next.js, Django et Flutter — classer les noms en trois catégories

Tu lis les noms rencontrés dans un cours en classant chacun comme langage, bibliothèque ou framework.

Next.js n'est pas un langage : c'est un framework écrit en JavaScript.

Frameworks et bibliothèques, placés dans leur langage
Ce qui s'écrit en JavaScript
  • Le code des écrans qui tournent dans le navigateur
  • Le code côté serveur qui tourne sur node
Next.js (framework)
  • Sépare les fichiers de page par URL
  • Tu peux aussi y écrire le traitement côté serveur
  • Construit l'écran avec React
React (bibliothèque)
  • Assemble les éléments d'un écran
  • Tu peux l'appeler sans utiliser Next.js
Ce qui s'écrit en Python
  • Le code d'analyse de données et d'automatisation
  • Le code des traitements côté serveur
Django (framework)
  • La correspondance entre URL et traitements
  • La lecture et l'écriture de la base de données
  • Le mécanisme de connexion
Ce qui s'écrit en Dart
  • Le code des applications mobiles
Flutter (framework)
  • Les écrans et le comportement d'une application mobile
  • D'un seul code vers iPhone comme vers Android
À l'extérieur le langage, à l'intérieur les frameworks et bibliothèques que tu écris dans ce langage. Ce qui est à l'intérieur s'écrit avec la syntaxe du langage qui l'entoure.

React est une bibliothèque qui assemble les éléments d'un écran, et Next.js un framework qui utilise ce React et va jusqu'au traitement côté serveur.

Flutter est un framework pour créer des applications mobiles, et il s'écrit dans un langage appelé Dart.

Pouvoir créer, à partir d'un seul code, une application qui tourne sur plusieurs OS s'appelle le multiplateforme (cross-platform).

Aucun de ces noms n'est un langage : chacun s'utilise en combinaison avec ton propre code.

Le même nom, Next.js, apparaît du côté de l'appareil comme du côté du serveur.

C'est parce que son périmètre change selon qu'il construit seulement l'écran ou qu'il porte aussi le traitement côté serveur.

Même depuis une application mobile faite avec Flutter, ce à quoi elle se connecte reste le même serveur public.

Le nom est-il un langage, ou quelque chose écrit dans un langage

Next.js, React, Django et Flutter ne sont pas des langages : chacun est écrit dans un langage.

Chercher dans quel langage il s'écrit t'indique si c'est un langage en soi, et chercher le sens de l'appel t'indique si c'est une bibliothèque ou un framework.

Par quel langage commencer — décide selon que ton projet a besoin ou non d'un écran dans le navigateur

Le langage qu'un navigateur sait lire est JavaScript, donc le côté écran (le frontend) se fait en JavaScript.

Le côté traitement (le backend) tourne sur le serveur, donc tu peux l'écrire dans l'un ou l'autre.

De ce que tu veux créer à ton premier langage, puis aux noms qui suivent
Ce que tu veux créerIl faut un écrandans le navigateurIl faut un écransur mobilePas d'écran :calculs, automatisationJavaScriptDart, etc.PythonReactNext.jsFlutterDjangopandas
La case du haut se divise en trois, et chacune aboutit à un langage en dessous. La rangée du bas, ce sont les frameworks et bibliothèques dont tu verras les noms après avoir choisi ce langage.

Si tu as besoin d'un écran dans le navigateur, cette partie est réglée : ce sera JavaScript.

Si tu n'as pas besoin d'écran, commence par Python, qui compte beaucoup de bibliothèques externes pour l'analyse de données et l'automatisation.

Les frameworks et bibliothèques de la rangée du bas viennent après le choix du langage : ce ne sont pas eux que tu choisis en premier.

Quel que soit ton point de départ, les mécanismes que tu acquiers sont les mêmes.

Les deux parcours se rejoignent au même endroit.

Quel que soit le langage de départ, les mécanismes acquis sont les mêmes
Si tu as commencépar PythonSi tu as commencépar JavaScripta = 3if / whilelet a = 3;if / whileNommer une valeurséparer par casrépéter
Les deux parcours, à gauche et à droite, se rejoignent en un seul en dessous. Tu apprends séparément les deux façons d'écrire, mais les mécanismes auxquels tu aboutis sont communs.

Ce que tu réapprends, c'est l'écriture et les noms des bibliothèques utilisées dans ce langage.

Choisis celui qui est le plus proche de ce que tu veux créer, et avance avec lui.

Une fois ton projet décidé, le langage l'est aussi

Le langage se décide par ce que tu veux créer, pas par préférence.

S'il te faut un écran qui tourne dans le navigateur, cette partie est en JavaScript ; sinon, tu peux commencer par Python, et pour un deuxième langage, tu ne réapprends que l'écriture et les noms des bibliothèques.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Le Next.js que tu rencontres dans les livres pour débutants est-il un langage, une bibliothèque ou un framework ?

Question 2Quelle affirmation sur la différence entre une bibliothèque et un framework est correcte ?

Question 3Pourquoi le code du côté écran d'une application web s'écrit-il en JavaScript ?