Можно ли использовать Vala без GObject?

Я новичок в Вале. Я не знаком с GObject. Насколько я понимаю, GObject был выделен из проекта GLib из GNOME. Поправьте меня если я ошибаюсь.

Мне очень нравится синтаксис и реализация Vala, но я не собираюсь писать настольные приложения для GNOME.

Я также знаю (думаю, что знаю), что у Vala нет стандартной библиотеки, кроме самого GObject.

Итак, мой вопрос: можно ли использовать Vala без GObject и, если можно, можно ли его использовать (есть ли оптимальные и поддерживаемые базовые библиотеки для общих вещей, таких как преобразование типов, математика, манипуляции со строками, буферы и т. Д.)?


person thwd    schedule 03.03.2012    source источник
comment
Фреймворк GObject не привязан к средам рабочего стола gnome. Вы можете использовать библиотеки GObject практически в любой форме Linux и даже в Windows.   -  person Mindbane    schedule 14.03.2012


Ответы (3)


Есть и другие профили Vala, такие как Dova и Posix.

person antoyo    schedule 03.03.2012
comment
Обратите внимание, что у вас не может быть классов в профиле Posix (или хотя бы [Compact]) - person ptomato; 05.03.2012

TL; DR: я рекомендую использовать Vala с GLib / GObject, потому что он был разработан на их основе.

Хотя для valac могут быть альтернативные профили, они либо незакончены, либо устарели.

Весь смысл Vala в том, чтобы уменьшить количество шаблонов, необходимых для написания приложений GLib и Gtk + на C.

Он также добавляет некоторые приятные другие улучшения по сравнению с C, например, строки и массивы являются простыми типами данных, а не указателями, подверженными ошибкам.

Он в основном охватывает все концепции, присутствующие в GObject, например:

  • классы
  • характеристики
  • наследование
  • делегаты
  • асинхронные методы
  • подсчет ссылок (который выполняется вручную в C + GObject и автоматическим, также известным как ARC в Vala)
  • типовая безопасность объектов
  • дженерики
  • наверное, намного больше ...

Все эти концепции могут быть реализованы без использования 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.

person Jens Mühlenhoff    schedule 22.09.2016

Вот еще один профиль, который вы можете использовать Aroop. (Обратите внимание, что он все еще находится в стадии интенсивной разработки). Надеюсь, это хорошо, если вам нужна высокая производительность. Ознакомьтесь с функциями здесь.

person shuva    schedule 09.08.2012