linguaggio algoritmico
linguaggio algoritmico qualunque linguaggio nel quale possa essere espresso un algoritmo. Per esprimere un algoritmo in modo interpretabile ed eseguibile da un automa esecutore occorre utilizzare un → linguaggio di programmazione, cioè un linguaggio che permetta di esprimere dati e istruzioni attraverso un numero finito di regole sintattiche e che sia dotato di un programma di traduzione in un codice comprensibile all’automa esecutore. In generale quest’ultimo è un computer in grado di operare soltanto con un proprio linguaggio macchina, in cui ogni azione è composta da dettagliate sequenze di istruzioni espresse come stringhe di cifre binarie. Il computer è tuttavia in grado, in una fase preliminare all’esecuzione, di tradurre un programma scritto in un linguaggio di programmazione in un altro codificato in linguaggio macchina; questa capacità è assicurata da un particolare programma detto compilatore. Affinché tale processo di traduzione possa avvenire, occorre che il compilatore possa controllare scrupolosamente le regole grammaticali e sintattiche del linguaggio di programmazione; queste fissano a priori le caratteristiche e le proprietà delle infinite stringhe che possono essere correttamente scritte. Un linguaggio algoritmico è, quindi, sempre un sistema “chiuso”, nel senso che non può dar luogo, come invece accade nei linguaggi naturali, a nuove espressioni, nuove strutture di frasi: la sua grammatica stabilisce a priori l’insieme, anche infinito, delle sue espressioni sintatticamente corrette.
Poiché i linguaggi di programmazione possono essere considerati di diverso livello a seconda di quanto si avvicinino alle capacità effettive dell’esecutore, il linguaggio macchina è considerato quello di livello più basso poiché di fatto si riduce a esprimere in codice binario sequenze di istruzioni elementari, quali assegnazione, selezione, salti ed elementari operazioni di input-output. A un livello leggermente più alto si situano linguaggi quali l’assembler, ancora oggi utilizzati nelle calcolatrici programmabili, che utilizza non soltanto stringhe binarie, ma anche sintetiche istruzioni alfanumeriche. Via via, nel corso dell’evoluzione e della diffusione dei mezzi informatici, si sono costruiti i linguaggi evoluti, anche detti linguaggi di alto livello, che permettono la trattazione di tipi di dati di diverso genere, e la costruzione di macroistruzioni, ciascuna delle quali contiene una sequenza di più istruzioni elementari, espresse da termini più facilmente comprensibili anche a tutti coloro che non conoscono le logiche esecutive dell’automa. Nella costruzione di un programma viene spesso utilizzato, in una fase preliminare, un linguaggio intermedio, che non è ancora il vero linguaggio di programmazione in cui il programma dovrà poi essere scritto, ma che, pur utilizzando frasi del linguaggio naturale, segue alcune costruzioni sintattiche e un repertorio di parole limitato: parole e sintassi sono simili a quelle che si utilizzeranno poi nel linguaggio di programmazione. A questo linguaggio intermedio, rigoroso come un linguaggio algoritmico, ma che utilizza espressioni comuni, si dà spesso il nome di linguaggio di progetto. Ai linguaggi algoritmici orientati alla risoluzione di problemi tramite gli algoritmi, si contrappongono i linguaggi di programmazione logica, di cui il più diffuso è il → prolog.