Algol W

{{#ifeq:||Un article de Ziki, l'encyclopédie libre.|Une page de Ziki, l'encyclopédie libre.}}

{{#invoke:Bandeau|ébauche}}

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 ramenait un résultat, ce qui permettait l'écriture d'expressions particulièrement élégantes.

Algol-W est visiblement une étape transitoire entre Algol 60 et Pascal. Il représente une modification relativement légère d'Algol 60, auquel N. Wirth a ajouté les types de données « string », « bitstring », les nombres complexes et les références à des enregistrements (structures), ainsi que le passage de paramètres par valeur, sans changer grand-chose d'autre.

Comme tous les autres langages de Wirth (Pascal, Modula-2, Oberon, etc.), Algol-W est un petit langage à typage statique qui diffère beaucoup moins d'Algol 60 que d'Algol 68, langage nettement plus « gros » et plus complexe.

C'est avec ALGOL W qu'en 1970 Brent programma, sur un IBM 360/67, l'algorithme de multiplication rapide de Strassen<ref name="Brent">Cf. Modèle:Ouvrage</ref>, démontrant son efficacité pour le produit de deux matrices carrées de plus de 110 lignes.

Exemple

Modèle:Souligner PERSON (
    Modèle:Souligner NAME; 
    Modèle:Souligner AGE; 
    Modèle:Souligner MALE; 
    Modèle:Souligner(PERSON) FATHER, MOTHER, YOUNGESTOFFSPRING, ELDERSIBLING
);

Modèle:Souligner(PERSON) Modèle:Souligner YOUNGESTUNCLE (Modèle:Souligner(PERSON) R);
    Modèle:Souligner
        Modèle:Souligner(PERSON) P, M;
        P := YOUNGESTOFFSPRING(FATHER(FATHER(R)));
        Modèle:Souligner (P ¬= Modèle:Souligner) and (¬ MALE(P)) Modèle:Souligner (P = FATHER(R)) Modèle:Souligner
            P := ELDERSIBLING(P);
        M := YOUNGESTOFFSPRING(MOTHER(MOTHER(R)));
        Modèle:Souligner (M ¬= Modèle:Souligner) Modèle:Souligner (¬ MALE(M)) Modèle:Souligner
            M := ELDERSIBLING(M);
        Modèle:Souligner P = Modèle:Souligner Modèle:Souligner 
            M 
        Modèle:Souligner Modèle:Souligner M = Modèle:Souligner Modèle:Souligner 
            P 
        Modèle:Souligner 
            Modèle:Souligner AGE(P) < AGE(M) Modèle:Souligner P Modèle:Souligner M
    Modèle:Souligner

Notes

<references />

Voir aussi

Modèle:Autres projets

Modèle:Palette Langages de programmation Modèle:Portail