Conçu par Niklaus Wirth à Zurich en 1970 pour enseigner une programmation claire et rigoureuse, Pascal a formé des générations d'étudiants, puis a conquis les micro-ordinateurs avec Turbo Pascal et le développement d'applications avec Delphi. Cinq planches pour découvrir ses types vérifiés par le compilateur, son P-code portable, ses algorithmes récursifs, ses pointeurs, puis pour compiler et exécuter de vrais programmes Pascal.
À la fin des années 1960, Niklaus Wirth, professeur à l'École polytechnique fédérale de Zurich (ETH), juge les langages de l'époque trop complexes (PL/I, ALGOL 68) ou trop permissifs (Fortran) pour enseigner. Il conçoit un langage petit, régulier, où chaque donnée a un type déclaré et où le programme se lit comme une suite de blocs emboîtés : begin ... end, if ... then ... else, while ... do. Il le baptise Pascal, en hommage au mathématicien et philosophe Blaise Pascal, inventeur en 1642 d'une machine à calculer. Le premier compilateur fonctionne en 1970 sur un ordinateur CDC 6000 de l'ETH ; la définition du langage est publiée en 1971.
En Pascal, toute variable est déclarée avec son type : integer (entier), real (réel), boolean, char, string, mais aussi des types que l'on invente : une énumération (Rouge, Vert, Bleu), un intervalle 1..10, un tableau, un enregistrement. Avant d'exécuter quoi que ce soit, le compilateur vérifie que chaque valeur va dans une variable de type compatible : beaucoup d'erreurs sont ainsi détectées avant même le premier essai. Choisissez une instruction : le compilateur l'accepte-t-il ?
round ou trunc) ; une condition doit être un booléen ; une couleur n'est pas un jour de la semaine. Les types inventés par le programmeur rendent le programme plus lisible et plus sûr. Mais le compilateur ne peut pas tout prévoir : un débordement de calcul pendant l'exécution passe inaperçu, sauf si l'on active les contrôles avec {$R+} et {$Q+}. Ces idées ont inspiré Ada, Modula-2, Java ou Rust.Écrire un compilateur pour chaque ordinateur coûte cher. Vers 1973, l'équipe de Wirth diffuse un compilateur Pascal qui ne produit pas du code machine, mais du P-code : les instructions d'une machine imaginaire très simple, à pile. Pour faire fonctionner Pascal sur un nouvel ordinateur, il suffit d'écrire un petit interpréteur de P-code. En 1977, l'UCSD Pascal de l'université de Californie à San Diego étend l'idée à tout un système, qui tourne sur l'Apple II et l'IBM PC. Suivez la traduction d'un programme et son exécution sur la pile.
a mod b, on empile a, on empile b, puis MOD remplace les deux valeurs du sommet par le résultat. Le code produit est compact et l'interpréteur tient en quelques pages : c'est ainsi que Pascal s'est répandu sur des dizaines de machines différentes. L'interprétation est plus lente que du vrai code machine, mais l'idée a fait école : vingt ans plus tard, Java reprend exactement ce principe avec son bytecode et sa machine virtuelle, tout comme Python ou WebAssembly.Le livre de Wirth paru en 1976 porte un titre qui résume sa pensée : Algorithms + Data Structures = Programs. Un exemple célèbre en est le problème des huit reines : placer huit reines sur un échiquier sans qu'aucune n'en menace une autre (même ligne, même colonne, même diagonale). La procédure récursive Placer(i) essaie chaque colonne de la ligne i ; si la case est libre, elle pose la reine et passe à la ligne suivante, sinon elle essaie la colonne d'après, et revient en arrière quand rien ne marche : c'est le retour sur trace. Trois tableaux de booléens retiennent les colonnes et les diagonales occupées.
Placer, avec la colonne essayée. Quand la pile se vide d'un niveau, l'algorithme revient en arrière.array[-7..7] pour les diagonales), permet d'écrire cet algorithme presque comme on l'explique.Un tableau a une taille fixée à l'avance. Pour des données dont le nombre varie, Pascal offre les pointeurs : new(p) réserve en mémoire un nouvel enregistrement et range son adresse dans p ; p^ désigne cet enregistrement ; nil est le pointeur qui ne mène nulle part ; dispose(p) rend la mémoire. Avec des enregistrements qui contiennent un pointeur vers le suivant, on construit une liste chaînée. Regardez l'insertion de huit nombres dans une liste maintenue triée.
Noeud : la valeur à gauche, le pointeur suivant à droite. La tête de liste est à gauche ; le nouveau nœud (en orange) est raccroché en changeant seulement deux pointeurs, sans déplacer les autres.^Noeud ne peut désigner qu'un Noeud), plus sûrs que ceux du C, mais l'oubli d'un dispose laisse de la mémoire perdue, et l'usage d'un pointeur après dispose provoque des erreurs difficiles à trouver. Les langages récents confient souvent ce travail à un ramasse-miettes.Voici un petit compilateur et interpréteur Pascal, écrit pour cette page, qui suit les règles de Free Pascal (mode par défaut, où integer est un entier de 16 bits). Il vérifie les types avant d'exécuter, puis exécute : constantes, types énumérés, intervalles, tableaux à plusieurs dimensions et à bornes quelconques, enregistrements, pointeurs avec new et dispose, ensembles, chaînes ; if, case, while, repeat, for ; procédures et fonctions imbriquées et récursives, avec paramètres par valeur et par variable (var) ; write et writeln avec largeurs et décimales. Chaque exemple a aussi été compilé par Free Pascal 3.2.2 : les sorties sont comparées caractère par caractère.
const, type, var, procédures et fonctions) puis d'un bloc begin ... end. ; le point-virgule sépare les instructions, il ne les termine pas, d'où l'absence de point-virgule avant end. Les procédures peuvent être imbriquées et voient les variables des blocs qui les entourent. Dans writeln(x:10:4), 10 est la largeur et 4 le nombre de décimales. Essayez de provoquer une erreur de type, par exemple i := 2.5 dans l'exemple 1, ou de passer à 10 reines dans l'exemple 5 (en changeant les bornes des tableaux).Des années 1970 aux années 1990, Pascal est le langage des cours d'informatique dans le monde entier : aux États-Unis, l'examen Advanced Placement d'informatique se passe en Pascal de 1984 à 1998 ; en France, on l'enseigne à l'université, en classes préparatoires et en IUT.
Turbo Pascal (Borland, 1983), écrit par Anders Hejlsberg, réunit un éditeur et un compilateur très rapide pour 49,95 dollars : il se vend à des centaines de milliers d'exemplaires. Une partie du système et des applications du Lisa et du premier Macintosh d'Apple est écrite en Pascal.
Delphi (1995) ajoute à l'Object Pascal la conception visuelle de fenêtres et l'accès aux bases de données. Des logiciels connus ont été écrits avec : le premier client Skype pour Windows, Total Commander, FL Studio, et de nombreux logiciels de gestion. Delphi est 19e du classement TIOBE d'octobre 2026.
Free Pascal (depuis 1993) compile Pascal pour Windows, macOS, Linux, Android et de nombreux processeurs ; l'environnement Lazarus permet de construire des applications graphiques multiplateformes. Ils ont servi à vérifier chaque exemple de cette page.
Wirth poursuit avec Modula-2 (1978) et Oberon (1987). Ada, le langage de l'aéronautique et de la défense, reprend la syntaxe et le typage de Pascal. Anders Hejlsberg, l'auteur de Turbo Pascal et de Delphi, conçoit ensuite C# (2000) et TypeScript (2012).
Pascal a popularisé la programmation structurée, les types définis par le programmeur et l'idée qu'un programme doit d'abord être lisible. Wirth reçoit le prix Turing en 1984 ; il disparaît le 1er janvier 2024, à 89 ans.
Les exemples, les verdicts de la planche 1 et les programmes des planches 2 à 4 ont été compilés et exécutés par Free Pascal 3.2.2 au moment de la fabrication de la page ; l'affichage des réels a en plus été comparé sur 966 lignes. Votre navigateur refait tous ces calculs et les compare.