Vala (linguaggio di programmazione)

Da Wikipedia, l'enciclopedia libera.
Vala
Autore Jürg Billeter, Raffaele Sandrini
Data di origine 2006
Ultima versione 0.23.1[1]
Utilizzo General purpose
Paradigmi Strutturato, Orientato agli oggetti, Imperativo
Tipizzazione Statica, Forte
Estensioni comuni .vala .vapi
Influenzato da C, C++, Java, C#, Python
Implementazione di riferimento
Sistema operativo Multipiattaforma, tutti gli OS supportati da GLib
Licenza LGPL 2.1+

Vala è un linguaggio di programmazione di alto livello, orientato ad oggetti con un compilatore self-hosting, con funzionalità di Garbage collection.

Vala ha una sintassi simile al C#, e include utili funzionalità di linguaggio come le funzioni anonime, i segnali, le proprietà, la gestione della memoria assistita, la gestione delle eccezioni, inferenza dei tipi, e le dichiarazioni foreach.[2]

I vantaggi del linguaggio sono la modernità e la velocità, i sorgenti infatti passano per un generatore di codice C utilizzando il sistema GObject, questo codice può essere rivisto e corretto manualmente, successivamente il codice viene poi compilato tramite GCC in modo tale che gli eseguibili siano supportati in modo nativo.

Il linguaggio è utilizzabile su Linux, ma esiste già un port per Windows. Esiste un dialetto del linguaggio in stile Python chiamato genie[3].

Compilazione[modifica | modifica wikitesto]

I sorgenti vala hanno estensione .vala, e il compilatore è chiamato valac.

#Compila il file e crea un eseguibile con nome impostato
$ valac ./miofile.vala -o=nomefile
 
#Genera solo codice oggetto
$ valac ./miofile.vala -c

Per generare solo i sorgenti C e i rispettivi file header:

 
#Crea i sorgenti C
$ valac ./miofile.vala -C
 
#Crea i sorgenti C e il file header
$ valac ./miofile.vala -C -H miofile.h

Sintassi[modifica | modifica wikitesto]

La sintassi assomiglia a quella di Java e C#.

Commenti[modifica | modifica wikitesto]

Sono accettati i seguenti commenti:

//Questo è un commento in riga e termina alla fine della stessa
 
/*  <--Inizio commento
 *  Questo è un commento su più righe
 *  <-- questi asterischi sono inseriti per convenzione ma non sono necessari
    <--è accettato lo stesso
fine  commento --> */

La sintassi dei commenti di documentazione è

/** <-- inizio commento
 *
 *
 *
fine  commento --> */

All'interno dei commenti di documentazione è possibile usare la sintassi (X)HTML, la sintassi Wiki, quella Gnome e quella Java.[4]

Tipi di dato[modifica | modifica wikitesto]

Vala supporta un set di tipi di dato simile agli altri linguaggi.

   Byte: char, uchar;
   Caratteri: unichar;
   Interi: int, uint;
   Interi lunghi: long, ulong;
   Interi corti: short, ushort;
   Altri interi int8, int16, int32, int64 e rispettivamente uint8, uint16, uint32, uint64;
   Numeri in virgola mobile: float, double;
   Booleani: bool;
   Tipi strutturati: struct;
   Enumeration: enum;

Utilizzo:

    /* Tipi atomici */
    unichar c = 'u';
    float percentile = 0.75f;
    const double MU_BOHR = 927.400915E-26;
    bool the_box_has_crashed = false;
 
    /* dichiarazione di una struct */
    struct Vector {
        public double x;
        public double y;
        public double z;
    }
 
    /* dichiarazione di un enum */
    enum WindowType {
        TOPLEVEL,
        POPUP
    }

Esempi[modifica | modifica wikitesto]

Hello world[modifica | modifica wikitesto]

Con classe GObject:

using GLib;
public class Test.HelloObject : Object {
    public static int main(string[] args) {
        stdout.printf("Hello, World\n");
        return 0;
    }
}

Senza classe GObject:

static int main (string[] args) {
    stdout.printf("Hello, World\n");
    return 0;
}

Gtk[modifica | modifica wikitesto]

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;
}

altri esempi GTK a http://live.gnome.org/Vala/GTKSample

IDE[modifica | modifica wikitesto]

Ci sono diversi IDE con integrato il supporto per la programmazione in Vala:

Note[modifica | modifica wikitesto]

  1. ^ Vala Releases, 28 dicembre 2013.
  2. ^ Vala: high-level programming with less fat - Ars Technica. Retrieved Dec13, 2011 1:40PM EST
  3. ^ Genie
  4. ^ Valadoc

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]