Vala (linguaggio di programmazione)

Da Wikipedia, l'enciclopedia libera.
(Reindirizzamento da Vala (linguaggio))
Vai alla navigazione Vai alla ricerca
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

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]

Caratteristiche[modifica | modifica wikitesto]

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 | 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 XHTML, 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 ();
    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 | modifica wikitesto]

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

Note[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

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