Vala
Vala | |
---|---|
Парадигма | багато-парадигмове: імперативне, структурне, об'єктно-орієнтоване програмування |
Дата появи | 2006 |
Розробник | Jürg Billeter, Raffaele Sandrini |
Останній реліз | |
Система типізації | строга статична |
Під впливом від | C, C++, Java, C Sharp, D і Boo |
Мова реалізації | Vala[1] |
Операційна система | кросплатформова програма |
Ліцензія | LGPL 2.1+ |
Звичайні розширення файлів | .vala або .vapi |
Репозиторій вихідного коду | gitlab.gnome.org/GNOME/vala.git github.com/GNOME/vala.git |
Вебсайт | live.gnome.org/Vala |
Vala — об'єктно-орієнтована мова програмування, призначена для прикладного і системного програмування на основі бібліотек GLib Object System (GObject ) робочого середовища GNOME/GTK+. Мова була розроблена Юргом Біллетером (Jürg Billeter) і Раффаеле Сандріні (Raffaele Sandrini).
Vala за своїм синтаксисом подібна до C# і повністю реалізує об'єктно-орієнтований підхід. Підтримуються інтроспекція, прибирання сміття, засноване на підрахунку посилань, лямбда-функції, концепція сигналів і слотів, подібна використовуваній у Qt, але реалізована на рівні мови, рядкові типи, зрізи масивів, оператор переліку елементів колекції foreach(), делегати, замикання, інтерфейси, властивості та винятки.
Особливість системи розробки полягає в тому, що програма на Vala транслюється в програму мовою C, яка в свою чергу компілюється у виконуваний код цільової платформи зі стандартними бібліотеками C, Glib і GTK+ та виконується зі швидкістю скомпільованої в об'єктний код цільової платформи програми C. Завдяки такому підходу відкомпільований код на Vala бінарно сумісний з системними бібліотеками, написаними на C. Для підключення сторонніх бібліотек до програм на мові Vala використовуються спеціальні vapi-файли, в яких описується інтерфейс бібліотеки. Для багатьох бібліотек вже існують vapi-файли, що входять до дистрибутиву компілятора Vala[2]. Крім того, є vapi-файли для бібліотек, підтримувані сторонніми користувачами, поки не включені у штатне постачання[3].
Існують неофіційні збірки компілятора для ОС Windows, підтримувані сторонніми розробниками.
Мова Vala була створена для ефективної розробки на платформі GNOME складних прикладних і системних програм з графічним інтерфейсом користувача, що базується на стандартній бібліотеці GTK+, із застосуванням сучасних мовних засобів і технік програмування.
Об'єктно-орієнтовані мови Java і C# надають програмісту досить можливостей, але їхні програми виконуються у віртуальних машинах, що робить неможливим пряме звернення до них з бінарного коду мовою C, як і використання в таких програмах системних низькорівневих бібліотек, таких як GObject . Тому ці мови, як і будь-які інші, які виконують байт-код в віртуальних машинах, не можуть бути прийняті в рамках платформи GNOME. Керовані програми мають також обмеження у швидкодії, що є критичним для роботи деяких програм (наприклад, системних), які повинні виконуватися в бінарному коді (ABI). Це і стало причиною появи мови Vala.
Проста програма «Hello World»
int main () {
print ("Hello World\n");
return 0;
}
Програма «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;
}
}
Це приклад використання 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
- Shotwell — упорядник фотографій
- Fillmore — багатодоріжковий запис
- Lombard — відео-редактор
- Valencia — плагін gedit для Vala
- Midori 7 — веббраузер
- ↑ The vala Open Source Project on Open Hub: Languages Page — 2006.
- ↑ Bindings Status (англійською) . Архів оригіналу за 10 березня 2012. Процитовано 7 вересня 2011.
- ↑ External Bindings (англійською) . Архів оригіналу за 10 березня 2012. Процитовано 7 вересня 2011.
- The Vala Programming Language, on GNOME Live! (англійською) . 23 августа 2011. Архів оригіналу за 10 березня 2012. Процитовано 16 августа 2011.
- Val(a)IDE официальная среда разработки для Vala (англійською) . Архів оригіналу за 10 березня 2012. Процитовано 27 квітня 2012.
- Benchmark of Vala versus C# and C (англійською) . 9 марта 2008. Архів оригіналу за 10 березня 2012. Процитовано 2 мая 2009.
- http://valadoc.org/ (англійською) . Архів оригіналу за 10 березня 2012. Процитовано 9 февраля 2010.
- Снастин, Алексей (27 января 2010). Обзор языка программирования Vala. Часть 1: Общие свойства и характеристики языка Vala (російською) . Архів оригіналу за 10 березня 2012. Процитовано 9 февраля 2010.
- Часть 2. Объектно-ориентированное программирование на языке Vala (російською) . 4 февраля 2010. Архів оригіналу за 10 березня 2012. Процитовано 9 февраля 2010.
- Часть 3. Расширенные возможности языка Vala (російською) . 9 февраля 2010. Архів оригіналу за 10 березня 2012. Процитовано 9 февраля 2010.
- Что такое Vala (російською) . 23 июля 2010. Архів оригіналу за 10 березня 2012. Процитовано 31 июля 2010.
- Руководство по Vala (незаконченный перевод) (російською) . Архів оригіналу за 10 березня 2012. Процитовано 17 августа 2010.
- Неофициальная сборка для ОС Windows (англійською) . 16 августа 2011. Архів оригіналу за 25 вересня 2013. Процитовано 16 августа 2011.
- Поддержка подключения библиотек написанных на C (англійською) . 7 сентября 2011. Архів оригіналу за 10 березня 2012. Процитовано 17 сентября 2011.