next up previous contents index
Next: Cosa è un compilatore Up: Introduzione Previous: Struttura di un calcolatore   Indice   Indice analitico

Cosa è un linguaggio di programmazione

Esistono moltissimi linguaggi di programmazione nel mondo dei computers, ciascuno adatto per determinate macchine o per compiti specifici. In questo testo non si vuole affrontare una trattazione della storia dei linguaggi di programmazione o delle differenze che intercorrono tra essi, in quanto se anche si volesse trattare solo superficialmente tali questioni andremmo ben lontano dagli scopi che ci siamo prefissi. Non possiamo tuttavia fare a meno di fornire qualche cenno storico riguardo il C++ e il C. A proposito di tali linguaggi, sia chiaro sin da ora, onde evitare confusioni future, che essi sono due linguaggi di programmazione distinti: il C++ non è una ``nuova versione'' del C; l'unico legame che li unisce, oltre al loro nome, è che un programma scritto in C ``funziona'' anche con il C++, ma non il contrario. Le ragioni di questa compatibilità risiedono in motivazioni storiche: al momento della nascita del C++, posteriore di molti anni rispetto a quella del C, quest'ultimo linguaggio era uno dei più usati nel mondo della programmazione, per cui gli ideatori del C++ hanno preferito costruire un linguaggio che, seppure differente dal C sotto quasi ogni punto di vista, gli fornisse una certa compatibilità. Grazie a questo stratagemma si ottennero immediatamente due successi: i programmatori C potevano passare gradualmente al C++, senza essere penalizzati dai loro stessi tempi di apprendimento, e le case produttrici del software avevano la possibilità di utilizzare uno strumento nuovo e più potente senza dovere affrontare un costoso colpo di spugna sul materiale precedentemente prodotto.

Abbiamo accennato nel paragrafo precedente che è di fatto impossibile programmare direttamente usando un linguaggio che possa essere compreso dal processore, perché esso sarebbe troppo vicino alla meccanicitá di una macchina da essere facilmente comprensibile per un essere umano. Si capisce allora quale sia l'idea fondamentale di un linguaggio di programmazione: fornire al programmatore un ambiente nel quale egli possa ``parlare'' un linguaggio che abbia due caratteristiche fondamentali: sia intuitivo e semplice da apprendere e, contemporaneamente, sia abbastanza semplice e schematico da potere essere tradotto, sfruttando un programma, in linguaggio macchina. Il C nacque proprio a questo scopo ad inizio anni '70 e venne infatti definito ``un linguaggio macchina evoluto''; nei tempi a venire vennero alla luce molti altri linguaggi di programmazione, che fornivano astrazione sempre maggiore, cioé si avvicinavano sempre di piú al livello dell'intelligenza umana; tuttavia il rovescio della medaglia era pesante, in quanto solitamente i programmi scritti utilizzando tali piú evoluti linguaggi, venivano a perdere molta efficienza in fase di esecuzione rispetto ai loro corrispondenti scritti in C. Un ottima innovazione fu portata dal C++ che, come vedremo, rispetta l'efficienza1.2 del C, seppure consentendo una astrazione di gran lunga superiore rispetto a tale linguaggio. Le radici di tale compromesso essenzialmente si trovano nel fatto che il C++ forza il programmatore a scrivere dei programmi limpidi, sconsigliando implicitamente l'uso di molti trucchi di programmazione tipici del C, che minavamo alle basi l'espandibilit'a e l'aggiornabilitá dei programmi.


next up previous contents index
Next: Cosa è un compilatore Up: Introduzione Previous: Struttura di un calcolatore   Indice   Indice analitico
Claudio Cicconetti
2000-09-06