Chapitre 5.4.2
Les variables
Une variable est une boite dans laquelle on stocke une valeur pour la réutiliser plus tard. C'est le concept le plus fondamental de la programmation, et on l'utilise absolument partout.
Qu'est ce qu'une variable ?
Imagine que tu as des post-its sur ton bureau. Sur un post-it, tu écris un numéro de téléphone. Sur un autre, le
nom d'un restaurant qu'on t'a recommandé. Sur un troisième, un total à ne pas dépasser pour tes courses.
Une variable, c'est exactement ça : un post-it avec un nom et une valeur. Le nom te permet de retrouver
l'information, et la valeur, c'est l'information elle-même.
En programmation, on crée des variables pour stocker des résultats intermédiaires, des informations sur
l'utilisateur, des compteurs... Bref, tout ce dont le programme a besoin pour fonctionner.
En JavaScript, on déclare une variable avec le mot-clé let :
Dans la console de ton navigateur
let age = 28 console.log(age) // Affiche 28
La variable age contient maintenant la valeur 28. Les //, c'est un commentaire : ça n'est
pas exécuté par la machine, ça sert juste à annoter le code pour les humains qui le lisent.
On peut utiliser les variables dans des calculs :
Utiliser une variable
let prixUnitaire = 15 let quantite = 3 let total = prixUnitaire * quantite console.log(total) // Affiche 45
Comme son nom l'indique, une variable peut varier. On peut changer sa valeur :
Modifier une variable
let score = 0 console.log(score) // 0 score = 10 console.log(score) // 10 score = score + 5 console.log(score) // 15
Pas besoin de réécrire let quand on modifie la variable. Le let ne sert qu'à la
première déclaration, quand on crée la variable. Ensuite, on utilise directement son nom.
Déclarer avant d'utiliser
Certains langages sont stricts : en Java ou en C par exemple, tu dois obligatoirement déclarer chaque variable
avant de l'utiliser. Si tu oublies, le programme refuse tout simplement de se lancer.
D'autres langages sont plus souples. En Python ou en PHP, tu peux utiliser une variable sans l'avoir déclarée au
préalable, le langage la crée automatiquement au moment où tu lui donnes une valeur. Pratique pour aller vite, mais
attention, si plus tard dans le programme tu essaies de lire une variable qui n'a jamais reçu de valeur, le programme plante.
Même dans les langages qui ne l'imposent pas, c'est toujours une bonne pratique de déclarer ses variables explicitement avant de les utiliser. Ça rend le code plus lisible, plus prévisible, et ça évite toute une catégorie de bugs liés aux fautes de frappe ou aux variables oubliées.
Les constantes
Parfois, on veut stocker une valeur qui ne doit jamais changer. Au lieu de déclarer une variable, on utilise une constante.
En JavaScript, on utilise alors le mot-clé const au lieu de let :
Déclarer une constante
const meilleurGuideTech = "Le Guide Tech" // Si tu essaies de la modifier : meilleurGuideTech = "Quelqu'un d'autre" // TypeError: Assignment to constant variable.
Le programme plante si tu essaies de modifier une constante. C'est voulu : ça protège les valeurs qui ne doivent
jamais bouger.
En pratique, les développeurs utilisent des constantes dès que possible et ne passent par des variables qu'en cas de réel besoin de modifier la valeur.
C'est une bonne habitude : ça rend le code plus prévisible. Quand tu
lis const, tu sais immédiatement que cette valeur ne changera pas dans la suite du programme.
Nommer ses variables et constantes
Un bon nom de variable, c'est un nom qui décrit ce qu'elle contient. Compare ces deux versions :
Noms obscurs
let x = 220 let y = x * 0.20 let z = x - y
Noms explicites
let prixAvantRemise = 220 let montantRemise = prixAvantRemise * 0.20 let prixFinal = prixAvantRemise - montantRemise
Le résultat est identique, mais la deuxième version se lit comme une phrase. N'importe qui peut comprendre ce que
fait ce code, même sans connaître la programmation.
Tu as peut-être remarqué que les noms de variables s'écrivent en collant les mots, avec une majuscule au début de
chaque mot sauf le premier : prixAvantRemise, montantRemise. Cette convention s'appelle
le camelCase, parce que les majuscules font des bosses, comme sur le dos d'un chameau. C'est la norme en
JavaScript, mais chaque langage a ses propres conventions. En Python par exemple, on préfère le snake case, les mots sont séparés par des
underscores : prix_avant_remise.
Nommer correctement ses variables est un vrai sujet de discussion entre développeurs.
Rappelle-toi la citation de Phil KARLTON "Il n'y a que deux choses difficiles en informatique : l'invalidation de cache et nommer
les choses."
La mémoire
Les variables sont physiquement stockées dans la mémoire de la machine, principalement dans les fameuses barrettes
de RAM. Chaque variable occupe un petit espace dans cette mémoire.
Imagine la RAM comme un immense casier avec des milliards de compartiments numérotés. Quand tu crées une variable,
le programme réserve un ou plusieurs compartiments pour y stocker la valeur. Quand la variable n'est plus utile,
l'espace est libéré pour être réutilisé.
En langage C, le développeur doit gérer tout ça manuellement : compter combien d'octets il lui faut, réserver
l'espace, puis le libérer quand il n'en a plus besoin. Oublier de libérer la mémoire, c'est ce qu'on appelle une
"fuite mémoire", le programme consomme de plus en plus de RAM jusqu'à ce que la machine ralentisse
ou plante.
Exemple :
Tu veux stocker le mot "Nico" en C. Il y a 4 caractères, chaque caractère prend 1 octet en mémoire, donc tu dois manuellement réserver 4 octets. Et gare à toi si tu essaies d'y stocker quelque chose de plus gros que l'espace réservé !
Les langages modernes comme JavaScript, Python ou Java gèrent tout seuls l'allocation et la libération de la
mémoire grâce à un mécanisme appelé "garbage collector" (ramasse-miettes en français, mais personne ne dit ça).
C'est lui qui surveille les variables inutilisées et libère automatiquement leur espace.
Attention, ce n'est pas une raison pour créer des variables à tort et à travers. Un développeur qui stocke des
données énormes sans réfléchir finira par rencontrer des problèmes de performance. Le garbage collector fait le
ménage, mais il a un coût : quand il tourne, il peut ralentir le programme pendant quelques millisecondes. Sur une
application temps réel comme un jeu vidéo, ça peut se voir.
L'absence de valeur
Il arrive qu'une variable existe mais ne contienne rien. En JavaScript, il y a deux façons de représenter ça :
Null et undefined
let panier console.log(panier) // undefined let codePromo = null console.log(codePromo) // null
undefined signifie que la variable a été déclarée mais qu'on ne lui a pas encore donné de valeur.
C'est JavaScript qui met ça tout seul.
null, c'est quand le développeur décide explicitement que la variable ne contient rien. C'est une
absence volontaire.
La nuance est subtile, mais elle a son importance. Si un utilisateur n'a pas renseigné son numéro de téléphone
dans un formulaire, on stocke null : il n'y a pas de valeur, et c'est attendu. En revanche, si le
programme essaie d'accéder à une variable qui n'a jamais été correctement initialisée et tombe sur
undefined, c'est souvent le signe d'un bug.
Gérer correctement l'absence de valeur est une source majeure de bugs en développement. Tony Hoare, l'inventeur du
concept de null en 1965, l'a lui-même qualifié d'"erreur à un milliard de dollars" tant il a causé de plantages
dans l'histoire de l'informatique.
