Il testing non può mai rivelare l'assenza di bug.

— Edsger Wybe Dijkstra

Corso su Mono: Hello World

http://www.stenoweb.it/files/blog/mono.png Ogni corso di programmazione che si rispetti inizia con il classico “Hello World”. Anche noi, allora, ci accingiamo a non turbare questa tradizione tramandata da programmatore in programmatore.

Come anticipato nella lezione introduttiva del corso, diamo per scontato che Mono sia installato sul sistema, non verrà utilizzato un IDE (Integrated Development Environment) per i primi esempi in modo da non perdere dettagli che possono essere essenziali per comprendere appieno la filosofia del sistema. Prima di iniziare verifichiamo che l’ambiente sia correttamente installato.

devlab:~# mono --version
Mono JIT compiler version 1.2.2.1, (C) 2002-2006 Novell, Inc and Contributors. www.mono-project.com
TLS: normal
GC: Included Boehm (with typed GC)
SIGSEGV: normal
Disabled: none

Il comando mono rappresenta il runtime dell’ambiente, con il parametro –version ci vengono fornite le classiche indicazioni relative alla versione e altre relative alle componenti del sistema. In particolare TLS indica il sistema incaricato della gestione dello storage dei thread (Thread Local Storage), GC fornisce indicazioni sul tipo di Garbage Collector usato e SIGSEGV indica il metodo di gestione dell’omonimo segnale che si scatena nei sistemi Unix a fronte di problemi di accesso a locazioni di memoria non valide.

Delle informazioni fornite le due più interessanti sono la versione, nel nostro caso 1.2.2.1, e il tipo di Garbage Collector utilizzato. Il Boehm è un sistema relativamente semplice e dalle performance non eccezionali ma il fatto che sia modulare permette a Mono di essere aperto verso forme più efficienti.

Verificata la presenza del runtime di Mono occorre verificare che sia presente il compilatore C#, senza questo infatti non saremmo in grado di compilare il programmi da noi realizzati.

mcs --version
Mono C# compiler version 1.2.2.1

Come nel caso del runtime, il parametro –version fornisce indicazioni relative alla versione del compilatore presente sulla Linux Box che stiamo utilizzando. Compilatore e runtime non sono gli unici due elementi di Mono necessari per avere un sistema funzionante ma diamo per scontato che verificata la presenza di questi, le altre dipendenze siano di conseguenza soddisfatte.

Siamo pronti quindi per scrivere, compilare ed eseguire il nostro primo micro programma. Utilizzando l’editor preferito creeremo un file chiamato hello.cs contenente il seguente codice:
using Systemnamespace TuxJournal
{ class App
{
public static void Main()
{
System.Console.WriteLine("Hello World!");
}
}
}


Salvato il file di cui sopra dalla riga di comando scriveremo:
mcs hello.cs

Se non sono stati commessi errori di digitazione non verrà fornito alcun output e nella stessa directory dove era presente il file hello.cs troveremo un file hello.exe (l’estensione è quella tipica dei progammi di Windows). Il file con estensione exe è il risultato dei nostri sforzi. Eseguendo a questo punto:
mono hello.exe
Hello World!

otterremo il risultato atteso.

Nella prossima lezione analizzeremo riga per riga il nostro primo programma iniziando a comprendere “l’anatomia” di un’applicazione Mono.

It's an awesome paragraph in favor of all the online people; they will take benefit from it I am sure.