Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Vala - это объектно-ориентированный язык программирования с автономным компилятором, который генерирует код C и использует систему GObject .

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

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

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

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

Пример кода [ править ]

Простая программа Vala « Hello, World! »:

void  main  ()  { print  ( "Привет, мир \ п " ); }

Более сложная версия, демонстрирующая некоторые объектно-ориентированные функции Vala :

 Пример класса :  Object  { void  приветствие  ()  { stdout . printf  ( "Привет, мир \ n " ); }static  void  main  ( string []  args )  { var  sample  =  new  Sample  (); образец . приветствие  (); } }

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

using  GLib ;интерфейс  для печати  { общедоступная  абстрактная  строка  print  ();общедоступная  виртуальная  строка  pretty_print  ()  { return  "Пожалуйста"  +  print  (); } }class  NormalPrint :  Object ,  Printable  { string  print  ()  { return  «не забывай обо мне» ; } }class  OverridePrint :  Object ,  Printable  { string  print  ()  { return  «Обратите внимание на пробел» ; }публичная  строка переопределения  pretty_print () { вернуть «Переопределить» ; } }    void  main  ( строка []  args )  { var  normal  =  new  NormalPrint  (); var  overridden  =  новый  OverridePrint  ();печать  ( нормальный . pretty_print  ()); печать  ( переопределено . pretty_print  ()); }

Пример использования GTK для создания графического интерфейса "Hello, World!" программа (см. также GTK hello world ):

используя  Gtk ;int  main  ( string []  args )  { Gtk . инициализация  ( ref  args );var  window  =  новое  окно  (); окно . title  =  "Привет, мир!" ; окно . border_width  =  10 ; окно . window_position  =  WindowPosition . ЦЕНТР ; окно . set_default_size  ( 350 ,  70 ); окно . уничтожить . подключить  ( Gtk . main_quit );var  label  =  new  Label  ( "Привет, мир!" );окно . добавить  ( метка ); окно . show_all  ();Gtk . main  (); возврат  0 ; }

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

valac --pkg gtk + -3.0 hellogtk.vala

См. Также [ править ]

  • Genie , язык программирования для компилятора Vala с синтаксисом, близким к Python .
  • Shotwell , органайзер изображений, написанный на языке Vala.
  • Geary , почтовый клиент, написанный на Vala.
  • elementary OS , дистрибутив Linux со средой рабочего стола, запрограммированной в основном на Vala.

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • ValaToWindows , скомпилированные двоичные файлы Vala для Windows
  • LibGee , коллекция библиотеки для Vala.
  • Документация по API
  • Пример кода Vala для начинающих
  • Список программ Vala
  • web-vala , простая структура веб-приложений для Vala
  • Autovala, программа, которая автоматизирует и упрощает создание файлов CMake и Meson для проектов Vala / C.
  • VLS , реализация протокола Vala Language Server Protocol в Vala
  • GVLS , еще одна реализация протокола Vala Language Server в Vala
  • Сообщество Vala на GitHub
Сравнение с другими языками
  • Вала и Ява
  • Вала и C #
  • Сравнение Vala с C # и C
  • Другие тесты Vala