5 - Le développement5.4 - La programmation

Chapitre 5.4.2
Les variables

Stocker en mémoire le résultat d'un traitement.
Temps de lecture : 4 minutes


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.