Vala

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Vala
Изображение логотипа
Семантика структурное, императивное, объектно-ориентированное программирование
Класс языка объектно-ориентированный
Появился в 2006
Автор Йюрг Биллетер, Раффаэле Сандрини
Разработчик Jürg Billeter[вд]
Расширение файлов .vala или .vapi
Выпуск 0.42.2 (24.09.2018)
Система типов строгая, статическая
Основные реализации GNOME Desktop Project
Испытал влияние Си, C++, Groovy, Java, C#
Лицензия LGPL
Сайт vala.dev (англ.)
ОС кроссплатформенность
Логотип Викисклада Медиафайлы на Викискладе

Vala — язык программирования, предназначенный для прикладного и системного программирования на основе библиотек GLib Object System (GObject) рабочей среды GNOME/GTK+. Язык был разработан Йюргом Биллетером (Jürg Billeter) и Раффаэле Сандрини (Raffaele Sandrini).

Основные особенности

[править | править код]

Vala по своему синтаксису очень похож на C# и полностью реализует объектно-ориентированный подход. Поддерживаются интроспекция, выведение типов, сборка мусора основанная на подсчёте ссылок, лямбда-функции, концепция сигналов и слотов, подобная используемой в Qt, но реализованная на уровне языка, строковые типы, обобщённое программирование, срезы массивов, оператор перечисления элементов коллекции foreach, делегаты, замыкания, интерфейсы, свойства и исключения.

Особенность системы разработки состоит в том, что программа на Vala транслируется в программу на языке C, которая в свою очередь компилируется в исполняемый код целевой платформы со стандартными библиотеками C, Glib и выполняется со скоростью откомпилированного в объектный код целевой платформы приложения C. Чтобы получить транслируемый код на языке С, нужно указать параметр -C компилятору Vala. При наличии в программе графического интерфейса пользователя во время компиляции используется библиотека GTK+ (параметр --pkg gtk+-3.0 компилятора). Благодаря такому подходу откомпилированный код на Vala бинарно совместим с системными библиотеками, написанными на C. Для подключения сторонних библиотек к программам на языке Vala используются специальные vapi-файлы, в которых даётся описание интерфейса библиотеки. Для многих библиотек уже существуют vapi-файлы, входящие в штатную поставку компилятора Vala[1]. Кроме того, имеются vapi-файлы для библиотек, поддерживаемые сторонними пользователями, пока не включенные в штатную поставку[2].

Существуют неофициальные сборки компилятора для ОС Windows, поддерживаемые сторонними разработчиками.

Причины создания

[править | править код]

Язык Vala был создан для эффективной разработки на платформе GNOME сложных прикладных и системных приложений с графическим интерфейсом пользователя, базирующимся на стандартной библиотеке GTK+, с применением современных языковых средств и техник программирования.

Объектно-ориентированные языки Java и C# предоставляют программисту достаточно возможностей, но их программы исполняются в виртуальных машинах, что делает невозможным прямое обращение к ним из бинарного кода на языке C, как и использование в таких программах системных низкоуровневых библиотек, таких как GObject. Поэтому эти языки, как и любые другие, исполняющие байт-код в виртуальных машинах, не могут быть приняты в рамках платформы GNOME. Управляемые приложения имеют также ограничения в производительности, что является критичным для работы некоторых программ (например, системных), которые должны исполняться в бинарном коде (ABI). Это и стало причиной появления нового языка Vala.

Примеры кода

[править | править код]

Пример № 1

[править | править код]

Простая программа «Hello World»

int main ()
{
  print ("Hello World\n");
  return 0;
}

Пример № 2

[править | править код]

Программа «Hello World», демонстрирующая объектно-ориентированный подход

 class Sample : GLib.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;
}

Примечания

[править | править код]
  1. Bindings Status (англ.). Дата обращения: 7 сентября 2011. Архивировано 10 марта 2012 года.
  2. External Bindings (англ.). Дата обращения: 7 сентября 2011. Архивировано 10 марта 2012 года.
  • valadoc.org (англ.). — Документация по языку Vala. Дата обращения: 9 февраля 2010. Архивировано 10 марта 2012 года.