Vala er eit programmeringsspråk som har som mål å gi ei moderne programmeringsoppleving samtidig som det sikrar kompatibilitet med C-programmeringsspråket, spesielt innan GObject-type systemet. Det vart utforma for å vere enkelt og effektivt, med hovudfokus på utvikling av applikasjonar for GNOME-skrivebordsmiljøet. Med ein syntaks som liknar språk som C# eller Java, støttar Vala funksjonar som objektorientert programmering, typeinferens og lambda-uttrykk, samtidig som det kompilerer til C-kode for native ytelse.
Vala vart oppretta av Jürg Billeter og dukka først opp i 2006 som ein del av GNOME-prosjektet. Utviklinga vart i stor grad motivert av vanskane og kompleksiteten ved å bruke C direkte for GObject-utvikling. Jürg hadde som mål å tilby eit høgnivåspråk som beheldt krafta til C, samtidig som det forenkla syntaksen og auka produktiviteten.
Vala vart inspirert av språk som C# og Java, spesielt i sin syntaks og funksjonar som søppelrydding og typesikkerheit. Det integrerer nært med GNOME-biblioteka og GObject, ein kjernekomponent i GNOME-økosystemet, som gjer det eigna for å bygge applikasjonar innan dette miljøet. Vala tilbyr ei bru mellom høgnivåabstraksjon og lågnivåytelse, noko som gjer det distinkt blant liknande språk.
Per no har Vala modna betydelig og har eit dedikert fellesskap. Det vert aktivt vedlikehalde, med regelmessige oppdateringar og støtte for dei nyaste GNOME-teknologiane. Vala vert i aukande grad brukt i utvikling av skrivebordsapplikasjonar, spesielt dei som er tiltenkt Linux-miljø, og fortset å vinne popularitet på grunn av sin brukervennlegheit og effektivitet.
Vala støttar objektorientert programmering (OOP) gjennom klassar, arv og grensesnitt. Klassar kan definerast ved å bruke class
-nøkkelordet.
class MyClass {
public int my_value;
public MyClass(int value) {
my_value = value;
}
}
Vala tillèt typeinferens, som betyr at utviklaren ikkje alltid må spesifisere typen til ein variabel eksplisitt.
var greeting = "Hello, World!"; // String-type inferert
Vala støttar lambda-uttrykk, som gjer det mogleg å lage anonyme funksjonar.
void main() {
var add = (int a, int b) => a + b;
print("%d\n", add(3, 4));
}
Vala tillèt definisjon av eigenskapar, og gir automatisk getter- og setter-metodar.
class Point {
public int x { get; set; }
public int y { get; set; }
}
Vala støttar signal, ein funksjon frå GObject-systemet som gjer det mogleg med hendingstyrt programmering.
signal my_signal(string message);
Vala har innebygde funksjonar for feilhåndtering, som gjer det enklare å handtere unntak.
void risky_function() throws Error {
// kode som kan kaste ein feil
}
Vala håndhevar statisk typing, som hjelper til med å oppdage feil ved kompilering.
int my_number = 42; // Må vere eit heiltal.
Vala støttar samlingar og generiske typar for å lage fleksible datastrukturar.
List<string> my_list = new List<string>();
Vala kan direkte kalle C-bibliotek og funksjonar, noko som gjer det mogleg med sømlaus interaksjon med eksisterande C-kodebasar.
public C.function(param1);
Vala tillèt bruk av annotasjonar for metadata, som er nyttige for grensesnitt med andre system.
[CustomAnnotation]
class AnnotatedClass { }
Vala-kode vert kompilert ved hjelp av vala
-kompilatoren, som omset Vala-kode til C. Den bruker deretter ein standard C-kompilator (som GCC) for å kompilere den resulterande C-koden til ein kjørbar fil. Byggesystemet kan integrerast med Meson
, som er vanleg i GNOME-økosystemet.
Det finst nokre integrerte utviklingsmiljø (IDE-ar) som støttar Vala-utvikling:
For å bygge eit Vala-prosjekt, opprett ei fil med .vala
-utviding, og bruk deretter kommandolinja:
vala --pkg gtk+-3.0 my_program.vala -o my_program
Dette eksempelet kompilert my_program.vala
, og lenker det mot GTK+-biblioteket.
Vala vert hovudsakleg brukt til å bygge skrivebordsapplikasjonar innan GNOME-økosystemet. Det er vanleg i prosjekt som krev GObject-orientert utvikling. Applikasjonar som tekstredigerarar, mediespelarar og systemverktøy har blitt utvikla i Vala. Merkelege prosjekt inkluderer:
Når ein samanliknar med liknande språk, skil Vala seg ut på grunn av integrasjonen med GObject-systemet og fokuset på GNOME-applikasjonar.
Eit av dei eksisterande verktøya for å omsetje Vala-kode er Vala til C-kompilatoren sjølv, då den effektivt omset Vala-kildekode til C. Dersom du ser etter meir generelle verktøy, finst det ingen breitt aksepterte kilde-til-kilde omsetningsverktøy spesifikt for Vala, men verktøy som GObject Introspection kan nyttast for å lage bindingar med andre språk.