Vala, modern bir programlama deneyimi sunmayı amaçlayan bir programlama dilidir ve özellikle GObject Tip Sistemi içinde C programlama dili ile uyumluluğu sağlamaktadır. Basit ve verimli olacak şekilde tasarlanmış olup, esas olarak GNOME masaüstü ortamı için uygulama geliştirmeye yöneliktir. C# veya Java gibi dillere benzeyen bir sözdizimine sahip olan Vala, nesne yönelimli programlama, tür çıkarımı ve lambda ifadeleri gibi özellikleri desteklerken, yerel performans için C koduna derlenmektedir.
Vala, Jürg Billeter tarafından yaratılmış ve 2006 yılında GNOME projesinin bir parçası olarak ilk kez ortaya çıkmıştır. Geliştirme, GObject geliştirmesi için C'yi doğrudan kullanmanın zorluğu ve karmaşıklığı tarafından büyük ölçüde motive edilmiştir. Jürg, C'nin gücünü korurken sözdizimini basitleştirip verimliliği artıran daha yüksek seviyeli bir dil sunmayı hedeflemiştir.
Vala, özellikle sözdizimi ve bellek yönetimi ile tür güvenliği gibi özellikleri açısından C# ve Java gibi dillerden ilham almıştır. GNOME kütüphaneleri ve GNOME ekosisteminin temel bir parçası olan GObject ile yakın bir entegrasyon sağlar, bu da onu bu ortamda uygulama geliştirmek için uygun hale getirir. Vala, yüksek seviyeli soyutlama ile düşük seviyeli performans arasında bir köprü sunarak benzer diller arasında kendine özgü bir konum edinmiştir.
Şu anda Vala önemli ölçüde olgunlaşmış ve kendine özel bir topluluğa sahip olmuştur. Aktif olarak bakım yapılmakta olup, en son GNOME teknolojileri için düzenli güncellemeler ve destek sunulmaktadır. Vala, özellikle Linux ortamları için tasarlanmış masaüstü uygulamalarının geliştirilmesinde giderek daha fazla kullanılmakta ve kullanım kolaylığı ile verimliliği sayesinde benimsenmeye devam etmektedir.
Vala, sınıflar, kalıtım ve arayüzler aracılığıyla nesne yönelimli programlamayı (OOP) destekler. Sınıflar class
anahtar kelimesi kullanılarak tanımlanabilir.
class MyClass {
public int my_value;
public MyClass(int value) {
my_value = value;
}
}
Vala, tür çıkarımına olanak tanır; bu, geliştiricinin her zaman bir değişkenin türünü açıkça belirtmesi gerekmediği anlamına gelir.
var greeting = "Hello, World!"; // String türü çıkarıldı
Vala, anonim fonksiyonlar oluşturmayı sağlayan lambda ifadelerini destekler.
void main() {
var add = (int a, int b) => a + b;
print("%d\n", add(3, 4));
}
Vala, otomatik olarak getter ve setter yöntemleri sağlayarak özelliklerin tanımlanmasına olanak tanır.
class Point {
public int x { get; set; }
public int y { get; set; }
}
Vala, olay odaklı programlamayı mümkün kılan GObject sisteminden bir özellik olan sinyalleri destekler.
signal my_signal(string message);
Vala, istisnaları yönetmeyi kolaylaştıran yerleşik hata yönetimi özelliklerine sahiptir.
void risky_function() throws Error {
// hata fırlatabilecek kod
}
Vala, derleme zamanında hataları yakalamaya yardımcı olan statik türlemeyi zorunlu kılar.
int my_number = 42; // Bir tamsayı olmalıdır.
Vala, esnek veri yapıları oluşturmak için koleksiyonlar ve genel türleri destekler.
List<string> my_list = new List<string>();
Vala, mevcut C kod tabanlarıyla sorunsuz etkileşim sağlamak için doğrudan C kütüphanelerini ve fonksiyonlarını çağırabilir.
public C.function(param1);
Vala, diğer sistemlerle arayüz oluşturmak için yararlı olan meta veriler için notların kullanılmasına olanak tanır.
[CustomAnnotation]
class AnnotatedClass { }
Vala kodu, Vala kodunu C'ye çeviren vala
derleyicisi kullanılarak derlenir. Ardından, elde edilen C kodunu çalıştırılabilir bir dosyaya derlemek için standart bir C derleyicisi (GCC gibi) kullanılır. Yapı sistemi, GNOME ekosisteminde yaygın olarak kullanılan Meson
ile entegre edilebilir.
Vala geliştirmesini destekleyen birkaç Entegre Geliştirme Ortamı (IDE) bulunmaktadır:
Bir Vala projesi oluşturmak için, .vala
uzantılı bir dosya oluşturun ve ardından komut satırını kullanın:
vala --pkg gtk+-3.0 my_program.vala -o my_program
Bu örnek, my_program.vala
dosyasını derleyerek GTK+ kütüphanesi ile bağlantı kurar.
Vala, esas olarak GNOME ekosisteminde masaüstü uygulamaları oluşturmak için kullanılmaktadır. GObject odaklı geliştirme gerektiren projelerde yaygındır. Vala ile geliştirilmiş uygulamalar arasında metin editörleri, medya oynatıcılar ve sistem yardımcı programları bulunmaktadır. Öne çıkan projeler şunlardır:
Benzer dillere kıyasla Vala, GObject sistemi ile entegrasyonu ve GNOME uygulamalarına odaklanması nedeniyle öne çıkmaktadır.
Vala kodunu çevirmek için mevcut araçlardan biri, Vala kaynak kodunu C'ye etkili bir şekilde çeviren Vala'dan C'ye derleyicidir. Daha genel araçlar arıyorsanız, Vala için özel olarak yaygın olarak benimsenmiş kaynak koddan kaynak koda çeviri araçları yoktur, ancak GObject Introspection gibi araçlar, diğer dillerle bağlamalar oluşturmak için kullanılabilir.