Algol (langage)
Page d'aide sur l'homonymie Pour les articles homonymes, voir Algol.

Algol est un langage de programmation. Il a été créé à la fin des années 1950. Son nom est l'acronyme d'algorithmic oriented language (avec un clin d'œil à l'étoile β Persei). Son objectif était de décrire algorithmiquement des problèmes de programmation. Les principales différences au niveau de la conception par rapport à Fortran furent l'utilisation de blocs marqués par BEGIN END et surtout la récursivité, concepts qui seront largement repris par ses successeurs.

Le premier rapport décrivant le langage date de 1958 et a donc donné lieu à Algol 58. Il y a eu ensuite 2 autres versions, Algol 60 et Algol 68. On peut citer également Algol W qui est issu d'Algol 60, créé après 1968 en suivant les propositions de Niklaus Wirth qui était dans le groupe de travail sur Algol 68 (lesdites propositions de Wirth ayant été refusées par le groupe de travail définissant Algol 68). Wirth s'inspirera d'Algol W pour créer le langage Pascal. Tandis qu'Algol 60 a été développé conjointement par une équipe comprenant des Américains et des Européens, Algol 68 a en grande partie été conçu en Europe.

Hormis un succès universitaire certain, Algol ne sera pas beaucoup utilisé dans des programmes commerciaux. Cela est dû en particulier pour l'Algol 60 au manque de fonctions standards d'entrée-sortie, défaut surcorrigé dans Algol 68. Une mauvaise adaptation aux programmes de gestion fut aussi un frein à son développement, toutefois il influença considérablement le développement de nombreux langages de programmation.

Algol 60 a été publié en 1960. John Backus et Peter Naur faisaient partie du comité qui l'a créé. Algol 60 a inspiré beaucoup de langages. Une citation classique à cet égard est attribuée à C. A. R. Hoare: « Algol a été une grande amélioration de ses successeurs »[1]. Ce commentaire est parfois attribué faussement à Edsger Dijkstra connu aussi pour ses commentaires humoristiques.

La suite de cet article est principalement consacrée au langage Algol 60. En effet, sans mention de millésime le terme Algol désigne le langage Algol 60.

Sommaire

Caractéristiques

Algol 60 est un langage typé, procédural récursif et à structure de blocs. Il permet la construction de types dynamiques mais son système de typage ne permet pas à l'utilisateur de définir de nouveaux types. Algol 60 a été défini sans instructions d'entrées/sorties ; une implémentation sur une machine donnée en comportait nécessairement, mais elles variaient de l'une à l'autre. En réaction à cette situation, Algol 68 les a surspécifiées.

Algol 60 permet deux types de passage de paramètres lors de l'appel de procédure: passage par valeur et le passage par nom. Le passage par nom possède certaines limitations par rapport au passage par référence aussi a-t-il été abandonné dans les successeurs d'Algol 60. Par exemple il est impossible en Algol 60 d'écrire une procédure échangeant deux valeurs si un des paramètres est un entier et l'autre un tableau indexé par cet entier.

John Backus a conçu la BNF pour Backus Normal Form permettant la spécification de Algol 58. Cette méthode de description d'un langage a été révisée et étendue par Peter Naur sous le nom Backus Naur Form avec le même acronyme pour spécifier Algol 60.

Algol 68

Algol 68 a été défini par une grammaire indépendante du contexte qui porte le nom de son concepteur Adriaan van Wijngaarden. Ont été ajoutées à la version précédente la possibilité de définir de nouveaux types, la surcharge et l'extension des opérateurs prédéfinis.

Architecture supportant Algol

Le B5000 de Burroughs Corporation et ses successeurs étaient et sont des machines à pile conçues pour être programmées avec un Algol étendu ; leur systèmes d'exploitation est écrit en Algol depuis 1961. Unisys Corporation continue de commercialiser des machines descendant du B5000 supportant plusieurs compilateurs Algol étendus.

Exemple de code (Algol 60)

Les termes en caractère gras (procedure, ...) sont des mots réservés du langage. Chaque implémentation du langage peut utiliser sa propre convention syntaxique (par exemple 'PROCEDURE').

procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);
    value n, m; array a; integer n, m, i, k; real y;
comment Le plus grand élément en valeur absolue de la matrice a de taille
         n par m est transféré à y et les indices de cet élément à i et k ;
begin integer p, q;
    y := 0; i := k := 1;
    for p:=1 step 1 until n do
        for q:=1 step 1 until m do
            if abs(a[p, q]) > y then
                begin
                    y := abs(a[p, q]);
                    i := p; k := q
                end
end Absmax

Notes

  1. La citation originale est « Voici un langage très en avance de son temps, il n'a pas seulement été une amélioration de ses prédécesseurs mais aussi une amélioration de presque tous ses successeurs », mais l'aphorisme est plus connu

Voir aussi

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Algol (langage) de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Algol (Langage) — Pour les articles homonymes, voir Algol. Algol est un langage de programmation. Il a été créé à la fin des années 1950. Son nom est l acronyme d algorithmic oriented language (avec un clin d œil à l étoile β Persei). Son objectif était de décrire …   Wikipédia en Français

  • ALGOL — (langage) Pour les articles homonymes, voir Algol. Algol est un langage de programmation. Il a été créé à la fin des années 1950. Son nom est l acronyme d algorithmic oriented language (avec un clin d œil à l étoile β Persei). Son objectif était… …   Wikipédia en Français

  • Langage Algol — Algol (langage) Pour les articles homonymes, voir Algol. Algol est un langage de programmation. Il a été créé à la fin des années 1950. Son nom est l acronyme d algorithmic oriented language (avec un clin d œil à l étoile β Persei). Son objectif… …   Wikipédia en Français

  • Langage de programmation Algol — Algol (langage) Pour les articles homonymes, voir Algol. Algol est un langage de programmation. Il a été créé à la fin des années 1950. Son nom est l acronyme d algorithmic oriented language (avec un clin d œil à l étoile β Persei). Son objectif… …   Wikipédia en Français

  • ALGOL — (algorithmic oriented language) Langage algorithmique utilisé pour le traitement des problèmes à caractère scientifique. Sa vocation essentiellement mathématique fait qu’il a joué un rôle important dans la définition et dans le développement des… …   Encyclopédie Universelle

  • Algol 68 — est un langage de programmation dérivé du langage Algol 60. L objectif des concepteurs d Algol 68 était d offrir un langage de programmation universel et résolument innovateur. Pour cela, sa syntaxe a été définie à l aide d une grammaire… …   Wikipédia en Français

  • Algol W — est une version du langage Algol due à Niklaus Wirth, proposée au comité Algol 68 pour succéder à Algol 60. Bien qu antérieure au Pascal, elle était plus puissante à certains points de vue. En particulier toute expression ou tout bloc, en Algol W …   Wikipédia en Français

  • langage — [ lɑ̃gaʒ ] n. m. • v. 1160; lengatge v. 980; de langue I ♦ 1 ♦ Fonction d expression de la pensée et de communication entre les hommes, mise en œuvre au moyen d un système de signes vocaux (parole) et éventuellement de signes graphiques… …   Encyclopédie Universelle

  • LANGAGE (informatique) — LANGAGE, informatique La notion de langage (opposée ici à celle de langue, pour laquelle on doit tenir compte de la double articulation monème phonème, et de son caractère vocal) est liée à la notion de signe: un langage est communément défini… …   Encyclopédie Universelle

  • Langage Pascal — Pascal (langage) Pour les articles homonymes, voir Pascal. Pascal …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”