Pro e contro del linguaggio C
Il linguaggio di programmazione C ha punti di forza e di debolezza.
I vantaggi del linguaggio C
I punti di forza del linguaggio C sono i seguenti:
- Elevata efficienza. Il linguaggio C è eseguibile in un ambiente operativo senza eccessivo supporto. Il runtime C occupa poca memoria rispetto ad altri linguaggi di programmazione.
Esempio. Per eseguire un programma scritto in Java è necessario installare sulla macchina l'ambiente JRE ( Java Runtime Environmente ) che richiede maggiore spazio di memoria e un maggiore impegno del processore rispetto ai programmi eseguibili realizzati con il linguaggio C.
Gli svantaggi del linguaggio C
I punti di debolezza del linguaggio C sono i seguenti:
- Portabilità limitata. I programmi realizzati in C hanno una scarsa portabilità. Un programma in C viene compilato per essere eseguibile su un determinato processore, un aspetto che consente di ottenere un elevato livello di performance in esecuzione. Tuttavia, il programma compilato non è eseguibile su processori e hardware differenti. La portabilità del linguaggio C è limitata.
- Gestione diretta della memoria. Il linguaggio C permette la gestione diretta della memoria. In un programma scritto in C deve essere allocata la memoria necessaria per registrare i dati e le variabili. A differenza della gestione dinamica della memoria, nel caso dei programmi scritti in C il programmatore deve definire manualmente l'allocazione e la deallocazione ( rilascio ) dello spazio di memoria necessario. La gestione diretta della memoria C rende più complessa la scrittura del codice sorgente. Eventuali errori di calcolo possono causare l'esaurimento dello spazio di memoria disponibile ( memory leak ) e il crash del programma durante l'esecuzione.
Nota. La gestione diretta della memoria ha anche dei vantaggi. Evita il problema dell'accesso multiplo alla stessa porzione di memoria da parte di più programmi e gli errori dovuti alla sovrapposizione. Inoltre, il sistema raggiunge livelli di performance superiori in termini di efficienza computazionale e tempo di esecuzione degli algoritmi quando la memoria non è gestita in modo dinamico.