Ответ 1
Есть и другие профили Vala, такие как Dova и Posix.
Я новичок в Вале. Я не знаком с GObject. Насколько я понимаю, GObject был выделен из проекта GLib из GNOME. Исправьте меня, если я ошибаюсь.
Мне очень нравится синтаксис и реализация Vala, но я не намерен писать настольные приложения для GNOME.
Я также знаю (думаю, знаю), что у Валы нет стандартной библиотеки, кроме самой GObject.
Итак, мой вопрос: может ли Vala использоваться без GObject, и если это возможно, можно ли его использовать (есть ли оптимальные и поддерживаемые базовые библиотеки для таких распространенных вещей, как преобразования типов, математика, манипуляции с строками, буферы и т.д.)?
Есть и другие профили Vala, такие как Dova и Posix.
TL;DR: я рекомендую использовать Vala с GLib/GObject, потому что он был создан поверх них.
Хотя могут быть альтернативные профили для valac, они либо незакончены, либо устарели.
Вся суть Vala заключается в уменьшении количества шаблона, необходимого для записи GLib и Gtk + приложений в C.
Он также добавляет некоторые приятные другие улучшения по сравнению с C, такие как строка и массив, являющиеся простыми типами данных, а не указателями с ошибкой.
В основном он охватывает все концепции, представленные в GObject, например:
Все эти концепции могут быть реализованы без использования GObject/GLib/Gio, но это означало бы в основном переписать GObject/GLib/Gio, что не имеет особого смысла.
Если вы не хотите писать приложения с графическим интерфейсом, GLib также может использоваться для написания консольных приложений, использование GIO или GTK + является необязательным в Vala, приложения также работают на безголовом сервере.
Я думаю, что в Qt есть даже некоторые усилия, чтобы в конечном итоге перейти к основному циклу GLib, что значительно облегчило бы взаимодействие Qt и GLib.
Хорошим примером структуры, использующей GLib, является GStreamer, который также используется в разных средах рабочего стола.
Вкратце:
GTK + изначально был получен из GIMP и с тех пор был разделен на различные библиотеки "G" , которые сегодня являются основой для GNOME.
Vala также имеет очень мощные механизмы привязки, чтобы упростить запись так называемых файлов "VAPI" для любой библиотеки C.
При правильных привязках к VAPI вам не нужно беспокоиться о ручном управлении памятью, указателях, нулевом завершении строк и массивов и некоторых других утомительных вещах, которые затрудняют запись правильного кода C.
Вот еще один профиль, который вы можете использовать Aroop. (Обратите внимание, что он все еще находится в тяжелом развитии). Надеюсь, это хорошо, если вам нужна высокая производительность. Пожалуйста, ознакомьтесь с здесь.