Ragioni per Vala/Genie

Se avete visto l’ultimo articolo sui venti linguaggi di tendenza forse avete notato una triste assenza. Nella top-50 infatti manca completamente l’accoppiata Vala/Genie. Se non l’avete notata allora è il momento che vi presenti questi due giovani virgulti.

Chi o cosa sono Vala e Genie?

Vale e Genie sono due linguaggi di programmazione OpenSource ad alto livello ed orientati agli oggetti portati avanti dalla fondazione di GNOME. La raison d’etre di questi due linguaggi, la loro missione, consiste nel limitare la diffusioni di linguaggi controversi come C# e le librerie Mono nel mondo Linux. Non credo serva ripetere quali sono i problemi di Mono in un ambiente open con Linux.

Oh no! L’ennesimo linguaggio fotocopia!

In realtà Vala e Genie sono qualcosa di più che una copia di C#. Ma partiamo dall’inizio.

La sintassi di Vala è presa quasi interamente da C# ma adattata alla struttura degli oggetti GObject (strutture dati ancestrali della programmazione Gnome). La sintassi di Genie invece ricopia la sintassi del Python.

Quali sono i vantaggi rispetto a usare C# o python?

Potrei elencare una lista di piccoli vantaggi. Tuttavia preferisco dirvene uno enorme: Vala e Genie sono compilati in C. Nessuna macchina virtuale, nessuna interpretazione del linguaggio, bensì tutta la potenza binaria del C. Volendo Vala e Genie vi forniscono anche il file .c e l’header .h in modo tale da poter integrare librerie in Vala all’interno di progetti in C.

Ovviamente il codice è meno prestante di un codice scritto in C nativamente (e scritto per bene) ma è comunque più veloce di una versione interpretata da una macchina virtuale.

Bellissimo! Un esempio?

Vala nasce dal progetto GNOME ed è quindi naturale che integri un supporto praticamente nativo con le librerie Gtk. Le Qt purtroppo non sono ancora supportate. Come esempio creiamo quindi una bella finestra in Gtk (l’esempio è preso da Wikipedia).

using Gtk;
 
int main (string[] args) {
    Gtk.init (ref args);
 
    var window = new Window (WindowType.TOPLEVEL);
    window.title = "First GTK+ Program";
    window.set_default_size (300, 50);
    window.position = WindowPosition.CENTER;
    window.destroy.connect (Gtk.main_quit);
 
    var button = new Button.with_label ("Click me!");
    button.clicked.connect ((source) => {
        source.label = "Thank you";
 
    });
 
    window.add (button);
    window.show_all ();
 
    Gtk.main ();
    return 0;
}

Il programma può essere compilato con:

valac --pkg gtk+-2.0 gtkexample.vala -o gtkexample

Il risultato sarà un file binario perfettamente funzionante.

Mi piace! Ma funziona solo su Linux?

Vala e Genie sono nati per Linux. Esiste tuttavia un porting sperimentale per Windows.

E come mai questi due linguaggi tanto promettenti non sono nella top 50?

La risposta è una: gioventù. Il fatto che sia un linguaggio nato per linux da poco più che un anno sicuramente non aiuta. Tuttavia le premesse sono ottime.

Sono interessato. Da dove comincio per programmare in Vala?

Il vala non è molto diffuso e informazioni specifiche scarseggiano. Potete innanzitutto cominciare dal sito ufficiale.

Io, personalmente, non ho in programma di scrivere nulla su Vala e Genie. Per SlashCode nel prossimo periodo ho intenzione ancora di trattare Lua, l’AI e alcune cose di simulazione fisica. Comunque, se mi capiterà di trovare libri, siti e guide interessanti non mancherò di linkarle.

Buon Vala a tutti. 🙂

4 comments on “Ragioni per Vala/Genie

  1. Mi sono interessato qualche anno fa a Vala: è un linguaggio molto interessante, molto semplice da capire per chi viene da linguaggi come Java, ma anche C o C++.
    Il vero problema è la mancanza di IDE integrati che facilitano la vita ai programmatori. L’ ho scritto anche altrove: la comodità con cui Google di attira alla programmazione per Android è imbattibile; servirebbe qualcosa del genere anche per Vala perché il progetto è davvero importante e può essere una grande promozione per il mondo Linux (più programmatori = più programmi = più utenti).
    In più la forza del linguaggio compilato rispetto ad uno interpretato: spero, ad esempio, che si provi a fare l’USC in Vala per migliorarne le prestazioni.

    • Concordo. Un bel IDE scritto in Vala attirerebbe più utenti e, soprattutto, offrirebbe un alternativa a quei mattoni pesantissimi di Eclipse e NetBeans che ora come ora sono gli unici IDE competitivi OpenSource per Linux.

  2. Pingback: Frattanto nella blogosfera #14 « Ok, panico

  3. Pingback: Frattanto nella blogosfera #23 « Ok, panico