Вала (язык программирования) - Vala (programming language)

Вала
Vala Logo.svg
ПарадигмаМультипарадигма: императив, структурированный, объектно-ориентированный
РазработчикЮрг Биллетер, Раффаэле Сандрини
Впервые появился2006; 14 лет назад (2006)
Стабильный выпуск
0.50.1[1] / 28 сентября 2020; 58 дней назад (2020-09-28)
Предварительный выпуск
0.49.2 / 10 августа 2020; 3 месяца назад (2020-08-10)
Печатная дисциплинастатический, сильный
Операционные системыКроссплатформенность все поддерживаются GLib, но распространяется только в виде исходного кода.
ЛицензияLGPLv2.1 +
Расширения имени файла.vala, .vapi
Интернет сайтвики.гном.org/ Проекты/ Вала
Под влиянием
C, C ++, C #, D, Ява, Бу

Вала является объектно-ориентированный язык программирования с компилятор на собственном хостинге что порождает C код и использует GObject система.

Вала синтаксически похожий на C # и включает в себя такие известные функции, как анонимные функции, сигналы, характеристики, дженерики, вспомогательное управление памятью, Обработка исключений, вывод типа, и для каждого заявления.[2] Его разработчики, Юрг Биллетер и Раффаэле Сандрини, хотели сделать эти функции понятными. C время выполнения с небольшими накладными расходами и без специальной поддержки времени выполнения за счет нацеливания на GObject объект система. Вместо того, чтобы компилировать напрямую в машинный код или язык ассемблера, он компилируется в более низкий уровень промежуточный язык. Это компиляция из исходного кода в исходный в C, который затем компилируется компилятором C для данной платформы, например GCC.[3]

Для управления памятью система GObject предоставляет подсчет ссылок. В C программист должен вручную управлять добавлением и удалением ссылок, но в Vala управление такими счетчиками ссылок автоматизировано, если программист использует встроенные ссылочные типы языка, а не простые указатели.

Использование функций из библиотек собственного кода требует написания файлов vapi, определяющих интерфейс библиотеки. Написание этих определений интерфейса хорошо документировано для библиотек C, особенно когда они основаны на GObject. Однако библиотеки C ++ не поддерживаются. Файлы Vapi предоставляются для большей части ГНОМ платформа, в том числе GTK.

Vala была задумана Юргом Биллетером и реализована им и Раффаэле Сандрини, завершив самостоятельный хостинг компилятор в мае 2006 года.[4]

Пример кода

Простой "Привет, мир! «Вала программа:

пустота главный () {	Распечатать ("Привет, мир");}

Более сложная версия, показывающая некоторые из объектно-ориентированный Функции:

учебный класс Образец: Объект {	пустота приветствие () {		стандартный вывод.printf ("Привет, мир");	}	статический пустота главный (нить[] аргументы) {		вар образец = новый Образец ();		образец.приветствие ();	}}

Пример кода для отображения интерфейса Vala с реализацией по умолчанию (миксин)

с помощью GLib;интерфейс Для печати {	общественный Абстрактные нить Распечатать ();	общественный виртуальный нить pretty_print () {		возвращаться "Пожалуйста " + Распечатать ();	}}учебный класс НормальныйПечать: Объект, Для печати {	нить Распечатать () {		возвращаться "не забывай обо мне";	}}учебный класс OverridePrint: Объект, Для печати {	нить Распечатать () {		возвращаться "Обратите внимание на разрыв";	}	общественный отменять нить pretty_print () {		возвращаться "Переопределить";	}}пустота главный (нить[] аргументы) {	вар нормальный = новый НормальныйПечать ();	вар отвергнутый = новый OverridePrint ();	Распечатать (нормальный.pretty_print ());	Распечатать (отвергнутый.pretty_print ());}

Пример использования GTK создать GUI "Привет, мир!" программа (см. также GTK привет мир ):

с помощью Gtk;int главный (нить[] аргументы) {	Gtk.в этом (ссылка аргументы);	вар окно = новый Окно ();	окно.заглавие = "Привет, мир!";	окно.ширина рамки = 10;	окно.window_position = WindowPosition.ЦЕНТР;	окно.set_default_size (350, 70);	окно.разрушать.соединять (Gtk.main_quit);	вар метка = новый Этикетка ("Привет, мир!");	окно.Добавить (метка);	окно.показать все ();	Gtk.главный ();	возвращаться 0;}

В последнем примере требуется дополнительный параметр для компиляции на платформах GNOME 3:

valac --pkg gtk + -3.0 hellogtk.vala

Смотрите также

  • Джинн, язык программирования для компилятора Vala с синтаксисом, близким к Python.
  • Шотвелл, органайзер изображений, написанный на Вала.
  • Geary, почтовый клиент, написанный на Вала.
  • элементарная ОС, дистрибутив Linux со средой рабочего стола, запрограммированной в основном на Vala.

Рекомендации

  1. ^ "Vala - компилятор, использующий систему типов GObject". Проект GNOME. Раздел новостей. Получено 9 октября 2020.
  2. ^ «Vala: программирование высокого уровня с меньшим количеством жира». Ars Technica. Получено 13 декабря 2011.
  3. ^ "Взгляд на два новых языка: Vala и Clojure".
  4. ^ «Написание мультимедийных приложений с помощью Vala». Архивировано из оригинал 28 августа 2012 г.

внешняя ссылка

Сравнение с другими языками