In questo articolo tratteremo il Compilatore C,quindi tutto ciò che bisogna sapere,ma prima di proseguire mi sembrava doveroso fare un breve recap. Negli articoli precedenti abbiamo visto che nell’architettura più comune di un computer, quella che abbiamo visto essere l’architettura dei Von Neumann , due dei componenti fondamentali sono il microprocessore e la memoria. Un software proprio detto ai minimi termini è composto da una serie di istruzioni che sono eseguite dal microprocessore che operano su dei dati che sono mantenuti in memoria e che poi temporaneamente sono mantenute, spostate, gestite anche all’interno dei registri del microprocessore. Le parole chiave che dobbiamo imparare a ricordare sono istruzioni e dati. (Istruzioni che operano su dei dati).
Ti consiglio di leggere fino alla fine questo articolo e se lo troverai interessante, mi farebbe piacere avere il tuo supporto per il nostro lavoro e impegno , votando semplicemente con (cinque stelle).
[ratings]Senza girarci troppo intorno direi di partire. Non mi resta che augurarti una buona lettura!
Variabili e funzioni
Ora in un linguaggio di programmazione come ad esempio il C, i dati che vengono mantenuti in memoria sono sempre dati di un certo tipo, ad esempio ci sono dei numeri interi oppure i caratteri dell’alfabeto oppure anche delle strutture di dati più complesse e tutti questi dati vengono normalmente gestiti attraverso quelle che vengono chiamate variabili.
Le istruzioni che operano su questi dati invece vengono organizzate in blocchi di codice che vengono chiamate funzioni. Quindi le variabili con i loro relativi tipo di dato o datatypes e le funzioni, sono i due elementi fondanti di un programma in C. Per scrivere un programma in C noi dobbiamo dichiarare una serie di variabili e una serie di funzioni all’interno di uno o più file di testo che vengono detti generalmente file sorgenti.
File sorgente
Un file sorgente del linguaggio C è un normale file di testo che contiene la dichiarazione di una serie di variabili e la dichiarazione di una serie di funzioni.
A i sorgenti in C possiamo dare un nome a nostra scelta ma hanno sempre l’estensione .c . Ecco un esempio: “ilmioprogramma.c“. Per essere più precisi oltre alla definizione delle variabili e delle funzioni in un sorgente C possono essere presenti anche delle particolari direttive che ovviamente poi noi impareremo ad usare più avanti nel corso;in quanto sono fondamentali perchè svolgono compiti specifici all’interno del programma.
Ora senza entrare in dettaglio su questi argomenti,andiamo a vedere che cosa succede quando noi andiamo a compilare un sorgente in C In modo tale da renderlo poi un programma che sia eseguibile sul sistema operativo del nostro computer.
Header File – Un file sorgente particolare
Ti anticipo anche se poi ne parleremo più avanti nel corso che in C creiamo spess anche dei file sorgenti che contengono solamente la definizione di alcuni oggetti cioè di variabili e di funzioni e questi file particolari vengono detti Header file per questo motivo assumono invece l’estensione h e non l’estensione C.
Molti Header file tra l’altro sono già forniti assieme al compilatore e sono parte integrante della libreria standard che viene fornita assieme al linguaggio C. E’ importante che tu sappia subito che questi Header file, vengono inclusi nei nostri programmi proprio attraverso alcune direttive specifiche del preprocessore. Di questo ne parleremo a suo tempo, adesso prima di tutto proseguiamo nel nostro discorso dicendo che per compilare un programma serve ovviamente un compilatore.
Il compilatore C

