Informatique

BASIC, le langage qui a mis la programmation à la portée de tous

Inventé en 1964 pour que tous les étudiants d'une université puissent programmer, BASIC est devenu dans les années 1980 le langage de tous les micro-ordinateurs familiaux : on l'avait sous les doigts dès l'allumage. Des millions de personnes y ont écrit leurs premières lignes de code, souvent recopiées depuis un magazine. Cinq planches pour découvrir ses numéros de ligne, son GOTO tant critiqué, sa façon de calculer, ses petits programmes célèbres, puis pour exécuter de vrais programmes BASIC.

« Beginner's All-purpose Symbolic Instruction Code »

Au début des années 1960, programmer un ordinateur demande de porter un paquet de cartes perforées au centre de calcul, puis d'attendre ses résultats des heures, voire un jour. À Dartmouth College, aux États-Unis, deux professeurs de mathématiques, John Kemeny et Thomas Kurtz, veulent que tous leurs étudiants, y compris en lettres, puissent programmer. Ils conçoivent un système à temps partagé, où un seul ordinateur sert à tour de rôle de nombreux terminaux, et un langage simple, BASIC. Le 1er mai 1964, vers 4 heures du matin, les deux premiers programmes BASIC s'exécutent en même temps sur l'ordinateur GE-225 de l'université. Kemeny et Kurtz ne déposent aucun brevet : le langage se répand librement.

Les grandes versions de BASIC (en haut) et les machines qui l'ont popularisé (en bas). Presque chaque micro-ordinateur des années 1980 avait son propre dialecte, souvent écrit par Microsoft.
Planche 1

Des lignes numérotées et le temps partagé

1964

Sur un terminal des années 1960, il n'y a pas d'éditeur de texte à l'écran : on tape une ligne après l'autre sur un téléscripteur. BASIC trouve une solution simple : chaque ligne commence par un numéro. Taper 25 PRINT X insère la ligne entre 20 et 30, retaper un numéro remplace la ligne, et taper un numéro seul l'efface. On numérote de 10 en 10 pour pouvoir glisser des lignes plus tard ; quand il n'y a plus de place, la commande RENUM renumérote tout et corrige les renvois. Tapez des lignes, puis renumérotez.

Le temps partagé : l'ordinateur central donne à chaque terminal, à tour de rôle, une petite tranche de temps de calcul. Chaque utilisateur a l'impression d'avoir la machine pour lui seul.

Le programme (LIST) et ce qu'il affiche (RUN)

Dernière action
—
Lignes / renvois (GOTO, GOSUB, THEN, ELSE, RESTORE)
—
Message
—
Contrôle : RENUM et LIST du programme de départ comparés à PC-BASIC 2.0, émulateur fidèle de GW-BASIC
—
Ce qu'il faut retenir. Le numéro de ligne sert à la fois à éditer le programme et à le diriger : GOTO 30 saute à la ligne 30. Le temps partagé de Dartmouth était aussi révolutionnaire que le langage : la réponse arrivait en quelques secondes, ce qui invitait à essayer, se tromper et corriger, une façon de programmer très moderne. BASIC était interprété : chaque ligne est lue et exécutée directement, sans compilation préalable, ce qui le rendait idéal pour apprendre, au prix d'une certaine lenteur. Le premier BASIC de Dartmouth, lui, était en fait compilé, mais assez vite pour que l'utilisateur ne s'en aperçoive pas.
Planche 2

Le GOTO et la programmation structurée

1968 – 1991

Dans les premiers BASIC, la seule façon de répéter ou de choisir est de sauter d'une ligne à une autre : GOTO 40, ou IF ... THEN 80. Dès 1968, Edsger Dijkstra dénonce, dans un article resté célèbre, les programmes où les sauts s'entrecroisent : ils deviennent un « plat de spaghettis » impossible à relire. Les BASIC suivants ajoutent des structures (WHILE ... WEND, puis DO ... LOOP et des blocs IF sur plusieurs lignes). Comparez deux programmes qui cherchent les nombres premiers jusqu'à 30 : la commande TRON affiche le numéro de chaque ligne exécutée.

4
Le programme, une ligne par case. Les flèches à gauche relient les lignes quand l'exécution saute en arrière ou en avant ; leur épaisseur grandit avec le nombre de passages. La case rouge est la ligne en cours.

Ce qu'affiche TRON

