Vala | это... Что такое Vala? (original) (raw)
Vala
Семантика: | структурное, императивное, объектно-ориентированное программирование |
---|---|
Появился в: | 2006 |
Автор(ы): | Йюрг Биллетер, Раффаэле Сандрини |
Расширение файлов: | .vala, .vapi, .gir, .c |
Релиз: | 0.18.1 — 13 ноября 2012 года[1] |
Тестовая версия: | 0.17.7 — 16 сентября 2012 года[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).
Содержание
- 1 Основные особенности
- 2 Причины создания
- 3 Примеры кода
- 4 Примечания
- 5 IDE
- 6 Программное обеспечение
- 7 Ссылки
Основные особенности
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 2 Vala Releases (англ.).(недоступная ссылка — история) Проверено 13 ноября 2012.
- ↑ Bindings Status (англ.). Архивировано из первоисточника 10 марта 2012. Проверено 7 сентября 2011.
- ↑ External Bindings (англ.). Архивировано из первоисточника 10 марта 2012. Проверено 7 сентября 2011.
IDE
Программное обеспечение
- Shotwell — photo organizer
- Fillmore — multitrack record
- Lombard — video edit
Ссылки
- The Vala Programming Language, on GNOME Live! (англ.) (23 августа 2011). — официальный сайт. Архивировано из первоисточника 10 марта 2012. Проверено 16 августа 2011.
- Val(a)IDE официальная среда разработки для Vala (англ.). — официальный сайт Val(a)IDE. Архивировано из первоисточника 10 марта 2012.
- Benchmark of Vala versus C# and C (англ.) (9 марта 2008). — A collections of some simples benchmarks written in Vala.. Архивировано из первоисточника 10 марта 2012. Проверено 2 мая 2009.
- http://valadoc.org/ (англ.). — Documentation Vala language.. Архивировано из первоисточника 10 марта 2012. Проверено 9 февраля 2010.
- Снастин, Алексей Обзор языка программирования Vala. Часть 1: Общие свойства и характеристики языка Vala (рус.) (27 января 2010). Архивировано из первоисточника 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). Проверено 16 августа 2011.
- Поддержка подключения библиотек написанных на C (англ.) (7 сентября 2011). Архивировано из первоисточника 10 марта 2012. Проверено 17 сентября 2011.
Проект GNOME | ||
---|---|---|
Сообщество | GNOME Foundation • GUADEC | |
Люди | Мигель де Икаса • Федерико Мена • Хэвок Пеннингтон | |
Компоненты | Shell • Панель • Mutter • Metacity | |
Приложения (список) | Anjuta • Cheese • Ekiga • Empathy • Epiphany • Evince • Evolution • Eye of GNOME • File Roller • GCalctool • gedit • Terminal • Inkscape • Meld • Nautilus • OCRFeeder • Rhythmbox • Sound Juicer • Tomboy • Totem • Игры: Games • Aisleriot | |
Технологии | ATK • Bonobo • D-Bus • GConf • GLib • GTK+ • Keyring • GVFS • GObject • GStreamer • Mono • Pango • Vala |
Язык программирования Си | |
---|---|
ANSI C (C89 и C90) • C99 • C11 | |
Компиляторы | Borland Turbo C • Clang • GCC • LCC • Pelles C • PCC • TCC • Visual C++ (C++/CLI • C++/CX) • Watcom C/C++ compiler |
Библиотеки | Стандартная библиотека языка Си • glibc • dietlibc • uClibc • Newlib • Eglibc • Bionic |
Особенности | C-строка • Синтаксис • Препроцессор • Типы и объявления переменных • • Функции |
Избранные потомки | C++ • C# • D • Objective-C • Java • Alef • Limbo • Go • Vala |
C и другие языки | C и C++ (Совместимость • Операторы) • Сравнение Pascal и C • Компилятор C в байт-код Java |
Категория:Язык программирования Си |