Vala
| Семантика: |
структурное, императивное, объектно-ориентированное программирование |
|---|---|
| Появился в: | |
| Автор(ы): |
Йюрг Биллетер, Раффаэле Сандрини |
| Расширение файлов: |
.vala, .vapi, .gir, .c |
| Релиз: | |
| Тестовая версия: | |
| Типизация данных: |
строгая, статическая |
| Основные реализации: | |
| Диалекты: |
Vala, Genie |
| Испытал влияние: | |
| Лицензия |
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.
[править] Примеры кода
[править] Пример в„– 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 (англ.). Архивировано из первоисточника 26 марта 2012. Проверено 26 марта 2012.
- в‘ Bindings Status (англ.). Архивировано из первоисточника 10 марта 2012. Проверено 7 сентября 2011.
- в‘ External Bindings (англ.). Архивировано из первоисточника 10 марта 2012. Проверено 7 сентября 2011.
[править] IDE
[править] Программное обеспечение
- Shotwell в photo organizer
- Fillmore в multitrack record
- Lombard в video edit
- Valencia в gedit plugin for Vala
[править] Ссылки
- 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 Object Pascal Objective-C OCaml Oz Parser Паскаль Perl PHP PowerBASIC PureBasic Python ПЛ/1 Пролог Ruby Scala Scheme Smalltalk SQL PL/SQL Tcl Vala Visual Basic (.NET) |
| Академические | |
| IEC 61131-3 | |
| Прочие | |
| Эзотерические | |
| Визуальные | |
| Язык программирования Си | |
|---|---|
| Компиляторы | 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 Alef Limbo Go Vala |
| C и другие языки | C и C++ (Совместимость Операторы) Сравнение Pascal и C Компилятор C в байт-код Java |

