Denomínase **ALGOL** (ou **Algol**) a un linguaxe de programación. A voz é un acrónimo das palabras inglesas ***Algo**rithmic **L**anguage* (linguaxe algorítmico).

Foi moi popular nas universidades durante os anos 60, pero non chegou a calar como linguaxe de utilización comercial.

Con todo, Algol influíu profundamente en varias linguaxes posteriores que si alcanzaron gran difusión, como Pascal, C e Ada.

Cara a 1965 dúas correntes distinguíronse sobre o tema dun sucesor para Algol. Como resultado se definiron as linguaxes Algol W que é unha linguaxe *minimalista*, rapidamente implementado e distribuído e, por outra banda, Algol 68 que para a época está na fronteira entre unha linguaxe para programar nel e unha linguaxe para investigar sobre el.

Exemplo de programa en ALGOL 60
-------------------------------

**procedure** *Absmax*(*a*) *Dimensións*:(*n*, *m*) *Resultado*:(*e*) *Subíndices*:(*i*, *k*);
**value** *n*, *m*; **array** *a*; **integer** *n*, *m*, *i*, *k*; **real** *e*;
**comment** Da matriz a tómase o elemento co valor absoluto maior e colócase en e.
Os subíndices do elemento colócanse en i e k;
**begin** **integer** *p*, *q*;
*e*:= 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*]) > *e* **then**
**begin** *e*:= *abs*(*a*[*p*, *q*]);
*i*:= *p*; *k*:= *q*
**end**
**end** *Absmax*

Algol W
-------

Linguaxe deseñada por Niklaus Wirth e Tony Hoare a partir dos traballos do grupo ALGOL da IFIP. Trátase dunha linguaxe concisa, simple de implementar, que evita todos os defectos coñecidos da linguaxe Algol e inclúe as súas propias características adicionais. Con todo, o grupo Algol non o adoptou como sucesor de Algol preferindo no seu lugar ao que terminou sendo Algol 68. Algol W foi utilizado por gran cantidade de usuarios e sementou o camiño para o nacemento da linguaxe Pascal.

Entre as características da linguaxe destácanse: Aritmética de dobre precisión, números complexos, Strings e estruturas de datos dinámicas, avaliación por valor, pasaxe de parámetros por valor, valor resultado ou resultado.

Algol 68
--------

A definición da linguaxe foi presentada na reunion do comité ALGOL da IFIP en 1965. Logo de varios anos de revisión do deseño chegouse a unha versión definitiva en 1968. Ao principal autor é Adriaan van Wijngaarden.

Os obxectivos principais de ALGOL 68 son o permitir comunicar algoritmos, o permitir unha eficiente execución dos mesmos en diferentes arquitecturas e o de servir como ferramenta para o ensino.

Unha característica interesante de ALGOL 68 é que a súa semántica foi definida formalmente antes de ser implementado en base ao formalismo chamado gramáticas de dous niveis.

### Exemplo de programa en ALGOL 68

```
proc absmax=(ref[]real a)real:
begin  
  int i, k; real e:=0;
  comment Da matriz a tómase o elemento co valor absoluto maior e colócase en e. x
          Os subíndices do elemento colócanse en i e k; comment
  i:=k:= 1⌊a;    
  for p from  1⌊a <>ou by 1 to 1⌈a   <>ou do
    for q from 2⌊a <>ou by 1 to 2⌈a <>ou do
      if abs a[p, q] > e then          
         e:= abs a[p, q];
         i:= p; k:= q
      fi
    od
  od;
  e
end
```

|  |  |  |
| --- | --- | --- |
| Algol68 Edición de libros

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

```
INT sum sq:=0;
FOR i
WHILE
  sum sq<=1000
DO
  sum sq+:=i**2
OD
```
 | Code polo 6-bits/byte compiler
.INT SUM SQ:=0;
.FOR I
.WHILE

```
  SUM SQ.LLE 1000
```

.DO

```
  SUM SQ.PLUSAB I.UP 2
```

.OD |

Véxase tamén
------------

### Biografía

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

### Ligazóns externas

* Revised Report on the Algorithmic Language Algol 60
* **Algol 68** Genie - a GNU GPL Algol 68 interpreter[*Ligazón morta*]
* Orthogonal design and description of a formal language[*Ligazón morta*] Adriaan Van Wijngarden
* Historic Documents in Computer Science[*Ligazón morta*] Karl Kleine

| * v
* c
* e
Linguaxes de programación |
| --- |
| Baixo nivel | 

|  |  |
| --- | --- |
| Primeira xeración | Código máquina |
| Segunda xeración | Assembly |

 |
| Alto nivel | 

|  |  |
| --- | --- |
| Terceira xeración | 
* A+
* ABC
* Algol
* B
* BASIC
* C
* C++
* C#
* COBOL
* CPL
* D
* E
* Fortran
* Go
* Java
* JavaScript
* Lisp
* Objective-C
* PL/1
* Pascal
* Smalltalk
* Visual Basic .NET

 |
| Cuarta xeración | 
* Clarion
* Clipper
* Clojure
* Common Lisp
* Erlang
* GNU Octave
* Haskell
* Lisp
* Lua
* Julia
* Perl
* PHP
* Prolog
* Python
* R
* Ruby
* Rust
* S
* Scilab
* Stata
* SQL

 |
| Quinta xeración | 
* Mercury
* OPS5
* Prolog

 |

 |
| 
* Ambiente de desenvolvemento
* Metaprogramación
* Programación a nivel funcional
* Programación estruturada
* Programación non estruturada
* Programación imperativa
* Programación modular
* Programación multidimensional
* Orientación a obxectos

 |

|  |  |
| --- | --- |
| Control de autoridades | 
* Wd: Q1209759
* EBID: ID
* GND: 4141870-0
* MAG: 121935767

 |