Questo articolo affronterà l'argomento Vala (linguaggio di programmazione), che è diventato molto attuale oggi. Dalle sue origini fino alle sue implicazioni nella società odierna, Vala (linguaggio di programmazione) è stato oggetto di studio e dibattito in diversi ambiti. Nel corso della storia, Vala (linguaggio di programmazione) ha svolto un ruolo fondamentale nello sviluppo dell'umanità, influenzando la cultura, la politica, l'economia e la vita quotidiana delle persone. Attraverso un'analisi dettagliata, verranno esplorate le diverse sfaccettature di Vala (linguaggio di programmazione), la sua importanza nel contesto attuale e il suo impatto nel futuro.
Vala linguaggio di programmazione | |
---|---|
![]() | |
Autore | Jürg Billeter, Raffaele Sandrini |
Data di origine | 2006 |
Ultima versione | 0.50.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+ |
Sito web | wiki.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]
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: