Vediamo quali sono le caratteristiche principali del Linguaggio di Programmazione C.
Sono molte e qui di seguito elenchiamo quelle più importanti cercando di chiarirne il
significato.
- Dimensioni del codice ridotte - Generalmente il codice sorgente di un programma in C ha un peso (in Kb) relativamente piccolo, in questo modo risulta molto agevole trasportare il codice da un PC ad un altro, anche usando un
semplice floppy. - Dimensioni dell'eseguibile ridotte - Anche una volta compilato, un programma in C, risulta molto piccolo e quindi di più facile diffusione; ovviamente un programma in C potrà essere eseguito solamente sul medesimo Sistema Operativo per cui è stato compilato.
- Efficienza dei programmi - Un programma scritto in C, proprio per la
possibilità messa a disposizione dal linguaggio di gestire a fondo la memoria, e
per le sue dimensioni ridotte, risulta particolarmente efficiente. - Può essere compilato su una vasta gamma di computer - Ogni computer
può differire dagli altri per almeno due cose, l'architettura ed il sistema
operativo; ad esempio un computer con processore x86 e Windows ha delle
istruzioni (intese come istruzioni del processore) ed una gestione della memoria
diverse da uno Sparc con Linux, però un programma scritto in C può essere
compilato su ambedue le macchine, data l'alta disponibilità di compilatori per
diverse piattaforme. Certo non è "portabile" come Java, però il fatto di essere sulla scena da
molti anni e la sua enorme diffusione ne fanno, di fatto, uno strumento
altamente portabile. - è un linguaggio di alto livello - Un linguaggio di programmazione
viene definito di alto livello tanto più si avvicina alla terminologia umana,
inversamente si dice che un linguaggio è di basso livello se il suo codice si
avvicina al linguaggio macchina (quello formato da 0 ed 1); tipico esempio di
linguaggio a basso livello è l'Assembler, mentre linguaggi ad
alto livello sono, oltre al C, il C++, il Java e molti altri. La particolarità
dei linguaggi ad alto livello è quella di avere una semplice sintassi in cui si
usano parole della lingua inglese per descrivere comandi corrispondenti a decine
di istruzioni in assembler o centinaia di istruzioni in linguaggio macchina. - Può maneggiare attività di basso livello - Il C è considerato il
linguaggio di più basso livello tra i linguaggi di alto livello. Questo è dovuto
al fatto che ha poche istruzioni, gestisce in maniera efficiente la memoria ed è
possibile inserire direttamente all'interno di un file in C del codice
Assembler. - Implementazione dei puntatori - Il C fa un largo uso di puntatori per
le operazioni riguardanti la memoria, gli array, le strutture e le funzioni. - Loose Typing - In poche parole in C i tipi di dato delle variabili
non devono necessariamente essere dichiarati; contrariamente, nel Pascal, nel
C++ e nel Java i tipi devono essere dichiarati (strong typing); tale differenza
risiede nelle scelte decisionali del progettista del linguaggio, che può volere
più o meno flessibilità all'interno dello stesso (compilando un programma Java,
la maggior parte delle volte si commettono errori di tipo). C'è chi dice che il
metodo loose typing permetta al programmatore di commettere errori di tipo che
potrebbero compromettere l'esecuzione del programma, ma è anche vero che con lo
strong typing siamo costretti a seguire delle regole rigide che, a volte, non
permettono di risolvere "velocemente" un problema.
Nelle lezioni seguenti parleremo della storia del linguaggio C, procedendo poi verso gli strumenti di compilazione disponibili per i vari Sistemi Operativi ed al primo programmino (il famoso Hello World) scritto in C; la parte centrale della guida è tutta incentrata sulla sintassi del linguaggio, in ordine, le variabili, gli operatori, le istruzioni condizionali (come l'IF-ELSE), le istruzioni iterative (FOR e WHILE), gli array, le funzioni, i puntatori, le liste, l'allocazione dinamica della memoria, l'input/output su file e l'utilizzo del pre-processore C; l'ultima parte spiega in dettaglio lo stile per scrivere un programma, l'uso degli header e del Make per la creazione di makefile (sotto Linux), l'utilizzo di funzioni speciali disponibili sotto Linux, le opzioni del compilatore GCC sotto Linux e le funzioni disponibili nelle librerie standard del linguaggio.
Sarà, invece, omessa, volutamente, la trattazione dell'istruzione goto, questo perché è un'istruzione poco utilizzata e può portare ad imparare uno stile di programmazione poco chiaro e facilmente soggetto ad errori; tutte le nozioni date in queste lezioni permettono di risolvere tutti i problemi risolvibili con un goto in modo più elegante e più corretto.
Non mi resta che augurarvi Buon Lavoro!