TLDR: я рекомендую использовать Vala с GLib / GObject, потому что он был спроектирован поверх них.
Хотя могут быть альтернативные профили для valac, они либо незакончены, либо устарели.
Весь смысл Vala состоит в том, чтобы уменьшить количество шаблонов, необходимых для написания приложений GLib и Gtk + в C.
Он также добавляет некоторые приятные другие улучшения по сравнению с C, такие как простые строки и массивы.типы данных вместо указателей, подверженных ошибкам.
В основном он охватывает все концепции, присутствующие в GObject, такие как:
- классы
- свойства
- наследование
- делегаты
- асинхронные методы
- подсчет ссылок (который является ручным в C + GObject и автоматический aka ARC в Vala)
- тип безопасности объектов
- generics
- вероятно, намного больше ...
Все эти концепции могут быть реализованы без использования GObject / GLib / Gio, но это будет означать, по сути, переписать GObject /GLib/ Gio, который не имеет особого смысла.
Если вы не хотите писать приложения с графическим интерфейсом, GLib также можно использовать для написания консольных приложений, использование GIO или GTK + не является обязательным в Vala, приложения работают наи безголовый сервер.
Я думаю, что в Qt даже есть некоторая попытка в конечном итоге переключиться на основной цикл GLib, что значительно упростит взаимодействие с Qt и GLib.
Хороший примерфреймворка, в котором используется GLib - GStreamer, который также используется в различных средах рабочего стола.
В итоге:
- GLib - базовая платформа кроссплатформенных приложений
- GObject - это объектная система, используемая экосистемой GLib.
- GIO - это абстракция ввода / вывода (сеть, файловая система и т. Д.), Основанная на GLib + GObject
- GTK + - это графический инструментарий пользовательского интерфейса, основанный наGLib + GObject + GIO + другие
- GNOME - это среда рабочего стола, основанная на всех технологиях "G"
- Vala - проект языка программирования высокого уровняЧтобы уменьшить объем работы, необходимо использовать библиотеки "G" из языка C.
GTK + изначально пришел из GIMP и с тех пор был разделен на различные библиотеки "G", которые являются основой для GNOME.сегодня.
В Vala также есть очень мощные механизмы привязки, позволяющие легко писать так называемые "VAPI" -файлы для любых библиотек языка C.
С правильными привязками VAPI вы не сможетене нужно беспокоиться о ручном управлении памятью, указателях, нулевом завершении строк и массивов и некоторых других утомительных вещах, которые так затрудняют написание правильного C-кода.