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).

Содержание

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

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

IDE

Программное обеспечение

Ссылки

Просмотр этого шаблона Проект GNOME
Сообщество GNOME FoundationGUADEC Gnomelogo.svg
Люди Мигель де ИкасаФедерико МенаХэвок Пеннингтон
Компоненты ShellПанельMutterMetacity
Приложения (список) AnjutaCheeseEkigaEmpathyEpiphanyEvinceEvolutionEye of GNOMEFile RollerGCalctoolgeditTerminalInkscapeMeldNautilusOCRFeederRhythmboxSound JuicerTomboyTotemИгры: GamesAisleriot
Технологии ATKBonoboD-BusGConfGLibGTK+KeyringGVFSGObjectGStreamerMonoPangoVala
Просмотр этого шаблона Основные языки программирования (сравнениеIDEисторияхронология)
Используемыев разработке АдаAPLЯзык ассемблераActionScriptABAP/4AutoItAWKБейсикСиКоболC++C#ClarionClojureColdFusionCommon LispDdBaseDelphiEiffelErlangEuphoriaF#ФортФортранGambasGoGroovy • HAL/S • HaskellIconJavaJavaScriptLimboLuaМодула-3Object PascalObjective-COCamlOzParserПаскальКомпонентный ПаскальPerlPHPPowerBASICPythonПЛ/1ПрологRubyScalaSchemeSmalltalkSQLPL/SQLTclValaVisual Basic (.NET)
Академические AgdaCleanCurryЛогоMLРЕФАЛСимулаОберон
IEC 61131-3 Instruction ListSTFBDLadder Diagram (LD) • SFC
Прочие АлголАлгол 68Модула-2МирандаHope
Эзотерические HQ9+/HQ9++ • INTERCALBrainfuck • Brainfork • BefungeMalbolgePietSpoonUnlambdaWhitespaceFALSELOLCODE
Визуальные G (LabVIEW) • Microsoft VPLSikuliVisSimАлисаДРАКОНСкретч
Просмотр этого шаблона Язык программирования Си
ANSI C (C89 и C90) • C99C11
Компиляторы Borland Turbo CClangGCCLCCPelles CPCCTCCVisual C++ (C++/CLI • C++/CX) • Watcom C/C++ compiler
Библиотеки Стандартная библиотека языка СиglibcdietlibcuClibcNewlibEglibcBionic
Особенности C-строка • Синтаксис • Препроцессор • Типы и объявления переменных • • Функции
Избранные потомки C++C#DObjective-CJava • Alef • LimboGoVala
C и другие языки C и C++ (Совместимость • Операторы) • Сравнение Pascal и C • Компилятор C в байт-код Java
Category Категория:Язык программирования Си