Un compilatore è un programma che ha il compito di analizzare un file sorgente che contiene i nostri dati e le nostre funzioni. Questi sono scritti in un determinato linguaggio di programmazione; (in questo caso ovviamente nel linguaggio C) pertanto devono essere tradotte in una forma che sia successivamente eseguibile da una particolare versione di un computer.
Questo processo di compilazione in C è articolato in particolare in una serie di fasi che adesso noi andiamo subito a vedere.
Prima fase – Il preprocessore
Il preprocessore esamina il nostro file sorgente per vedere se questo sorgente contiene delle specifiche, delle particolari direttive (se noi le abbiamo inserite ovviamente). Ecco nel caso in cui siano presenti queste direttive, cosa che peraltro vedrai accade praticamente sempre, il processore sostituisce letteralmente queste direttive con delle vere e proprie istruzioni; oppure prende nota delle indicazioni che noi abbiamo fornito attraverso queste direttive per poi usarle in seguito nella fase di compilazione vera e propria.
Seconda fase – Il compilatore
Dopo che il processore ha concluso le proprie attività, il compilatore vero e proprio entra in scena ed esegue la vera e propria fase di compilazione ; cioè esegue una una scansione di tutte le istruzioni che sono contenute nel nostro file sorgente e le traduce in una serie che è molto più estesa di istruzioni; che questa volta sono comprensibili dalla CPU e anche dal sistema operativo per i quali noi stiamo compilando il nostro programma.
Se non vengono rilevati errori di sintassi, il compilatore produce un nuovo file e questo file viene detto file oggetto. Il nome di questo file generalmente è lo stesso del file sorgente, però nei sistemi Unix l’estensione di questo file generalmente è .o mentre su Windows l’estensione del file oggetto spesso è .OBJ .
Terza fase – Il Linker
Ancora però non siamo giunti ad un programma realmente eseguibile, siamo arrivati ad un formato intermedio. L’ultimo componente del compilatore infatti è il linker. La fase di link è quella fase che produce realmente il programma in una forma direttamente eseguibile dalla CPU e dal sistema operativo.
Ecco anche in questo caso il nome del programma eseguibile rimane generalmente lo stesso del file sorgente però anche in questo caso assume una estensione particolare. Nei sistemi unix l’estensione spesso è .out oppure anche il file ma senza nessuna estensione mentre sul sistema Windows il programma eseguibile ha l’estensione .exe ed è un programma eseguibile.
Uno dei motivi principali della presenza del Linker risiede proprio nel fatto che spesso i nostri programmi non sono del tutto autonomi nel momento in cui andiamo a scrivere; ma fanno invece riferimento a delle variabili e a delle funzioni che sono contenute in altri programmi. Queste sono già state scritte da noi o da qualcun altro in precedenza e proprio per questo motivo il linker esegue questa operazione specifica; cioè collega il nostro programma ad altri programmi che sono già fatti scritti e già compilati; risolvendo In pratica tutte le chiamate a funzione o anche l’accesso a delle variabili che non erano presenti nel nostro sorgente.
Alcune direttive del processore, tra l’altro servono proprio a indicare al linker, quali sono i programmi a cui accedere e anche dove si trovano naturalmente. Questi programmi spesso vengono detti in librerie ed esistono in due categorie principali:
- LIBRERIE STANDARD: Sono poi fornite direttamente assieme al compilatore C
- LIBRERIE UTENTE: Sono librerie che noi stessi oppure altri programmatori abbiamo già realizzato e compilato.

Il compilatore C – Ne esistono diversi
Esistono vari compilatori per il linguaggio C e sono disponibili per i vari sistemi operativi di cui uno dei più famosi è il compilatore Open Source GNU.
E’ importante sapere che per scrivere letteralmente un programma in C puoi usare un qualunque editor di testo; e a titolo di esempio ti indico “Visual studio code di Microsoft” oppure anche “Atom”.Entrambi questi editor sono completamente gratuiti.
Noi useremo principalmente uno dei compilatori C che vengono resi disponibili direttamente on-line cioè che ci consentono di scrivere;di compilare e di eseguire un programma direttamente all’interno del nostro browser. Puoi trovare questo compilatore cliccando qui.

Nella prossima lezione proveremo subito a scrivere il più piccolo programma C, usando proprio questo editor on-line. (Come nella foto).
Ti Ricordo Che…
Per qualsiasi dubbio o incertezza non dimenticate che ci potete contattare attraverso i nostri canali ufficiali. Potete farlo sia tramite il nostro gruppo Facebook, che con gli altri canali social a nostra disposizione,come ad esempio il nostro gruppo Telegram. Hai finito di leggere? Torna alla Home Page
Rispondi