Vala (linguaggio di programmazione)
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 |
Modifica dati su Wikidata · Manuale |
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
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
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
La sintassi assomiglia a quella di Java e C#.
Commenti
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
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
Hello world
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
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
Ci sono diversi IDE con integrato il supporto per la programmazione in Vala:
- Geany
- Val(a)IDE
- MonoDevelop
- Vala Toys (plugin per gedit)
- Valencia (plugin per gedit)
- Anjuta
- NetBeans
- TextMate
- RedCar
- Valama
- GNOME Builder
Note
- ^ Vala - Compiler Using the GObject Type System, su wiki.gnome.org, 18 Maggio 2020.
- ^ Genie
- ^ Vala: high-level programming with less fat - Ars Technica. Retrieved Dec13, 2011 1:40PM EST
- ^ Valadoc Archiviato il 16 aprile 2009 in Internet Archive.
Voci correlate
- C (linguaggio)
- Garbage collection
- Cronologia dei linguaggi di programmazione
- Programmazione orientata agli oggetti
- Categoria:Software in Vala
Altri progetti
Altri progetti
- Wikimedia Commons
Wikimedia Commons contiene immagini o altri file su Vala
Collegamenti esterni
- (EN) Sito ufficiale, su live.gnome.org.
- (EN) Vala per Windows, su sourceforge.net.
- (EN) LibGee, a collection library for vala.
- (EN) Benchmark of Vala versus C# and C, su code.google.com.
- (EN) Val(a)IDE, an IDE for Vala, su valaide.org.
- (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 Archiviato il 26 luglio 2011 in Internet Archive. 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, su live.gnome.org.
V · D · M | |
---|---|
ABAP · Ada · ALGOL · APL · Assembly · Awk · BASIC · C · C++ · C# · COBOL · Delphi · Eiffel · Fortran · F# · Haskell · IDL · Java · JavaScript · J# · Lisp · LOGO · Lua · ML · Objective-C · OCaml · Pascal · Perl · PHP · PL/I · PLaSM · Prolog · Python · Ruby · Rust · SAS · Scheme · sh · Simula · Smalltalk · SQL · Swift · Visual Basic |
V · D · M | |||||||
---|---|---|---|---|---|---|---|
Comunità | Progetto GNOME · GNOME Foundation · GUADEC Persone: Miguel de Icaza · Federico Mena · Havoc Pennington | ![]() | |||||
Componenti |
| ||||||
Applicazioni |
| ||||||
Tecnologie | ATK · Bonobo · Cairo · Clutter · D-Bus · GConf · GLib · Keyring · GNOME VFS · GObject · GStreamer · GTK · java-gnome · Mono · Pango · Vala | ||||||
Pagine correlate | Common Desktop Environment · KDE · Xfce · Freedesktop.org |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Computer_n_screen.svg/24px-Computer_n_screen.svg.png)