Vari tipi di programmi

I primi tre programmi che ho proposto sono ognuno di un tipo diverso.

Il programma calendario è un programma compilato, cioè è codificato, come si suol dire, in linguaggio macchina in modo da poter essere letto ed eseguito direttamente dalla CPU (Central Processing Unit) del computer attraverso il sistema operativo di cui il computer è dotato.
Questi programmi si scrivono in un linguaggio di programmazione che usa parole del linguaggio umano seguendo una determinata sintassi. Una volta scritti si traducono in linguaggio macchina attraverso programmi compilatori e si producono i così detti eseguibili (file che nel mondo Windows hanno l’estensione .exe).
I più famosi linguaggi che si prestano per produrre questo tipo di programmi sono, in ordine di anzianità, Pascal, C, C++, ADA.
Una volta che abbiamo l’eseguibile non ci interessa avere il programma compilatore e non ci interessa nemmeno sapere con quale linguaggio è stato prodotto l’eseguibile. A meno che vogliamo modificare l’eseguibile stesso: ma allora dobbiamo avere anche il codice sorgente, cioè quello scritto prima di essere codificato in linguaggio macchina.
La stragrande maggioranza del software commerciale è costituita da eseguibili di questo tipo e le aziende che producono questo software ben si guardano dal distribuire il codice sorgente, che mantengono protetto da brevetti. Nel mondo del software libero, invece, è normale distribuire anche il sorgente affinché ognuno possa contribuire al miglioramento del software stesso.
Il vantaggio di questo tipo di software è quello della velocità di esecuzione: vantaggio che, con la potenza dei processori che abbiamo oggi, è sempre meno percepibile in quanto vengono ormai eseguiti velocemente anche programmi di altro tipo.
Lo svantaggio sta nel fatto che un programma destinato ad essere eseguito su un certo sistema operativo deve essere compilato su e per quel sistema operativo. Un programma compilato per Windows non gira su Linux e su OS X e viceversa. Cioè, come si dice, gli eseguibili compilati non hanno portabilità.

Il programma calcoliGeometrici, prodotto utilizzando il linguaggio di programmazione Java, è anch’esso un programma compilato: la codifica, tuttavia, non lo traduce in linguaggio macchina ma in qualche cosa di intermedio, chiamato bytecode.
Questo bytecode non è direttamente proponibile per l’esecuzione dal sistema operativo del computer alla CPU ma viene passato alla CPU da una piattaforma intermedia installata sul sistema operativo, la così detta macchina virtuale Java, JRE (Java Runtime Environment).
Se il computer non ne fosse dotato, basta scrivere la parola java in una barra di ricerca sul web e verremo immediatamente indirizzati al sito da cui possiamo scaricare la versione adatta al nostro sistema operativo.
Molto software commerciale è prodotto con Java con distribuzione dell’eseguibile codificato in bytecode, che non è umanamente leggibile e si presta alla tutela dei segreti di fabbricazione. Nel mondo del software libero viene ovviamente diffuso anche il sorgente scritto nel linguaggio Java, derivato dal linguaggio C.
Il vantaggio di questo tipo di software sta nel fatto che lo stesso eseguibile gira su tutti i sistemi operativi che siano dotati della macchina virtuale Java, cioè è dotato della massima portabilità.
Lo svantaggio sta nella relativa lentezza di esecuzione dovuta al doppio passaggio tra sistema operativo e macchina virtuale e tra macchina virtuale e CPU; lentezza che praticamente non si avverte con i più moderni processori ma che si può avvertire su computer anzianotti.

Il programma MasterMind non è un programma compilato ma è, praticamente, un sorgente scritto nel linguaggio Python: in termine tecnico si chiama uno script.
Gli script, per essere eseguiti, hanno bisogno di essere tradotti in linguaggio macchina attraverso un interprete che li legge, li traduce e li trasmette alla CPU.
Sul computer dove vogliamo utilizzarli deve essere installato questo interprete.
I principali linguaggi di scripting, in ordine di anzianità, sono Perl, Python e Ruby.
Come per Java il vantaggio è la portabilità, a condizione che sul computer sia installato l’interprete.
Lo svantaggio è la relativa lentezza di esecuzione.