Corso di C con Linux

Prefazione: Il gusto della sfida

 

Un giorno di Novembre squilla il telefono di casa:

"Pronto, sono Lara, Simone che fai oggi?"

"Ciao bella, programmo!"

"E perché ?"

A tale domanda rimasi abbastanza esterrefatto, perché non trovai una risposta immediata. Riflettendoci su ora potrei dire : "Io programmo perché sono curioso di vedere che cosa riesco ad ottenere da quella macchina infernale chiamata computer". E voi perché programmate? A questa domanda magari ognuno di voi avrà mille risposte diverse dalle più banali alle più astruse, ma sono sicuro che se qualcuno di voi ha già programmato, ha provato il gusto della sfida contro il computer.

Se avete provato questo senso di sfida almeno per un minuto, anche se non siete programmatori, allora questo corso fa per voi. Se invece vi interessa solamente conoscere come compilare un programma C per poterlo lanciare contro un server altrui; l'unico posto adatto per voi è : /dev/null. :-)

Se invece avete una curiosità morbosa e tanta voglia di imparare e di sfidare voi stessi, ben venuti a bordo!.

 

Linux è generalmente una sfida per chi vi si avvicina per la prima volta, un oceano di tecniche e risorse utili sia al miglioramento tecnico del suo utente medio, che del programmatore esperto. Usare Linux, e in generale gli Unix Open Source, per programmare è un passo importante da compiere per due motivi:

Avere la possibilità di scrutare i sorgenti è a livello didattico molto importante, per dimostrarvi ciò vediamo un esempio.

Supponiamo sia Massimo, un novellino nella programmazione Linux, ma dannatamente curioso, voglia sapere come funziona per esempio GNOME. Il primo passo che farà in proposito non è quello di chiedere via Usenet a tutti come funziona GNOME, ma avendo i sorgenti sottomano, supponiamo esprima la volontà di guardarli.

Ora, per poter capire i sorgenti di GNOME, un utente deve almeno conoscere il linguaggio C e la libreria GTK. Massimo, avendo tanta volontà di imparare qualcosa di nuovo, inizia di gran lena a studiare il C, per poi passare alla libreria GTK. Bene, per esercizio durante i suoi studi crea un'applicazione in C, che serve alla sua produttività personale, supponiamo sia essa un'agenda elettronica e la rende pubblica secondo i parametri della licenza GPL.

Massimo ha, a questo punto, aumentato le sue conoscenze informatiche ed ha creato qualcosa sicuramente di utile per la comunità Linux. Mentre Massimo sempre più interessato sta continuando ad addentrarsi nel favoloso mondo di GNOME, pronto per nuove sfide, Luca un programmatore esperto in Unix vede la sua agenda e la trova interessante.

Luca contatta Massimo via e-mail, segnalandoli che ha continuato a sviluppare il suo esercizio di programmazione ed ha trovato e corretto alcuni bug presenti nel suo programma. Massimo riceve l'e-mail di Luca e ben contento scopre i suoi errori di programmazione, migliorando cosi il suo modo di programmare e magari aggiungendo caratteristiche ulteriori, che sottopone all'attenzione di Luca.

I due continuano uno scambio fitto di e-mail e correzioni al loro progetto, quando ad un certo punto Micheal, programmatore tedesco vede il loro progetto al sito http://www.freshmeat.net; lo trova interessante e lo scarica.

Micheal guarda i sorgenti, e giusto per le sue proprie esigenze aggiunge ulteriori caratteristiche correggendo altri bug sfuggiti sia a Luca che a Massimo. Segnala il tutto via e-mail agli altri due, e i tre continuano il progetto dell'agenda. Man mano che il loro software si perfeziona, si aggiungono ulteriori programmatori e lavorando in gruppo via Internet, si condividono e correggono gli errori e si amplia il progetto fino a divenire un lavoro finito.

Linux è nato proprio in modo simile; nel lontano 1991 uno studente di Informatica, Linus Torvalds, iniziò un progetto via Internet, che rese poi pubblico e liberamente disponibile e a cui contribuirono e contribuiscono migliaia di programmatori ogni giorno. Il suo progetto era un sistema operativo Unix-like, chiamato Linux.

 

Torna all'indice Generale del corso di Corso di C con Linux di Software Planet