L’ ALGOrithmic Language (ALGOL) viene presentato per la prima volta nel 1958 a Zurigo con il nome iniziare di IAL, ovvero International Algebric Language. Si tratta di un linguaggio di alto livello specificatamente progettato per sviluppare calcoli scientifici e superare alcune limitazioni del FORTRAN.
Da IAL il linguaggio viene rinominato in ALGOL (58), più semplice e meno “pomposo. L’ALGOL 58 non prevede una tipizzazione dei dati, ma la loro interpretazione è lasciata direttamente alle funzioni che lavorano su essi.
Lo sviluppo e l’evoluzione di ALGOL viene seguito da un comitato di informatici statunitensi ed europei che arrivano a definire tre differenti sintassi: una di riferimento, una per la pubblicazione ed una per l’implementazione. Le differenti sintassi permettono di usare differenti parole chiave e convenzioni per i punti decimali (punti o virgole) a seconda della lingua utilizzata.
Nel 1960 viene rilasciato l’ALGOL 60 che introduce la possibilità di strutturare il codice a blocchi con relativo scope di visibilità per le variabili, oltre alla possibilità di passare le variabili sia per valore che per nome. L’ALGOL 60 si presenta anche con le nuove istruzioni di controllo strutturate (tipo if-then–else), il controllo delle iterazioni e la programmazione ricorsiva, ovvero la possibilità che una procedura richiami se stessa. ALGOL 60 non contempla direttamente delle istruzioni per l’I/O ma si appoggia una libreria esterna che, può essere facilmente re-implementata al fine di adattarlo su diversi sistemi e variarne così il comportamento e l’efficienza.
C. Anthony R. Hoare (uno dei maggiori esperti nella definizione dei linguaggi di programmazione) riguardo all’ALGOL 60 dichiara:
“Qui c’è un linguaggio così avanzato che non è solo un miglioramento rispetto ai predecessori ma anche rispetto ai propri successori.”
frase spesso erroneamente attribuita Edsger Dijkstra, uno dei padri del primo compilatore per ALGOL 60.
Nel 1968 arriva ALGOL 68 che definisce in modo più rigoroso la sintassi e la semantica, usando un formalismo a due livelli della grammatica ideata da Adriaan van Wijngaarden, e proiettandolo il linguaggio in un contesto più ampio di quello originale. Le grammatiche di Van Wijngaarden permettono di generare un insieme infinito di produzioni che consentono di riconoscere un particolare programma in ALGOL 68. Esse sono in grado di esprimere il tipo di richieste che, in molti altri standard di linguaggi di programmazione, vanno sotto il nome di semantica e devono essere espresse in linguaggio naturale non ambiguo per venire, successivamente, implementate nei compilatori come codice “ad hoc” collegato con il parser del linguaggio formale. Fondamentale è l’introduzione di completa libreria di istruzioni di transput (termine usato da ALGOL 68 per indicare l’Input/Output) ufficiale.
E’ interessante sottolineare che John Backus sviluppa il metodo di descrizione dei linguaggi di programmazione detto Backus Normal Form (BNF) specificatamente per l’ALGOL 58, successivamente rivisto ed ampliato da Peter Naur nella Backus-Naur Form per l’ALGOL 60. Sia Backus che Naur facevano parte del comitato che creò l’ALGOL 60, che ispirò molti dei linguaggi di programmazione ad alto livello.