Vala er et programmeringssprog, der har til formål at give en moderne programmeringsoplevelse, samtidig med at det sikrer kompatibilitet med C-programmeringssproget, især inden for GObject Type System. Det blev designet til at være simpelt og effektivt, primært med fokus på udvikling af applikationer til GNOME-skrivebordsmiljøet. Med en syntaks, der ligner sprog som C# eller Java, understøtter Vala funktioner som objektorienteret programmering, typeinference og lambda-udtryk, mens det kompilerer til C-kode for at opnå native ydeevne.
Vala blev skabt af Jürg Billeter og dukkede først op i 2006 som en del af GNOME-projektet. Udviklingen blev i høj grad motiveret af vanskelighederne og kompleksiteten ved at bruge C direkte til GObject-udvikling. Jürg ønskede at tilbyde et højere niveau sprog, der bevarede C's styrke, samtidig med at syntaksen blev forenklet og produktiviteten øget.
Vala blev inspireret af sprog som C# og Java, især i sin syntaks og funktioner som affaldssamling og typesikkerhed. Det integreres tæt med GNOME-bibliotekerne og GObject, som er en kernekomponent i GNOME-økosystemet, hvilket gør det velegnet til at bygge applikationer inden for dette miljø. Vala tilbyder en bro mellem høj-niveau abstraktion og lav-niveau ydeevne, hvilket gør det distinkt blandt lignende sprog.
Indtil nu er Vala blevet betydeligt modnet og har et dedikeret fællesskab. Det vedligeholdes aktivt med regelmæssige opdateringer og support til de nyeste GNOME-teknologier. Vala bruges i stigende grad til udvikling af skrivebordsapplikationer, især dem der er beregnet til Linux-miljøer, og fortsætter med at få udbredelse på grund af sin brugervenlighed og effektivitet.
Vala understøtter objektorienteret programmering (OOP) gennem klasser, arv og interfaces. Klasser kan defineres ved hjælp af class
nøgleordet.
class MyClass {
public int my_value;
public MyClass(int value) {
my_value = value;
}
}
Vala tillader typeinference, hvilket betyder, at udvikleren ikke altid behøver at specificere typen af en variabel eksplicit.
var greeting = "Hello, World!"; // String-type infereret
Vala understøtter lambda-udtryk, som muliggør oprettelse af anonyme funktioner.
void main() {
var add = (int a, int b) => a + b;
print("%d\n", add(3, 4));
}
Vala tillader definition af egenskaber, hvilket automatisk giver getter- og setter-metoder.
class Point {
public int x { get; set; }
public int y { get; set; }
}
Vala understøtter signaler, en funktion fra GObject-systemet, der muliggør begivenhedsdrevet programmering.
signal my_signal(string message);
Vala har indbyggede fejlhåndteringsfunktioner, der gør det lettere at håndtere undtagelser.
void risky_function() throws Error {
// kode der muligvis kan kaste en fejl
}
Vala håndhæver statisk typing, hvilket hjælper med at fange fejl ved kompileringstid.
int my_number = 42; // Skal være et heltal.
Vala understøtter samlinger og generiske typer til oprettelse af fleksible datastrukturer.
List<string> my_list = new List<string>();
Vala kan direkte kalde C-biblioteker og funktioner, hvilket muliggør problemfri interaktion med eksisterende C-kodebaser.
public C.function(param1);
Vala tillader brug af anmærkninger til metadata, hvilket er nyttigt til interfacing med andre systemer.
[CustomAnnotation]
class AnnotatedClass { }
Vala-kode kompileres ved hjælp af vala
kompilatoren, som oversætter Vala-kode til C. Den bruger derefter en standard C-kompilator (som GCC) til at kompilere den resulterende C-kode til en eksekverbar fil. Byggesystemet kan integreres med Meson
, som ofte bruges i GNOME-økosystemet.
Der er et par Integrerede Udviklingsmiljøer (IDE'er), der understøtter Vala-udvikling:
For at bygge et Vala-projekt skal du oprette en fil med en .vala
-udvidelse og derefter bruge kommandolinjen:
vala --pkg gtk+-3.0 my_program.vala -o my_program
Dette eksempel kompilerer my_program.vala
, der linker det mod GTK+-biblioteket.
Vala bruges primært til at bygge skrivebordsapplikationer inden for GNOME-økosystemet. Det er almindeligt i projekter, der kræver GObject-orienteret udvikling. Applikationer som tekstbehandlere, medieafspillere og systemværktøjer er blevet udviklet i Vala. Bemærkelsesværdige projekter inkluderer:
Når man sammenligner med lignende sprog, skiller Vala sig ud på grund af sin integration med GObject-systemet og fokus på GNOME-applikationer.
Et af de eksisterende værktøjer til at oversætte Vala-kode er Vala til C-kompilatoren selv, da den effektivt oversætter Vala-kildekode til C. Hvis du leder efter mere generelle værktøjer, er der ingen bredt anvendte kilde-til-kilde oversættelsesværktøjer specifikt til Vala, men værktøjer som GObject Introspection kan bruges til at oprette bindinger med andre sprog.