ALGOL

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
ALGOL
limbaj de programare
Data de origine 1958
Utilizare limbaj de uz general
Paradigme Procedural , Imperativ , Structurat
Tastare Puternic
Influențată de Fortran
A influențat Simulează , C , CPL ,

Pascal , Ada

ALGOL (prescurtare pentru ALGO rithmic L anguage , sau limbaj algoritmic) este un limbaj de programare dezvoltat în 1958 . Într-un fel a fost o reacție la Fortran ; a introdus concepte fundamentale, cum ar fi stiva de înregistrări de activare și, în unele moduri, poate fi considerat progenitorul unei familii numeroase de limbi de mare succes, de la Pascal la C.

Timp de aproximativ treizeci de ani a fost standardul de facto prin care au fost reprezentați algoritmii . ALGOL folosește blocuri de instrucțiuni delimitate de perechi de început și sfârșit (cum ar fi Pascal); a fost prima limbă care a folosit această sintaxă utilizată pe scară largă și în predare: fragmente de sintaxă similare cu ALGOL sunt încă uneori folosite ca notație pentru algoritmi numiți Pidgin Algol .

Există trei versiuni oficiale ale ALGOL: ALGOL 58 , ALGOL 60 și ALGOL 68 . Dintre acestea, doar ALGOL 60 s-a răspândit ( Niklaus Wirth și-a bazat Algol-W pe ALGOL 60 înainte de a începe să dezvolte Pascal ). Numele oficiale ale versiunilor ALGOL se datorează anului publicării. ALGOL 58 a fost inițial cunoscut sub IAL (acronim pentru I nternational A lgorithmic L anguage.)

Istorie

ALGOL a fost dezvoltat în comun de un comitet IT american și european. Există trei sintaxi diferite: o sintaxă de referință, o sintaxă a publicației și o sintaxă de implementare. Sintaxele diferite au permis utilizarea diferitelor cuvinte cheie și convenții pentru puncte zecimale (puncte sau virgule) în funcție de limba utilizată.

John Backus a dezvoltat metoda de descriere a limbajelor de programare numită Backus normal form (BNF) specific pentru ALGOL 58. A fost revizuită și extinsă de Peter Naur în forma Backus-Naur pentru ALGOL 60. Atât Backus, cât și Naur au făcut parte din comitetul care a creat ALGOL 60. ALGOL 60 a inspirat multe dintre limbile care au urmat; citația canonică în acest sens se datorează CAR Hoare : „ALGOL a fost un mare avans asupra succesorilor săi”. Citatul complet este: „Iată un limbaj atât de avansat încât nu este doar o îmbunătățire față de predecesorii săi, ci și față de succesorii săi”, dar aforismul este mai bine cunoscut. Uneori este atribuit în mod eronat lui Edsger Dijkstra , cunoscut pentru observațiile sale dure, care a ajutat la implementarea primului compilator pentru ALGOL 60.

B5000 și succesorii săi ai Burroughs Corporation au fost mașini stivuite concepute pentru a fi programate folosind variante extinse ale ALGOL 60, cunoscut sub numele de Elliot ALGOL ; de fapt sistemul lor de operare numit MCP (Master Control Program) a fost scris în Elliot ALGOL încă din 1961. Unisys Corporation vinde în continuare computere care coboară din B5000, utilizează MCP și acceptă diverse compilatoare Elliot ALGOL.

ALGOL 60 oficial nu avea instrucțiuni I / O; diferitele implementări trebuiau neapărat să le implementeze, dar modul a variat de la o implementare la alta. ALGOL 68 în schimb a oferit o bibliotecă completă de instrucțiuni transput (termenul folosit de Algol 68 pentru a indica intrare / ieșire).

ALGOL 60 a fost echipat cu două moduri de trecere a parametrilor: cel mai comun se numește pass by value , celălalt numit pass by name nu a fost niciodată adoptat de niciun alt limbaj de programare ulterior. Trecerea după nume avea unele limitări comparativ cu trecerea prin referință , făcându-l o caracteristică nedorită în proiectarea limbajului. De exemplu, cu ALGOL 60 este imposibil să se dezvolte o procedură care schimbă valorile a doi parametri dacă parametrii sunt trecuți printr-o variabilă întreagă și o matrice indexată de aceeași variabilă întreagă.

ALGOL 68 a fost definit folosind un formalism numit gramatică pe două niveluri creată de Adriaan van Wijngaarden și de la care și-a luat numele. Gramaticile lui Van Wijngaarden folosesc o gramatică fără context pentru a genera un set infinit de producții care vă permit să recunoașteți un anumit program în ALGOL 68; ei sunt capabili să exprime tipul de cereri care în multe alte standarde de limbaj de programare intră sub denumirea de semantică și trebuie să fie exprimate într-un limbaj natural neechivoc și apoi implementate în compilatoare ca cod ad hoc conectat cu parserul de limbaj formal.

Exemplu de program (ALGOL 60)

Modul în care ar trebui scris textul aldin depinde de implementarea particulară (de exemplu, „INTEGER” în loc de „întreg”).

 procedura Absmax (a) Dimensiune: (n, m) Rezultat: (y) Indice: (i, k);
    valoarea n, m; matrice a; număr întreg n, m, i, k; y real ;
comentariu Cel mai mare element absolut al matricei a, de dimensiunea n cu m
este transferat la y, iar indicii acestui element la i și k;
începe numărul întreg p, q;
    y: = 0; i: = k: = 1;
    pentru p: = 1 pas 1 până când nu se face
    pentru q: = 1 pas 1 până când o fac
        dacă abs (a [p, q])> y atunci
            începe y: = abs (a [p, q]);
            i: = p; k: = q
            Sfârșit
încheie Absmax

Salut Lume!

Deoarece ALGOL 60 nu are instrucțiuni I / O native, nu există o versiune portabilă a „Hello World”. Următorul cod poate fi rulat pe implementarea ALGOL pentru mainframe - urile din seria A Burroughs și este preluat de pe acest site :

 ÎNCEPE
FIȘIER F (TIP = DISTANȚĂ);
EBCDIC ARRAY E [0:11];
ÎNLOCUIȚI ȘI „BUNĂ LUME!”;
CÂND FACE ADEVĂRATUL
  ÎNCEPE
  SCRIERE (F, *, E);
  SFÂRȘIT;
SFÂRȘIT.

Un exemplu alternativ care utilizează primitivele I / O Elliott ALGOL este prezentat mai jos. De fapt, Elliott ALGOL folosește caractere diferite pentru „start-string” și „end-string”:

 Programul HiFolks;
 începe
    tipăriți „Hello world”;
 sfârșit ;

linkuri externe

Controlul autorității LCCN (EN) sh85003475 · BNE (ES) XX541596 (data)
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT