Software e Codice Sorgente

Un software consiste in una serie di istruzioni scritte da un essere umano che permettono all’elaboratore di eseguire determinati compiti. Queste istruzioni normalmente vengono redatte utilizzando un linguaggio di programmazione, caratterizzato da precise regole sintattiche e formali che il programmatore dovrà applicare in fase di sviluppo.
Perché questo linguaggio scritto in un codice intelligibile possa essere eseguito da un elaboratore, è necessario che venga compilato od interpretato da un altro software che converta i comandi del programmatore in linguaggio macchina.
La maggior parte dei software che gira sui nostri computer ha subito un processo di compilazione. Tale operazione, operata mediante un compilatore, produce un codice eseguibile dalla macchina, che ha il vantaggio di essere creato secondo i parametri dell’architettura hardware dell’elaboratore in cui verrà eseguito e pertanto permette di offrire eccellenti prestazioni in termini di velocità e ottimizzazione delle risorse.
Il processo di compilazione di un software si svolge secondo il seguente schema:

Schema del processo di complilazione di un programma

Il codice sorgente scritto dal programmatore viene tradotto dal compilatore in linguaggio macchina, rendendo il programma eseguibile dall’elaboratore. Il processo di compilazione è univoco; è necessario possedere il codice sorgente se si desidera apportare modifiche o correzioni ad un software già compilato.
Un software può essere molto semplice e formato da poche righe di codice, oppure estremamente complesso, come, ad esempio, un sistema operativo.
Riportiamo di seguito il codice sorgente di un banale programma scritto in linguaggio C che, avviato, mostra sullo schermo la scritta “Hello, world”:

#include <stdio.h>
main()
{
printf( "Hello, world" );
}

Il file eseguibile risultato dalla compilazione di questo programma perde la struttura logica e formale esplicitata dal programmatore e si converte in alfabeto binario, composto da una lunghissima serie di 0 e 1, che costituisce la lingua madre dei microprocessori.
Evidentemente il processo di compilazione è irreversibile, rendendo impossibile la decifrazione dei comandi originali scritti dal programmatore; se non si dispone della sorgente di un software pertanto, è possibile solamente utilizzare il programma, ma non studiarne il funzionamento e apportare eventuali modifiche o miglioramenti (esistono tuttavia delle complicate tecniche di reverse engineering, spesso illegali poiché violano brevetti, che permettono di studiare il funzionamento interno di un software – ma non di ottenere il codice sorgente).

___

Questo articolo è tratto dalla mia Tesi di Laurea:

Alberto Betella, “Open Source, Free Software e Podcasting: l’esperienza di Pluriverisadio”, Università degli Studi di Bergamo, A.A. 2005/2006.

Share this article:
  • Digg
  • del.icio.us
  • Technorati
  • DZone