Vala (linguaggio di programmazione)
| Vala | |
|---|---|
| Autore | Jürg Billeter, Raffaele Sandrini |
| Data di origine | 2006 |
| Ultima versione | 0.20.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, interferenza 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].
Indice |
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 (X)HTML, 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 (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]
Ci sono diversi IDE con integrato il supporto per la programmazione in Vala:
- Geany
- Val(a)IDE
- MonoDevelop
- Vala Toys for gedit
- Valencia
- Anjuta
- NetBeans
- TextMate
- RedCar
Note [modifica]
- ^ Vala Releases. 8 April 2013
- ^ Vala: high-level programming with less fat - Ars Technica. Retrieved Dec13, 2011 1:40PM EST
- ^ Genie
- ^ Valadoc
Voci correlate [modifica]
- C (linguaggio)
- Programmazione a oggetti
- Garbage collection
- Elenco cronologico dei linguaggi di programmazione
Collegamenti esterni [modifica]
- (EN) Sito ufficiale
- (EN) LibGee, a collection library for vala.
- (EN) Benchmark of Vala versus C# and C
- (EN) Val(a)IDE, an IDE for Vala
- (EN) Vala Toys for Gedit, a plugin for Gedit that adds support of autocompletion and more, to program with Vala.
- (EN) Video of Jürg Billeter talking about Vala at the * Gran Canaria Desktop Summit in the summer of 2009.
- (EN) Genie is a Vala dialect with a python-like syntax
- (EN) Guida ufficiale