b'\n_START_ARTICLE_\nALGOL\n_START_SECTION_\nStoria\n_START_PARAGRAPH_\nL\'ALGOL \xc3\xa8 stato sviluppato congiuntamente da un comitato di informatici statunitense ed europeo. Esistono tre differenti sintassi: una sintassi di riferimento, una sintassi per la pubblicazione ed una per l\'implementazione. Le differenti sintassi permisero di usare differenti parole chiave e convenzioni per i punti decimali (punti o virgole) a seconda della lingua utilizzata._NEWLINE_John Backus svilupp\xc3\xb2 il metodo di descrizione dei linguaggi di programmazione detto Backus normal form (BNF) specificatamente per l\'ALGOL 58. \xc3\x88 stato rivisto ed ampliato da Peter Naur nella Backus-Naur form per l\'ALGOL 60. Sia Backus che Naur fecero parte del comitato che cre\xc3\xb2 l\'ALGOL 60. L\'ALGOL 60 ispir\xc3\xb2 molti dei linguaggi che seguirono; la citazione canonica a questo proposito \xc3\xa8 dovuta a C. A. R. Hoare: "ALGOL fu un grande progresso sui suoi successori". La citazione completa \xc3\xa8: "Qui c\'\xc3\xa8 un linguaggio cos\xc3\xac avanzato che non \xc3\xa8 solo un miglioramento rispetto ai predecessori ma anche rispetto ai propri successori" ma l\'aforisma \xc3\xa8 pi\xc3\xb9 conosciuto. A volte viene attribuito erroneamente a Edsger Dijkstra, conosciuto per le acute osservazioni, che collabor\xc3\xb2 all\'implementazione del primo compilatore per ALGOL 60._NEWLINE_Il B5000 della Burroughs Corporation ed i suoi successori erano macchine a stack progettate per essere programmate mediante varianti estese dell\'ALGOL 60, conosciute come Elliot ALGOL; effettivamente il loro sistema operativo chiamato MCP (Master Control Program) era scritto in Elliot ALGOL fin dal 1961. La Unisys Corporation vende ancora computer che discendono dal B5000, utilizzano l\'MCP e supportano vari compilatori di Elliot ALGOL._NEWLINE_ALGOL 60 ufficialmente non possedeva istruzioni di I/O; le varie implementazioni necessariamente dovettero implementarle ma il modo variava da un\'implementazione all\'altra. ALGOL 68 offr\xc3\xac invece una completa libreria di istruzioni di transput (il termine usato da ALGOL 68 per indicare l\'Input/Output)._NEWLINE_L\'ALGOL 60 era dotato di due modalit\xc3\xa0 di passaggio dei parametri: il pi\xc3\xb9 comune \xc3\xa8 detto passaggio per valore, l\'altro chiamato passaggio per nome non \xc3\xa8 mai stato adottato da nessun altro linguaggio di programmazione successivo. Il passaggio per nome aveva alcune limitazioni rispetto al passaggio per riferimento, facendone una caratteristica indesiderata nella progettazione del linguaggio. Per esempio, \xc3\xa8 impossibile con l\'ALGOL 60 sviluppare una procedura che scambi i valori di due parametri se i parametri sono passati mediante una variabile intera ed un array indicizzato mediante la stessa variabile intera._NEWLINE_L\'ALGOL 68 \xc3\xa8 stato definito mediante un formalismo chiamato grammatica a due livelli creato da Adriaan van Wijngaarden e dal quale ha preso il nome. Le grammatiche di Van Wijngaarden utilizzano una grammatica libera dal contesto per generare un insieme infinito di produzioni che permettono di riconoscere un particolare programma in ALGOL 68; 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 ed in seguito implementati nei compilatori come codice ad hoc collegato col parser del linguaggio formale.\n_START_SECTION_\nEsempio di programma (ALGOL 60)\n_START_PARAGRAPH_\nIl modo in cui deve essere scritto il testo in grassetto dipende dalla particolare implementazione (es. \'INTEGER\' in luogo di \'integer\')._NEWLINE_procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);_NEWLINE_    value n, m; array a; integer n, m, i, k; real y;_NEWLINE_comment The absolute greatest element of the matrix a, of size n by m_NEWLINE_is transferred to y, and the subscripts of this element to i and k;_NEWLINE_begin integer p, q;_NEWLINE_    y\xc2\xa0:= 0; i\xc2\xa0:= k\xc2\xa0:= 1;_NEWLINE_    for p:=1 step 1 until n do_NEWLINE_    for q:=1 step 1 until m do_NEWLINE_        if abs(a[p, q]) > y then_NEWLINE_            begin y\xc2\xa0:= abs(a[p, q]);_NEWLINE_            i\xc2\xa0:= p; k\xc2\xa0:= q_NEWLINE_            endend Absmax\n_START_SECTION_\nHello, world!\n_START_PARAGRAPH_\nPoich\xc3\xa9 ALGOL 60 non possiede istruzioni di I/O native, non esiste una versione di "Hello World" portabile. Il codice seguente pu\xc3\xb2 essere eseguito sull\'implementazione di ALGOL per i mainframe Burroughs A-Series ed \xc3\xa8 tratta da questo sito:_NEWLINE_BEGIN_NEWLINE_FILE F (KIND=REMOTE);_NEWLINE_EBCDIC ARRAY E [0:11];_NEWLINE_REPLACE E BY "HELLO WORLD!";_NEWLINE_WHILE TRUE DO_NEWLINE_  BEGIN_NEWLINE_  WRITE (F, *, E);_NEWLINE_  END;_NEWLINE_END._NEWLINE_Un esempio alternativo che utilizza le primitive di I/O dell\'Elliott ALGOL \xc3\xa8 presentato qui di seguito. In realt\xc3\xa0 l\'Elliott ALGOL usa caratteri differenti per \'inizio-stringa\' e \'fine-stringa\':_NEWLINE_ program HiFolks;_NEWLINE_ begin_NEWLINE_    print \xe2\x80\x98Hello world\';_NEWLINE_ end;'