Lignes exécutées / sauts
—
Nombres premiers trouvés
—
Les deux versions : lignes exécutées
—
Contrôle : sorties de TRON comparées caractère par caractère à PC-BASIC
—
Ce qu'il faut retenir. Les deux programmes donnent le même résultat, mais le premier se lit en suivant des flèches, le second de haut en bas, avec des blocs emboîtés. C'est l'idée de la programmation structurée : trois constructions suffisent pour écrire tout programme, la suite d'instructions, le choix et la boucle (théorème de Böhm et Jacopini, 1966). Dijkstra jugeait même, en 1975, qu'il était « pratiquement impossible » d'enseigner la bonne programmation à des étudiants passés par BASIC ; beaucoup de programmeurs ont prouvé le contraire. QuickBASIC (1985), Turbo Basic (1987) puis QBasic (1991) permettent d'écrire sans numéros de ligne, avec des sous-programmes nommés.
Planche 3

Comment BASIC range les nombres

1975 – 1989

Pour économiser la mémoire, les BASIC de Microsoft rangent les nombres réels sur 4 octets, au format MBF (Microsoft Binary Format) : un octet d'exposant et 24 bits de mantisse, soit environ 7 chiffres significatifs. Les entiers (variables suivies de %) tiennent sur 2 octets, de −32 768 à 32 767. Comme le nombre est stocké en binaire, 0,1 ne tombe pas juste : PRINT arrondit à 7 chiffres pour l'affichage, mais les petites erreurs s'accumulent. Tapez une expression.

Les 4 octets du résultat en mémoire, tels que les range GW-BASIC : trois octets de mantisse (le bit de poids fort du troisième donne le signe) puis l'octet d'exposant. La valeur vaut ± 0,1mantisse (en binaire) × 2exposant − 128.
Affichage de PRINT
—
Valeur exacte réellement stockée
—
Nombres représentables juste en dessous et juste au-dessus
—
Contrôle : 514 lignes de calculs au hasard (opérations, fonctions, RND) comparées à PC-BASIC
—
Ce qu'il faut retenir. Ajouter mille fois 0,1 donne 99,99905 et non 100 : chaque addition arrondit au plus proche des nombres représentables. Et S = 1 peut être faux alors que PRINT S affiche 1 ! C'est pourquoi on ne compare jamais deux réels avec =, mais leur écart à une petite tolérance. Le format MBF a été remplacé par la norme IEEE 754 (1985), que suivent tous les processeurs actuels ; QuickBASIC l'adopte en 1987. Les nombres de plus de 7 chiffres sont rangés en double précision (8 octets, environ 16 chiffres), que ce petit interpréteur ne reproduit pas.
Planche 4

Le labyrinthe en une ligne et le hasard

1982

Sur le Commodore 64, une seule ligne de BASIC dessine un labyrinthe infini : 10 PRINT CHR$(205.5+RND(1)); : GOTO 10. Elle affiche au hasard l'un des deux caractères diagonaux du Commodore, ╱ ou ╲. Ce programme est si célèbre qu'un livre entier lui a été consacré en 2012, 10 PRINT. Voici sa version pour GW-BASIC, avec les caractères / et \. Le hasard de l'ordinateur n'en est pas vraiment un : RND calcule une suite de nombres pseudo-aléatoires à partir d'une graine fixée par RANDOMIZE.

64
Les 640 caractères affichés par le programme, sur 16 lignes de 40 colonnes comme sur l'écran d'un Commodore 64, tracés comme des diagonales. Pour la même graine, l'ordinateur dessine toujours le même labyrinthe.
Le programme
—
Caractères / et \
—
Générateur de GW-BASIC : graine suivante = (graine × 214 013 + 2 531 011) modulo 2²⁴
—
Contrôle : labyrinthe de la graine 64 et 20 tirages de RND comparés à PC-BASIC
—
Ce qu'il faut retenir. Un générateur congruentiel linéaire fait un calcul simple sur la graine pour obtenir la suivante, puis la divise par 224 pour avoir un nombre entre 0 et 1. La suite paraît aléatoire mais revient sur elle-même après au plus 16 777 216 tirages. Sans RANDOMIZE, chaque exécution donne la même suite, ce qui est pratique pour chercher une erreur ; dans les jeux, on utilisait souvent RANDOMIZE TIMER, l'heure servant de graine. Ces petits programmes étaient publiés en listings dans les magazines (en France, Hebdogiciel, Tilt, Jeux et Stratégie) et recopiés à la main, ligne par ligne, par des milliers de lecteurs.
Planche 5 · signature

