- Vala
-
Vala Семантика: структурное, императивное, объектно-ориентированное программирование
Появился в: Автор(ы): Йюрг Биллетер, Раффаэле Сандрини
Расширение файлов: .vala, .vapi, .gir, .c
Релиз: Тестовая версия: 0.17.7 — 16 сентября 2012 года[1]
Типизация данных: строгая, статическая
Основные реализации: Диалекты: Vala, Genie
Испытал влияние: Лицензия Сайт: 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 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 Сообщество Люди Компоненты Приложения
(список)Технологии Основные языки программирования (сравнение • IDE • история • хронология) Используемые
в разработкеАда • APL • Язык ассемблера • ActionScript • ABAP/4 • AutoIt • AWK • Бейсик • Си • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • Euphoria • F# • Форт • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • Icon • Java • JavaScript • Limbo • Lua • Модула-3 • Object Pascal • Objective-C • OCaml • Oz • Parser • Паскаль • Компонентный Паскаль • Perl • PHP • PowerBASIC • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic (.NET)
Академические IEC 61131-3 Instruction List • ST • FBD • Ladder Diagram (LD) • SFC
Прочие Эзотерические Визуальные Язык программирования Си 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 Категория:Язык программирования Си
Категории:- Языки программирования по алфавиту
- Объектно-ориентированные языки программирования
- Компиляторы
- GNOME
- GTK+
- Свободные компиляторы и интерпретаторы
Wikimedia Foundation. 2010.