Viene detto « Linguaggio informatico » un linguaggio destinato a descrivere l'insieme delle azioni consecutive che un computer deve eseguire. Un linguaggio informatico è anche un modo pratico per noi (umani) di dare delle istruzioni a un computer.
Al contrario, il termine « linguaggio naturale » rappresenta le possibilità di espressione condivise da un gruppo di individui (ad esempio l'inglese o l'italiano)
I linguaggi che servono ai computer per comunicare fra loro non hanno niente a che vedere con gli altri linguaggi informatici, infatti in questo caso si parla di protocolli di comunicazione, due nozioni totalmente differenti. Un linguaggio informatico è rigoroso :
Ad OGNI istruzione corrisponde UN'azione del processore.
Il linguaggio usato dal processore è detto linguaggio macchina. Si tratta di dati come quelli che arrivano al processore, costituiti da una serie di 0 e di 1 (dati binari).
Il linguaggio macchina non è quindi comprensibile all'uomo, ed è per questo che dei linguaggi intermedi, comprensibili all'uomo, sono stati messi a punto. Il codice scritto in questo tipo di linguaggio è trasformato in linguaggio macchina per essere utilizzabile dal processore.
L'assemblatore è il primo linguaggio informatico che è stato utilizzato. Questo è molto simile al linguaggio macchina ma resta comprensibile agli sviluppatori. Tuttavia, un linguaggio simile assomiglia talmente al linguaggio macchina che dipende strettamente dal tipo di processore usato (ciascun tipo d processore può avere il proprio linguaggio macchina). Così, un programma sviluppato per una macchina non potrà essere portato su un altro tipo di macchina. Il termine « portabilità » designa l'attitudine di un programma informatico ad essere utilizzato su macchine di tipo diverso. Per usare un programma informatico scritto in assemblatore su un altro tipo di macchina, sarà talvolta necessario riscrivere completamente il programma!
Un linguaggio informatico ha quindi più vantaggi :
Distinguiamo solitamente due grandi famiglie di linguaggi di programmazione, secondo il modo in cui le istruzioni vengono trattate ;
Un linguaggio imperativo organizza il programma come una serie di istruzioni, raggruppate in blocchi e comprendenti dei salti condizionali che permettono di ritornare ad un blocco di istruzioni se la condizione è realizzata. Si tratta storicamente dei primi linguaggi, anche se molti linguaggi moderni usano ancora questo principio di funzionamento.
I linguaggi imperativi strutturati soffrono tuttavia di una mancanza di flessibilità dato il carattere sequenziale delle istruzioni.
Un Linguaggio funzionale (detto talvolta linguaggio procedurale) è un linguaggio nel quale il programma è costruito per funzioni, rinviando un nuovo stato in uscita e prendendo in entrata l'uscita di altre funzioni. Se la funzione si chiama da sola, allora si parla di periodicità.
Un linguaggio informatico è per definizione diverso dal linguaggio macchina. Bisogna quindi tradurlo per renderlo leggibile dal punto di vista del processore. Un programma scritto in un linguaggio interpretato ha bisogno di un programma ausiliario (l'interprete) per tradurre man mano le istruzioni de programma.
Un programma scritto in un linguaggio detto « compilato » sarà tradotto una volta per tutte da un programma specifico, detto compilatore, per creare un nuovo file che sarà autonomo, cioè che non avrà bisogno di un altro programma per essere eseguito ; si dice allora che il file è eseguibile.
Un programma scritto in un linguaggio compilato ha come vantaggio di non aver più bisogno, una volta compilato, del programma specifico per essere eseguito. Inoltre, essendo la traduzione fatta una volta per tutte, sarà di più rapida esecuzione.
Tuttavia esso è meno flessibile rispetto ad un programma scritto con un linguaggio interpretato dato che ad ogni modifica del file sorgente (file intelleggibile dall'uomo: quelle che deve essere compilato) bisognerà ricompilare il programma affinché le modifiche diventino effettive.
D'altra parte, un programma compilato ha come vantaggio di garantire la sicurezza del codice sorgente. In effetti, un linguaggio interpretato, essendo direttamente leggibile, permette a chiunque di conoscere i segreti di fabbricazione di un programma e quindi di copiare il codice o anche di modificarlo. Vi è dunque il rischio del non-rispetto dei diritti di autore. Così, alcune applicazioni sicurizzate necessitano della confidenzialità del codice per evitare il pirataggio (transazioni bancarie, pagamento in linea, comunicazioni sicurizzate,...)
Alcuni linguaggi appartengono in qualche modo alle due categorie (LISP, Java, Python,…) dato che il programma scritto con questi linguaggi può in alcune condizioni subire una pase di compilazione intermedia verso un file scritto in un linguaggio che non è leggibile (quindi diversi dal file sorgente) e non eseguibili (necessità di un interprete). Gli applets Java, piccoli programmi inseriti a volte nelle pagine web, sono dei file che sono compilati ma che si possono eseguire solo partendo da un navigatore internet (sono dei file con estensione est .class).
Qui di seguito una lista non esaustiva di linguaggi informatici esistenti :
| Linguaggio | Dominio di applicazione principale | Compilato/interpretato |
|---|---|---|
| ADA | Il tempo reale | Linguaggio compilato |
| BASIC | Programmazione di base a scopo educativo | Linguaggio interpretato |
| C | Programmazione di sistema | Linguaggio compilato |
| C++ | Programmazione di sistema oggetto | Linguaggio compilato |
| Cobol | Gestione | Linguaggio compilato |
| Fortran | Calcolo | Linguaggio compilato |
| Java | Programmazione orientata internet | Linguaggio intermedio |
| MATLAB | Calcolo matematico | Linguaggio interpretato |
| Mathematica | Calcolo matematico | Linguaggio interpretato |
| LISP | Intelligenza artificiale | Linguaggio intermedio |
| Pascal | Insegnamento | Linguaggio compilato |
| PHP | Sviluppo di siti web dinamici | linguaggi interpretati |
| Prolog | Intelligenza artificiale | Linguaggio interpretato |
| Perl | Trattamento di stringhe di caratteri | Linguaggio interpretato |