Vala

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Vala
Семантика:

структурное, императивное, объектно-ориентированное программирование

Появился в:

2006

Автор(ы):

Йюрг Биллетер, Раффаэле Сандрини

Расширение файлов:

.vala, .vapi, .gir, .c

Выпуск:

0.26.1 — 13 октября 2014 года[1]

Система типов:

строгая, статическая

Основные реализации:

GNOME Desktop Project

Диалекты:

Vala, Genie

Испытал влияние:

Си, C++, Groovy, Java, C#

Лицензия:

LGPL

Сайт:

live.gnome.org/Vala

ОС:

кроссплатформенное программное обеспечение

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

Основные особенности[править | править вики-текст]

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

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

Существуют неофициальные сборки компилятора для ОС 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», демонстрирующая объектно-ориентированный подход

 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;
}

Примечания[править | править вики-текст]

  1. Vala Releases (англ.)(недоступная ссылка — история). Проверено 13 октября 2014. Архивировано из первоисточника 12 октября 2007.
  2. Bindings Status (англ.). Проверено 7 сентября 2011. Архивировано из первоисточника 10 марта 2012.
  3. External Bindings (англ.). Проверено 7 сентября 2011. Архивировано из первоисточника 10 марта 2012.

IDE[править | править вики-текст]

Программное обеспечение[править | править вики-текст]

  • Shotwell — органайзер цифровых фотографий
  • Geary — клиент электронной почты
  • Fillmore — multitrack record
  • Lombard — видео редактор
  • Unity (частично)
  • FinalTerm gtk-терминал с множеством функций

Ссылки[править | править вики-текст]