**ALGOL** deitzen zaio (edo **Algol**) Programazio-lengoaia bati. Hitza ingelesezko ***Algo**rithmic **L**anguage* hitzen (lengoaia algoritmikoa) akronimoa da.

Oso popularra izan zen unibertsitateetan 60ko hamarkadan, baina ez zen gauzatu gero erabilera komertzialerako lengoaia gisa.

Hala ere, geroago asko zabaldu ziren zenbait lengoaiatan Algolek eragin sakona izan zuen, adibidez, Pascal, C eta Ada.

1965ean bi korronte bereizi ziren Algol lengoaiaren bilakaeran. Emaitza gisa bi lengoaia berri definitu ziren:  Algol W lengoaia *minimalista*, azkar inplementatua eta zabaldua, eta bestaldetik,  Algol 68, garai hartan programatzeko lengoaien eta lengoaia ikergaien arteko mugan kokatzen zena.

Programa adibide bat Algol 60 lengoaian
---------------------------------------

**procedure** Absmax("a")  *Dimentsioak*:(*n*, *m*)  *Emaitza*:( *y*) *Azpindizeak*:( *i*,  *k*);
**value** n, m; **array** a; **integer** n, m, i, k ; **real** *y*;
**comment** Matrizetik balio absolutu handiagoa duen elementua hartzen da eta y-n sartzen da. Elementuaren azpindizeak i eta k-an jartzen dira;
**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*

Algol W
-------

Niklaus Wirth-ek eta Tony Hoare-k diseinatu eta inplementatutako lengoaia da, IFIP-eko ALGOL taldearen lanetan oinarrituta. Lengoaia laburra da, inplementatzeko erraza, Algol lengoaiaren akats ezagun guztiak saihesten ditu eta haren bere ezaugarri gehigarriak sartzen ditu. Hala ere, Algol taldeak ez zuen hartu Algolen ondorengo gisa eta horetan nahiago izan zuten Algol 68. Erabiltzaile kopuru handiek erabili zuten Algol W eta Pascal lengaiaren jaiotzarako bidea prestatu zuen.

Hizkuntzaren ezaugarrien artean azpimarratzekoak dira: doitasun bikoitzaren aritmetika, zenbaki konplexuak, string-ak eta datu-egitura dinamikoak, balioaren araberako ebaluazioa, baita balioren, emaitzaren edo balio-emaitzaren araberako parametroen transferentzia ere.

Algol 68
--------

Hizkuntzaren definizioa IFIPeko ALGOL komitearen 1965eko bileran aurkeztu zen. Diseinua berraztertzen hainbat urte pasa eta gero, behin betiko bertsio batera iritsi zen 1968an. Adriaan van Wijngaarden da egile nagusia.

ALGOL 68 lengoaiaren helburu nagusiak honakoak dira: algoritmoen arteko komunikazioa baimentzea, algoritmoen exekuzio eraginkorra lortzea arkitektura diferenteetan eta irakaskuntzarako tresna izatea.

ALGOL 68 lengoaiaren ezaugarri interesgarri bat da bere semantika bi mailatako gramatikak formalismoaren arabera formalki definitu zutela inplementatu baino lehen.

### Programa adibidea Algol 68 lengoaian

```
**proc** absmax = ([,]**real** a, **ref** **real** y, **ref** **int** i, k)**real**:
**comment** Matrizetik balio absolutu handiagoa duen elementua hartzen da  eta y-n sartzen da x       
  Elementuaren azpindizeak i eta k-an jartzen dira; **comment**
**begin**
   **real** y := 0; i := ⌊a; k := 2⌊a;
   **for** p **from** ⌊a **to** ⌈a **do**
     **for** q **from** 2⌊a **to** 2⌈a **do**
       **if** **abs** a[p, q] > y **then**
           y := **abs** a[p, q];
           i := p; k := q
       **fi**
     **od**
   **od**;
   y
**end** # absmax #
```

|  |  |  |
| --- | --- | --- |
| Algol68 liburuen edizioa

```
int sum sq:=0;
for i
while
  sum sq≤1000
do
  sum sq+:=i↑2
od
```
 | Kodea 7-bit/ascii konpiladorearentzat

```
INT sum sq:=0;
FOR i
WHILE
  sum sq<=1000
DO
  sum sq+:=i**2
OD 
```
 | Kodea 6-bits/byte konpiladorearentzat

```
.INT SUM SQ:=0;
.FOR I
.WHILE
  SUM SQ.LE 1000
.DO
   SUM SQ.PLUSAB I.UP 2
.OD
```
 |

Kanpo estekak
-------------

* **(Ingelesez)** Grafiko luze bat programazio-lengoaien bilakaerarekin.
* **(Ingelesez)**Revised Report on the Algorithmic Language Algol 60.
* **(Ingelesez)** **Algol 68** Genie - a GNU GPL Algol 68 interpreter.
* **(Ingelesez)**Orthogonal design and description of a formal language Adriaan Van Wijngarden.
* **(Ingelesez)**Historic Documents in Computer Science Karl Kleine.
* Programen egiaztapena eta eratorpena[*Betiko hautsitako esteka*]. Xabier Arregi Iparragirre, Paqui Lucio Carrasco, Arantza Diaz de Illarraza Sanchez. UEU 1993.
* Ada lengoaia eta metodologia. Watt D. Wichmann B. eta Findlay W. UPV-EHU 1993.

Bibliografia
------------

* **(Ingelesez)** *A contribution to the development of ALGOL,* Niklaus Wirth and C. A. R. Hoare, Comm ACM 9(6), 413-432 (1966), ISSN:0001-0782
* **(Ingelesez)** *The Emperor's Old Clothes - the ACM Turing Award lecture by Tony Hoare*, 1980, Comm ACM 24(2), 75-83 (1981)
* **(Ingelesez)** *ALGOL W Implementation*, H. Bauer et al, TR CS98, Stanford U, 1968