LINUX.ORG.RU

[вброс][слоупок][жж]GObjectIntrospection

 , ,


0

1

Посмотрел я на это дело, наконец. Ну что можно сказать? Объектная модель GObject уже стала «реальной» (включающей время исполнения), а не фейковой (только во время компиляции), как это в обычных плюсах. С другой стороны, мне стало интересно... граждане Qt-йщики, если сам язык плюсов не является Ъ ОО, есть ли в Qt интроспекция в каком-то виде? Как оно выглядит, юзабельно ли?

★★★★★

есть ли в Qt интроспекция в каком-то виде? Как оно выглядит, юзабельно ли?

Есть и вполне не плохая. Юзабельна. Хотя плотно не сталкивался.

Ximen ★★★★
()

А что, уже допилили? Вот клёво. И никаких moc'ов!

yoghurt ★★★★★
()
Ответ на: комментарий от Ximen

Спасибо. Да, похоже на то самое. И что - про любой кутешный объект можно получить эту мета-инфу? А где оно хранится на диске и во время выполнения?

А вообще забавно, как явно это все демонстрирует, как монстроидальные плюсы не справляются со своей первичной задачей - быть ОО языком. Приходится надстраивать объектную модель.

svu ★★★★★
() автор топика
Ответ на: комментарий от svu

>[вброс]

Любимые темы для флейма:

1. KDE vs GNOME


2. Плюсы гадость


Вброс на первую тему не вышел, переходим к плану Б ;-)

А где оно хранится на диске

Как я понял, оно не хранится, надо в рантайме, и именно поэтому мне больше нравится GObjectIntrospection. Хотя могу ошибаться, Qt-шники лучше знают.

vga ★★
()
Ответ на: комментарий от svu

И что - про любой кутешный объект можно получить эту мета-инфу?

Про те, чьи классы должным образом оформлены. Всякими Q_PROPERTY, Q_INVOKABLE, Q_SLOT, Q_SIGNAL.

Begemoth ★★★★★
()

Ну так сам GObject давно был реальным, и этим вовсю пользовались биндинги. Проблема в том, что GObject - это не полная объектная система, она не покрывает всего; в частности, в GObject вообще никак не представлены методы классов и, соответственно, возможности по их переопределению в наследниках - это все делается вручную, зная структуру таблицы виртуальных функций.

GObjectIntrospection частично исправляет эту проблему плюс решает несколько других проблем.

dmitry_vk ★★★
()
Ответ на: комментарий от dmitry_vk

Без интроспекции мне сложно счесть это реальным объектом;)

svu ★★★★★
() автор топика
Ответ на: комментарий от svu

>А вообще забавно, как явно это все демонстрирует, как монстроидальные плюсы не справляются со своей первичной задачей - быть ОО языком.
А RTTI разве не является реализацией этой самой интроспекции? Или я неправильно понимаю, что это такое?

unikoid ★★★
()
Ответ на: комментарий от unikoid

ЕМНИП, RTTI очень слабый и кривой механизм. Впрочем, я давно на это смотрел.

svu ★★★★★
() автор топика
Ответ на: комментарий от unikoid

>А RTTI разве не является реализацией этой самой интроспекции? Или я неправильно понимаю, что это такое?

С помощью RTTI нельзя сделать банальную вещь: получить по имени класса список его членов (переменных и методов), а также структуру vtable и нельзя в рантайме создать свой класс.

dmitry_vk ★★★
()
Ответ на: комментарий от dmitry_vk

>С помощью RTTI нельзя сделать банальную вещь: получить по имени класса список его членов (переменных и методов), а также структуру vtable и нельзя в рантайме создать свой класс.

Ну вот, только хотел это написать :)

Вообще у плюсов есть Boost Traits, и ещё что-то от CERN (название и ссылку забыл), но, конечно, это не идёт ни в какое сравнение с CL'ным MOP.

yoghurt ★★★★★
()
Ответ на: комментарий от svu

> А вообще забавно, как явно это все демонстрирует, как монстроидальные плюсы не справляются со своей первичной задачей - быть ОО языком.

Насколько я помню, С++ всегда считался general purpose multi-paradigm language, и первичной задачей ОО не ставил. По крайней мере Страуструп так отнекивается. :-)

smh ★★★
()
Ответ на: комментарий от smh

По крайней мере Страуструп так отнекивается

ЕМНИП это он сейчас так отнекивается, а ведь язык сначала назывался C with Classes.

Begemoth ★★★★★
()
Ответ на: комментарий от yoghurt

> не идёт ни в какое сравнение с CL'ным MOP

это да, по непрактичности и оторванности от реального мира CLOS MOP впереди планеты всей

anonymous
()
Ответ на: комментарий от anonymous

>это да, по непрактичности и оторванности от реального мира CLOS MOP впереди планеты всей

Я использовал CLOS MOP и могу сказать, что CLOS MOP — это одна из самых практичных и полезных систем метапрограммирования для ООЯП.

dmitry_vk ★★★
()
Ответ на: комментарий от baverman

>Неужели можно будет писать приложения с отзывчивым интерфейсом не использую костыли?

А их и сейчас никто не мешает пистаь.

dmitry_vk ★★★
()
Ответ на: комментарий от baverman

>То-то их почти все на свинге и лепят, я погляжу.

Это их личные проблемы.

dmitry_vk ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.