Vala (linguaggio di programmazione)

linguaggio di programmazione

Vala è un linguaggio di programmazione di alto livello, orientato ad oggetti. Il linguaggio è utilizzabile nelle distribuzioni GNU/Linux, ma esiste già un port per Windows. Esiste un dialetto del linguaggio in stile Python chiamato Genie.[2]

Vala
linguaggio di programmazione
AutoreJürg Billeter, Raffaele Sandrini
Data di origine2006
Ultima versione0.50.1[1]
UtilizzoGeneral purpose
ParadigmiStrutturato, Orientato agli oggetti, Imperativo
TipizzazioneStatica, Forte
Estensioni comuni.vala .vapi
Influenzato daC, C++, Java, C#, Python
Implementazione di riferimento
Sistema operativoMultipiattaforma, tutti gli OS supportati da GLib
LicenzaLGPL 2.1+
Sito webwiki.gnome.org/Projects/Vala

Caratteristiche modifica

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.[3] Offre inoltre un compilatore self-hosting, con funzionalità di garbage collection.

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.

Compilazione modifica

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

La sintassi assomiglia a quella di Java e C#.

Commenti modifica

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 XHTML, la sintassi Wiki, quella Gnome e quella Java.[4]

Tipi di dato modifica

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

Hello world modifica

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

using Gtk;

int main (string[] args) {
    Gtk.init (ref args);

    var window = new Window ();
    window.title = "First GTK+ Program";
    window.border_width = 10;
    window.window_position = WindowPosition.CENTER;
    window.set_default_size (350, 70);
    window.destroy.connect (Gtk.main_quit);

    var button = new Button.with_label ("Click me!");
    button.clicked.connect (() => {
        button.label = "Thank you";
    });

    window.add (button);
    window.show_all ();

    Gtk.main ();
    return 0;
}

Altri esempi GTK a https://live.gnome.org/Vala/GTKSample.

IDE modifica

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

Note modifica

Voci correlate modifica

Altri progetti modifica

Collegamenti esterni modifica

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica