Vala — об'єктно-орієнтована мова програмування, призначена для прикладного і системного програмування на основі бібліотек GLib Object System () робочого середовища GNOME/GTK+. Мова була розроблена Юргом Біллетером (Jürg Billeter) і Раффаеле Сандріні (Raffaele Sandrini).
Основні особливості
Vala за своїм синтаксисом подібна до C# і повністю реалізує об'єктно-орієнтований підхід. Підтримуються інтроспекція, прибирання сміття, засноване на підрахунку посилань, лямбда-функції, концепція сигналів і слотів, подібна використовуваній у Qt, але реалізована на рівні мови, рядкові типи, зрізи масивів, оператор переліку елементів колекції foreach(), делегати, замикання, інтерфейси, властивості та винятки.
Особливість системи розробки полягає в тому, що програма на Vala транслюється в програму мовою C, яка в свою чергу компілюється у виконуваний код цільової платформи зі стандартними бібліотеками C, Glib і GTK+ та виконується зі швидкістю скомпільованої в об'єктний код цільової платформи програми C. Завдяки такому підходу відкомпільований код на Vala бінарно сумісний з системними бібліотеками, написаними на C. Для підключення сторонніх бібліотек до програм на мові Vala використовуються спеціальні vapi-файли, в яких описується інтерфейс бібліотеки. Для багатьох бібліотек вже існують vapi-файли, що входять до дистрибутиву компілятора Vala. Крім того, є vapi-файли для бібліотек, підтримувані сторонніми користувачами, поки не включені у штатне постачання.
Існують неофіційні збірки компілятора для ОС Windows, підтримувані сторонніми розробниками.
Причини створення
Мова Vala була створена для ефективної розробки на платформі GNOME складних прикладних і системних програм з графічним інтерфейсом користувача, що базується на стандартній бібліотеці GTK+, із застосуванням сучасних мовних засобів і технік програмування.
Об'єктно-орієнтовані мови Java і C# надають програмісту досить можливостей, але їхні програми виконуються у віртуальних машинах, що робить неможливим пряме звернення до них з бінарного коду мовою C, як і використання в таких програмах системних низькорівневих бібліотек, таких як . Тому ці мови, як і будь-які інші, які виконують байт-код в віртуальних машинах, не можуть бути прийняті в рамках платформи GNOME. Керовані програми мають також обмеження у швидкодії, що є критичним для роботи деяких програм (наприклад, системних), які повинні виконуватися в бінарному коді (ABI). Це і стало причиною появи мови Vala.
Приклади коду Приклад № 1
Проста програма «Hello World» int main () { print ("Hello World\n"); return 0; }
Приклад № 2 Програма «Hello World», що демонструє об'єктно-орієнтований підхід
using GLib;
class Sample : Object { void run () { stdout.printf ("Hello World\n");
static int main (string[] args) { var sample = new Sample (); sample.run (); return 0;
Приклад № 3 Це приклад використання GTK+ для створення GUI програм мовою Vala:
using Gtk;
int main (string[] args) { Gtk.init (ref args);
var window = new Window (); window.title = "Hello, World!"; window.border_width = 10; window.window_position = WindowPosition.CENTER; window.set_default_size (350, 70); window.destroy.connect (Gtk.main_quit);
var label = new Label ("Hello, World!");
window.add (label); window.show_all();
Gtk.main(); return 0; }
Інтегровані середовища розробки Такі інтегровані середовища розробки підтримують мову Vala Anjuta Geany MonoDevelop
Приклади програмного забезпечення на Vala Shotwell — упорядник фотографій Fillmore — багатодоріжковий запис Lombard — відео-редактор Valencia — плагін gedit для Vala Midori 7 — веббраузер
Виноски
Посилання