Exécuter de vrais programmes BASIC

2026

Voici un petit interpréteur BASIC, écrit pour cette page, qui reproduit le comportement de GW-BASIC, le BASIC des compatibles PC (1983) : mêmes calculs en simple précision MBF, même générateur aléatoire, même présentation de PRINT. Il accepte les lignes numérotées, PRINT (avec ;, ,, TAB, SPC), LET, IF ... THEN ... ELSE, GOTO, GOSUB / RETURN, FOR ... NEXT, WHILE ... WEND, ON ... GOTO, DIM, READ / DATA / RESTORE, SWAP, RANDOMIZE, TRON, les fonctions numériques et les fonctions de chaînes (LEFT$, MID$, CHR$, STRING$…). Chaque exemple a aussi été exécuté par PC-BASIC : les sorties sont comparées caractère par caractère.

Le programme

L'écran


      

Les variables en fin d'exécution

Instructions exécutées
—
Durée estimée sur un IBM PC de 1981 (4,77 MHz)
—
Message de l'interpréteur
—
Contrôle : sortie identique à celle de PC-BASIC 2.0 (exemple d'origine)
—
Ce qu'il faut retenir. Un programme BASIC se lit presque comme de l'anglais : FOR I = 1 TO 10, IF ... THEN, PRINT. Le point-virgule colle les affichages, la virgule les aligne sur des colonnes de 14 caractères, et un nombre positif est toujours précédé d'une espace (la place du signe) et suivi d'une autre. Les variables n'ont pas besoin d'être déclarées : leur nom donne leur type (A$ pour une chaîne, A% pour un entier, A pour un réel). Les erreurs ont gardé leurs messages en anglais, comme dans GW-BASIC : Syntax error in 40. La saisie au clavier (INPUT) n'est pas disponible ici ; les données passent par READ et DATA. Essayez de changer la graine de l'exemple 6 ou le nombre de l'exemple 4.

Où trouve-t-on BASIC ?

L'école et l'apprentissage

En 1985, le plan Informatique pour tous installe environ 120 000 micro-ordinateurs, surtout des Thomson MO5 et TO7/70, dans les écoles, collèges et lycées français ; on y programme en BASIC et en LOGO. Aujourd'hui, Scratch et Python ont pris le relais.

La micro-informatique familiale

Apple II, Commodore 64, ZX Spectrum, Amstrad CPC, Oric, MSX : tous démarrent sur un interpréteur BASIC. Microsoft, fondé en 1975 pour vendre l'Altair BASIC de Bill Gates et Paul Allen, en a fourni la plupart.

Les jeux

Des milliers de jeux ont été écrits en BASIC, souvent publiés en listings. QBasic, livré avec MS-DOS 5 en 1991, contenait deux jeux d'exemple restés célèbres, Gorillas et Nibbles, que beaucoup ont modifiés pour apprendre.

Visual Basic et les macros

Visual Basic (1991) permet de dessiner une fenêtre à la souris et d'y attacher du code : des milliers d'applications de gestion sont ainsi développées. VBA, son cousin intégré à Excel, Word et Access depuis 1993, automatise encore aujourd'hui d'innombrables tableaux de calcul.

Calculatrices

Les calculatrices graphiques de Texas Instruments et de Casio se programment dans des dialectes de BASIC : pour de nombreux lycéens, c'est le premier contact avec la programmation.

Aujourd'hui

Visual Basic .NET (2002) reste utilisé en entreprise : Visual Basic est 7e du classement TIOBE d'octobre 2026. Microsoft a annoncé en 2020 qu'il n'évoluerait plus comme langage. Des passionnés font vivre QB64, FreeBASIC et les BASIC des machines anciennes.

Frise des jalons

Pour aller plus loin

Les exemples, les traces TRON, la renumérotation et les 514 calculs de la planche 3 ont été exécutés par PC-BASIC 2.0, qui reproduit GW-BASIC jusque dans ses arrondis, au moment de la fabrication de la page. Les calculs en simple précision de cette page transcrivent en JavaScript ses algorithmes, et votre navigateur refait toutes les comparaisons. La durée sur IBM PC est une estimation (environ 1 000 instructions BASIC par seconde).