Vala (linguaggio di programmazione)

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.

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 

La sintassi assomiglia a quella di Java e C#.

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]

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     } 

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

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

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