Vala

Vala - мова програмування, призначений для прикладного та системного програмування на основі бібліотек GLib Object System ( GObject) робочого середовища GNOME / GTK +. Мова був розроблений Йюргом Біллетером (Jrg Billeter) і Раффаеле Сандріні (Raffaele Sandrini).


1. Основні особливості

Vala зі свого синтаксису дуже схожий на C # і повністю реалізує об'єктно-орієнтований підхід. Підтримуються інтроспекція, збірка сміття заснована на підрахунку посилань, лямбда-функції, концепція сигналів та слотів, подібна використовуваної в Qt, але реалізована на рівні мови, рядкові типи, узагальнені типи, зрізи масивів, оператор перерахування елементів колекції foreach (), делегати, замикання, інтерфейси, властивості та виключення.

Особливість системи розробки полягає в тому, що програма на Vala транслюється в програму на мові C, яка в свою чергу компілюється у виконуваний код цільової платформи зі стандартними бібліотеками C, Glib і виконується зі швидкістю відкомпілювати в об'єктний код цільової платформи додатка C. При наявності в програмі графічного інтерфейсу користувача під час компіляції використовується бібліотека GTK +. Завдяки такому підходу відкомпільований код на Vala бінарному сумісний з системними бібліотеками, написаними на C. Для підключення сторонніх бібліотек до програм на мові Vala використовуються спеціальні vapi-файли, в яких описується інтерфейс бібліотеки. Для багатьох бібліотек вже існують vapi-файли, що входять в штатну поставку компілятора Vala [2]. Крім того, є vapi-файли для бібліотек, підтримувані сторонніми користувачами, поки не включені в штатну поставку [3].

Існують неофіційні збірки компілятора для ОС Windows, підтримувані сторонніми розробниками.


2. Причини створення

Мова Vala був створений для ефективної розробки на платформі GNOME складних прикладних і системних додатків з графічним інтерфейсом користувача, що базується на стандартній бібліотеці GTK +, із застосуванням сучасних мовних засобів і технік програмування.

Об'єктно-орієнтовані мови Java і C # надають програмісту досить можливостей, але їх програми виконуються у віртуальних машинах, що унеможливлює пряме звернення до них з бінарного коду на мові C, як і використання в таких програмах системних низькорівневих бібліотек, таких як GObject. Тому ці мови, як і будь-які інші, які виконують байт-код в віртуальних машинах, не можуть бути прийняті в рамках платформи GNOME. Керовані додатки мають також обмеження в продуктивності, що є критичним для роботи деяких програм (наприклад, системних), які повинні виконуватися в бінарному коді ( ABI). Це і стало причиною появи нової мови Vala.


3. Приклади коду

3.1. Приклад № 1

Проста програма " Hello World "

 int  main  (  )  {  print  (  "Hello World  \ N  "  )  ;  return  0  ;  } 

3.2. Приклад № 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.3. Приклад № 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 - live.gnome.org / Vala / Release (Англ.) . (Недоступна посилання - історія - web.archive.org / web / * / http://live.gnome.org/Vala/Release)
  2. Bindings Status - live.gnome.org / Vala / BindingsStatus (Англ.) . Читальний - www.webcitation.org/664EzGUkh з першоджерела 10 березня 2012.
  3. External Bindings - live.gnome.org / Vala / ExternalBindings (Англ.) . Читальний - www.webcitation.org/664EzhZUW з першоджерела 10 березня 2012.

5. IDE

6. Програмне забезпечення

  • Shotwell - photo organizer
  • Fillmore - multitrack record
  • Lombard - video edit