Язык программирования Vala

Язык программирования Vala

В последнее время на каждом десктопе с ОС GNU/Linux и X-сервером установлены такие библиотеки, как GTK, GLib, GIO и прочие. Они являются наиболее часто используемыми библиотеками в пользовательской среде. Чтобы в этом убедиться, достаточно позапускать несколько программ с аргументом --help. На выходе увидим примерно следующее:

Как видим, у программы есть несколько категорий: Help Options, Application Options, а, также, могут быть и свои. Например, --help-gtk выведет список аргументов, которые влияют на работу библиотеки GTK.

РЕКОМЕНДУЕМ:
Язык программирования Julia

Изначально данные библиотеки написаны для языка C, который, однако, не годится для написания полноценных графических (и не только) приложений. Объясню, почему:

  • C не является ООП языком, в связи с чем все элементы, которые мы создаём — не объекты, что очень сильно усложняет написание приложений. Это легко заметить, просто попробовав написать программу на Gtk — изменяемый виджет (именно так именуются элементы интерфйса в gui-тулкитах) передаётся в качестве аргумента, а сама функция для изменения выглядит примерно так: gtk_window_set_title(win, "Test").
  • В C очень легко получить такую ошибку, как Segmentation Fault — по сути, отстрелить себе ногу. А найти её можно полноценно только с помощью отладчика. Профессионалы со мной могут не согласиться, но у новичков это может быть серьёзной проблемой.
  • И, наконец, собрать программу на C с использованием такой библиотеки, как Gtk может быть не очень просто, т. к. у компилятора нет такого аргумента, как --pkg, который сам находит, где находятся файлы библиотеки.

Да, существует Gtk# — библиотека для разработки GTK приложений на C#. Но из нативных средств остаётся только C и, возможно, С++ с его gtkmm.

В данной статье я хочу рассказать о таком языке, как Vala — на хабре их практически нет, а язык годный. Доказательство этому — приложения из проекта GNOME переезжают на этот язык, а некоторые на нём изначально написаны.

Итак. Vala — язык программирования с тремя парадигмами: Структурная, Императивная и ООП. Типизация — строгая, статическая. Существует вместе с ЯП Genie, у которого функционал похож, однако является приближенным к Python, в отличие от Vala, который больше похож на Java. Разработан был в 2006 году.

В качестве своей основы Vala использует GLib. Поэтому, разрабатывая приложение на Vala, вы точно знаете, что используете GLib.

Hello World на этом языке выглядит так:

С использованием ООП этот код может немного увеличиться, однако при написании сложных приложений это может быть полезно:

Комментарии в Vala выглядят так:

За компиляцию кода на vala отвечает такая программа, как valac — она парсит код в C (благодаря чему достигается скорость и простота создания привязок, о которых позже), а затем, пользуясь программой cc, компилирует готовый код. После она удаляет файлы .c, которые были сгенерированы во время парсинга.

РЕКОМЕНДУЕМ:
Язык программирования Ада

А теперь о пакетах: библиотеки в vala являются ни чем иным, как отпарсенными в C библиотеками и привязками для них. Чтобы подключить такой пакет, достаточно передать компилятору аргумент --pkg имя_пакета, после чего он станет доступен внутри приложения.

Вот так выглядит простая программа на Gtk:

Для компиляции этого кода достаточно добавить аргумент --pkg gtk+-3.0 (или gtk+-2.0, если предпочитаете писать на Gtk 2, однако я пишу на Gtk 3, что и вам советую)

Выглядеть же оно будет вот так:

Чтобы результат назывался не именем случайного файла из компилируемых, а так, как вы захотите, достаточно передать аргумент -o имя_файла.

В языке Vala нет такой директивы, как «#include» — для этой цели необходимо указать все файлы, которые необходимо скомпилировать. Wildcard’ы поддерживаются.

В Vala также присутствуют такие вещи, как дословные строки. Они работают так-же, как и в Python — в них можно использовать символ переноса строки (выводящийся клавишей return), а все ascii последовательности (включая \n) пишутся точно так-же, как их видно в коде.

РЕКОМЕНДУЕМ:
Программирование в консоли

Также существует способ вызывать пременные из строк. Для этого перед первой кавычкой необходимо поставить @, а перед названием нужной переменной — $. Не работает с дословными строками.

Решили начать писать на этом языке? Тогда Вам могут понадобиться следующие сайты:

Понравилась статья? Поделиться с друзьями:
Добавить комментарий