metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-02-13 12:55 am

qt

Наконец, вместо того, чтобы копировать qt с компа на комп и копаться в его исходниках, немного побаловался с написанием программ. Выводы:
1) qt creator (и возможно, сам qt) еще таки дорабатывать и дорабатывать. Глючит-с. Мне кажется, что это не уровень RC, это таки сырая бета.
2) qt не использует стандартных виндовских контролов вообще, судя по тому, что spyxx не видит ничего в проге кроме топ-левел окна.
3) Способ разработки гуя достаточно интересен, некоторые вещи интуитивно понятнее и удобнее дельфей и вижуал-студии.
4) Надо написать хотя бы одну полноценную прогу на этом деле, чтобы таки осознать, стоит дергаться ради галочки "можно писать кроссплатформенный GUI".

[identity profile] kiryl.livejournal.com 2009-02-13 12:31 pm (UTC)(link)
От всех извращений C++ они избавится всё равно не смогут.
От потери производительности на ровном месте. Например, длиннющие имена символов. Динамическому линковщику приходится перелопачивать дикие объймы данных, только что бы сделать все relocations. Дриппер считал сколько строк нужно сравнить динамическому линковщику для запуска OpenOffice 1.0. Получилось порядка 18.5 мегабайт!
Это этого Qt никуда не деться.

[identity profile] max-posedon.livejournal.com 2009-02-13 12:35 pm (UTC)(link)
1. запуск app != производительность app
2. решения этой проблемы нет нигде, вы можете написать подобный API на C, тока в нём всё равно будут длиннющие имена, тупо потому что методов *много*
3. медленный старт openoffice-а был обусловлен совершенно другой бедой, а не кол-вом библиотек с котороыми ему надо было слинковаться
4. 20Mb это совсем немного

[identity profile] kiryl.livejournal.com 2009-02-13 12:46 pm (UTC)(link)
1. Я в курсе. Это всего лишь пример. Можно ещё вспомнить про таблицы виртуальных методов.
2. libgtk-x11-2.0.so -- средняя длинна символа 25.2. libQtGui.so.4 - 35.9. К тому же в случае C, strcmp, как правило, обнаруживает неравенство раньше ибо в символах нет неймспэйсов и имён классов.
3. Мы тут не OO обсуждаем.
4. Ну-ну.

[identity profile] max-posedon.livejournal.com 2009-02-13 12:50 pm (UTC)(link)
2. статистика это 3й вид лжи, и кстати это снова о старте app. И ещё, сигнатуры C и C++ начинаются с типов на моей памяти, namespace-ы врятли причём к strcmp в таком случае

[identity profile] kiryl.livejournal.com 2009-02-13 12:54 pm (UTC)(link)
Попробуйте распечатать отсортированный список символов libQtGui.so.4. Там всё хорошо видно.

[identity profile] max-posedon.livejournal.com 2009-02-13 01:30 pm (UTC)(link)
objdump -R /usr/lib/qt4/libQtGui.so.4 | awk '{ print $3 }' | sort

фрагмент из середины, namespace-ов не вижу, вижу тока class-методы, + в начале сигнарутура типа

_ZN24QAbstractEventDispatcher11closingDownEv
_ZN24QAbstractEventDispatcher11filterEventEPv
_ZN24QAbstractEventDispatcher8instanceEP7QThread
_ZN24QAbstractPageSetupDialog16staticMetaObjectE
_ZN24QAbstractPageSetupDialog16staticMetaObjectE
_ZN24QPlainTextDocumentLayout16staticMetaObjectE
_ZN25QAbstractItemModelPrivate11rowsRemovedERK11QModelIndexii
_ZN25QAbstractItemModelPrivate16staticEmptyModelEv
_ZN25QAbstractItemModelPrivate20rowsAboutToBeRemovedERK11QModelIndexii
_ZN27QAbstractTextDocumentLayout16staticMetaObjectE
_ZN27QAbstractTextDocumentLayout16staticMetaObjectE
_ZN27QAbstractTextDocumentLayout16staticMetaObjectE
_ZN27QEventDispatcherGlibPrivateC2EP13_GMainContext


[identity profile] max-posedon.livejournal.com 2009-02-13 01:32 pm (UTC)(link)
Да кстати, и не мог увидеть, в Qt классы не лежат ни в каком namespace-е, у вас снова Epic Fail

[identity profile] kiryl.livejournal.com 2009-02-13 02:06 pm (UTC)(link)
Да, кстати, перечитал свои посты и не смог увидеть, где я говорю, что в Qt классы лежат в namespace'ах, у вас снова Epic Fail.

[identity profile] max-posedon.livejournal.com 2009-02-13 02:08 pm (UTC)(link)
За то ты всегда тему Qt зачем-то генерализовывал к тебе C++, как я не просил тебя этого не делать.

Приятного аппетита троль.

[identity profile] kiryl.livejournal.com 2009-02-13 02:03 pm (UTC)(link)
К примеру у меня в libQtGui.so.4 72 символа начинаются с _ZN19QApplicationPrivate, думаю это не предел.

[identity profile] max-posedon.livejournal.com 2009-02-13 02:09 pm (UTC)(link)
если бы у вас было 72 функции которые работали бы в Application модуле вы бы их нахвали
application_private_{72 функции} и было бы тоже самое.