Programma eseguibile e programma sorgente
Il computer capisce solo ciò che è scritto nella sua lingua e cioè nel cosiddetto linguaggio Macchina. Il linguaggio capito dalla macchina è il binario (cioè fatto da zeri e da uno). Questo perchè tutto all’interno del computer è assimilabile a fili elettrici (microfili) e celle (di tensione). Come sappiamo, da un filo può passare corrente oppure no, in una cella invece può esserci un livello di tensione alto oppure basso. Questa descrizione forse un pò troppo semplicistica fa capire che ci sono solo due possibilità per ogni microcomponente (se così si può chiamare). Queste due possibilità vengono appunto codificate con zero e uno.
Va da se che, chi vuole interagire col computer, può farlo solo dandogli in pasto una sequenza di cifre binarie. Ogni cifra cioè, può valere zero oppure uno. Non esistono per la macchina le nostre cifre decimali 0,1,2,3,4,5,6,7,8,9).
Ogni sequenza di cifre binarie può rappresentare:
- un dato
- un’istruzione
Una sequenza di istruzioni, viene chiamata programma.
I programmi scritti in linguaggio macchina quindi (detti anche eseguibili), non sono altro che una sequenza di istruzioni scritte in binario.
I programmi che tutti conosciamo ed usiamo (la calcolatrice, un gioco, il Browser ecc.) sono quindi eseguibili dal processore.
Il processore di un computer (o in generale di un dispositivo come tablet, smartphone ecc.) detto anche C.P.U. (Central Processor Unit: unità centrale di processo) non fa altro che prendere le istruzioni dei programmi dalla memoria RAM (in cui sono stati precedentemente caricati) decodificarli ed eseguirli uno alla volta in sequenza.
Il processore, che è un Hardware, e cioè un robot che esegue delle istruzioni senza capirle, fa delle azioni predefinite in corrispondenza di ogni codice ricevuto.
Come si crea un programma
Ma come si fa a creare un programma eseguibile? Bisogna appunto scrivere una sequenza di istruzioni in binario.
Per fare questo, agli inizi della storia dell’informatica i programmi venivano scritti usando delle schede perforate; in ogni scheda venivano fatti dei fori ognuno dei quali rappresentava lo zero, mentre la mancanza di foro rappresentava un uno. Si trattava quindi di scrivere delle istruzioni nell’unico modo che capisce il computer. Da notare che ho scritto capisce e non capiva. Cioè ancora oggi funziona così.
Programma sorgente
Per fortuna però con l’andare del tempo sono nati i cosiddetti linguaggi di alto livello (i più conosciuti sono C, C++, Java, Python, Ruby ecc.) che permettono di scrivere i programmi in un linguaggio più vicino al linguaggio umano.
Questi programmi vengono chiamati programmi sorgente o codice sorgente. Ciò nonostante la macchina non capisce, come detto, il codice sorgente, comprende solo il codice macchina. Ecco perchè è necessario tradurre i programmi scritti in codice sorgente (di alto livello) in codice Macchina (basso livello).
Traduttori
Per trasformare il codice sorgente in codice macchina, esistono i cosiddetti programmi traduttori il cui compito è appunto trasformare il programma sorgente in binario (eseguibile dalla CPU).
Esistono due tipi di traduttori:
- i compilatori
- gli inerpreti
Open source
Quindi dal codice sorgente si può ricavare il codice eseguibile; non vale il viceversa. In effetti all’utente finale non interessa il codice sorgente ma soltanto l’eseguibile, ecco perchè molte case di creazione di software vendono i programmi corredati solo dal codice eseguibile. Ciò nonostante molti creatori di programmi rilasciano il codice sorgente dei propri programmi che diventano appunto: Open Source ma non sempre Free Software.