Vala, modern programlama tekniklerini kullanarak, GNOME kitaplıkları(özellikle GLib ve GObject) üzerinde çalışan yazılımlar geliştirmenizi sağlayan yeni bir bir programlama dili. Gerçek manada kendi derleyicisi olan bir dil değil. Vala derleyicisi bu dilde yazılan kodları doğrudan makina koduna dönüştürmüyor; Vala kodunu C koduna çeviriyor ve GCC ile derliyor! Kulağa enteresan geliyor öyle değil mi…
Vala’nın ortaya çıkışının, bence, GNOME geliştiricileri için mantıklı ve faydalı sebepleri var. GNOME/GTK+, C ile geliştirilen yazılımlar ve bu dilde kod yazmanın oldukça meşakatli bir iş olduğunu sanırım bir çoğumuz biliyordur. Hele ki GNOME gibi komple bir sistemi ortaya çıkarmanın zorluğu tartışılamaz…
Aslında C ile nesne yönelimine yaklaşmak için GObject denen bir sistem çok önceden geliştirildi ve söz konusu projelerde yoğun olarak kullanıldı ama C’nin yoruculuğu ve GTK+’nın insanı delirten yapısı bir yana, GObject’in kendisi bile öğrendiğim kadarıyla bir işkence aleti! Bu problemleri çözmek için Jürg Billeter ve Raffaele Sandrini Vala denen, bence, çok tatlı bir dil geliştirdiler.
Lafı fazla uzatmadan Vala’nın neye benzediğine bakalım; her zaman olduğu gibi bir “Merhaba Dünya!” uygulaması yazarak yapalım bunu:
void main() {
print("Merhaba Dunya!\n");
}
Bu örneği şu şekilde de yapabiliriz. Bu sefer Vala’nın nesne yönelimli özelliklerini kullanıyoruz:
class MerhabaDunya:Object {
void selamla() {
stdout.printf("Merhaba Dunya!\n");
}
static void main(string[] args) {
var dunyayi = new MerhabaDunya();
dunyayi.selamla();
}
}
Dilin genel itibariyle Java/C# sentaksına çok yakın olduğunu farketmişsinizdir.
Bu yazdıklarım Vala Nedir? yazısından öte bir anlam taşımadığından dilin genel özellikleri ve yukarıdaki satırların ne yaptıkları hakkında konuşmayacağım. Ama bu kodu nasıl derleyeceğinizden bahsedebilirim; öncelikle Vala derleyicisini(aslında bir önişlemci) kurmanız gerekiyor. Kurduktan sonra basitce şu komutu verebilirsiniz.
valac merhaba.vala
Bu komut ilk Vala kodlarımızı önce C koduna dönüştürecek daha sonra ise GCC ile derleyerek makina koduna dönüştürecek. ./merhaba komutunu kullanarak programın size “merhaba” demesini büyük bir zevkle(!) izleyebilirsiniz.
Vala derleyicisi biraz gcc ve saz arkadaşlarına benziyor. -o parametresi ise oluşan ikili dosyaya kendi isteğinize göre bir isim verebilirsiniz.
valac -o isim_verdim merhaba.vala
Vala kodunun C koduna dönüştürüldüğünden bahsetmiştim, eğer neye benzediğini merak ediyorsanız -C parametresini kullanabilirsiniz.
valac -C merhaba.vala
Ben bu komutu nesne yönelimli Vala örneği için kullandım. Tam 100 satırlık bir GObject kullanan C kodu üretmiş, oldukça karışık bir kod olduğunu da söylemem gerek. GObject ve C ile GNOME uygulaması geliştirmek istemezdim! GNOME’un neden çok yavaş geliştirildiğini şimdi daha iyi anlıyorum.
Şimdi de ilk verdiğimiz örneğin(3 satırlık “Merhaba Dünya” programcığı) C koduna bakalım; gayet anlaşılır duruyor.
/* sample2.c generated by valac 0.10.1, the Vala compiler * generated from sample2.vala, do not modify */ #include <glib.h> #include <glib-object.h> void _vala_main (void); void _vala_main (void) { g_print ("Merhaba Dunya"); } int main (int argc, char ** argv) { g_type_init (); _vala_main (); return 0; }
Son derece sade(GObject kullanılan C kodu için!) ve tanıdık öyle değil mi! Tabii yine biraz GObject bulaşmış durumda.
Bu kadar teknik mumbo-jumbo size yettiyse Vala’nın ne kadar kullanılabilir olduğundan ve şu ana kadar nerelerde kullanıldığından bahsedelim.
Vala, ilk cümlemde oyuncak olarak nitelememe rağmen oyuncak bir dil ya da deneysel bir çalışma değil. Tamamen gerçek ihtiyaçlar üzerine geliştirilmiş, Java/C# sentaksını kullandığı için bence pek çok sorunu önceden aşmış bir dil. Onunla her türlü uygulama geliştirebilirsiniz. Masaüstü uygulamalarından komut satırı araçlarına varıncaya kadar hemen herşey… Ama bildiğim kadarıyla masaüstü uygulamaları geliştirecekseniz GTK+ kodlamak zorundasınız…
Ayrıca doğrudan C koduna dönüştürülerek derlendiği için Python, C#, Ruby vb. dillerde elde edeceğiniz performanstan daha fazlasını elde etmeniz gayet normal. Bu konuyla ilgini tatminkar bir belge aşağıdaki adreste var.
http://code.google.com/p/vala-benchmarks/wiki/BenchResults
Vala’yı bugüne kadar kimler kullandı ve hayatımızı nasıl etkileyecek derseniz:
- Yorba Vakfı tarafından geliştirilen GTK+ temelli masaüstü uygulamaları Vala ile geliştiriliyor. Bu yazılımlardan birini tanıyor olma ihtimaliniz çok yüksek, çünkü o Ubuntu’nun son sürümünde önemli bir öntanımlı program; Shotwell!
- Ubuntu, bildiğiniz gibi, bir sonraki sürümünde(11.04) GNOME’u öntanımlı masaüstü olarak kullanmaktan vazgeçerek kendi geliştirdiği, GNOME tabanlı, Unity masaüstünü kullanmaya karar verdi. Unity Vala ile geliştiriliyor ve şu ana kadar farkettiğim en önemli Vala projesi. Canonical’in, Ubuntu’nun geleceği için bu kadar önemli bir projeyi geliştirmek için Vala’yı tercih etmesi sanırım bu dilin geleceği hakkında sağlam bir fikir veriyordur.
Tüm bunlara rağmen sorunlar da yok değil.
- Adam akıllı bir dökümantasyon yok. Bu çok önemli bir sorun. Çünkü uygulama geliştirmek için bu dili öğrenmek isteyenler ya da benim gibi heveslilerin kapsamlı ve güvenilir bilgi alabileceği bir kaynak yok. İnternet üzerinde bölük pörçük bir takım tutoriallar ve kod örnekleri var. Onlar da yeterli değil zaten. Vala ile ilgileniyorsanız ve daha önceden programlama deneyimiziniz yoksa, özellikle C# ve Java’da, Vala’yı unutabilirsiniz. Kendinize başka bir dil bakın!
- Vala çok genç bir dil olduğundan internet üzerinde bu dili bilen insan sayısı çok çok az. Bu önemli çünkü Vala ile yazılım geliştirirken o adamlara ihtiyacınız olacak!
- Yine çok genç bir dil olduğu için bilinen IDE’ler ve Emacs, VIM gibi editörler tarafından pek desteklenmiyor. Gedit ve MonoDevelop için eklentiler var sanırım. Bu arada Valide isminde(cidden!) bir IDE’si var. O da Vala ile yazılmış.
- Esas olarak GObject ile sorunlar yaşayan GNOME geliştiricileri için geliştirildiğinden onunla herşeyi çok rahat bir biçimde yapamayabilirsiniz.
Artılar eksileri götürünce benim için oldukça ilginç, eğlenceli ve hoş bir dil kalıyor geriye. Şu an kısıtlamaları olsa da gelecekte nasıl bir noktaya evrileceğini kestirmek güç. Zaman gösterecek…
Vala hakkında daha fazla bilgi edinmek için dökümantasyon sayfasını inceleyebilirsiniz.
Kasım 16, 2010, 2:11 pm |
Vim’i bilmem ama emacs için vala-mode var:)
http://live.gnome.org/Vala/Emacs
Güzel yazı ellerine sağlık.
Kasım 16, 2010, 2:26 pm |
Beğendiğine sevimdim…
Vim için de ufak tefek birşey var. Vala’nın sitesinde dağıtılıyor. Zaten şu an onu kullanıyorum. Emacs kullanıcısı olmadığım için vala-mode’dan haberim yoktu ama o tür birşeyin olduğunu tahmin ediyordum.
Kasım 19, 2010, 8:14 am |
Vala kelimesi Fince ant, yemin anlamına geliyo. Bizim valla kelimesinden pek farklı olmadığına dikkatinizi çekerim
Kasım 19, 2010, 11:27 am |