LINUX.ORG.RU

Тем кто не любит Qt.


0

3

Тем, из числа разработчиков, кто не любит Qt просьба в этом треде аргументированно указать его основные (с вашей точки зрения) недостатки, а также средства, которые их не имеют.
Впрочем, любителей Qt это тоже касается.

Вопрос встал в связи с тем, что я еще не совсем программист (2 курс), но сейчас практически все пишу на С++ с использованием Qt (если требуется и оправдано, конечно). Возможно, я упустил из виду другие интересные и удобные средства разработки.

//Лисп не предлагать.

//Модераторам: Уважительная просьба перенести в толксы, если считаете, что в девелопменте этому не место.

★★★

Последнее исправление: unikoid (всего исправлений: 1)

такие треды нужно резать по 4.3 с (-20), потому что умный человек сам найдет ответы на такие вопросы, а троллям нужно давать по шапке.

mono ★★★★★
()

Зря ты так от лиспа сразу отгораживаешься.
На мой взгляд тебе стоит для расширения кругозора изучить еще яву и что-нибудь из функциональщины. Тогда ты сам сможешь делать выбор.

А вообще Qt хорош и замечателен. Если чего-то и не хватает, так это автоматической сериализации. Но это мечты... (Хотя, возможно, я просто плохо почитал документацию).

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

Конечно мечты. Ибо это требует интерскопии объекта

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

Да что у вас за мода, порезать все и вся вокруг?
Может быть человеку на самом деле это важно и он не может определится. Я тоже в свое время был в подобной ситуации.

trex6 ★★★★★
()

1. Нельзя копировать QObject, из-за этого обилие указателей в библиотеках Qt и коде, написанных с его помощью. 2. Сигнатуры сигналов проверяются в рантайме. Тут есть недостатки, но есть и достоинства. Хотелось бы всё-таки сигналы на шаблонах.

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

Это ненавязчивое предложение грохнуть тему?

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

>На мой взгляд тебе стоит для расширения кругозора изучить еще яву
Да, тоже думаю об этом.

и что-нибудь из функциональщины.

Изучить для себя - возможно (на днях как раз начал SICP читать), но сдавать в универе что-либо на функциональщине не представляются возможным.

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

> А вообще Qt хорош и замечателен. Если чего-то и не хватает, так это автоматической сериализации. Но это мечты... (Хотя, возможно, я просто плохо почитал документацию).

QDataStream, не?

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

> Нельзя копировать QObject, из-за этого обилие указателей в библиотеках Qt и коде

Ой-ли. Назовите хоть один тип, для которого можно было бы применить копирование, и что это делало бы?

Хотелось бы всё-таки сигналы на шаблонах.

Ну не. Такого не надо

namezys ★★★★
()

Гуйню удобней писать на скриптовых языках (типа Питона), а в качестве платформы общего назначения Qt - не самый лучший выбор, ибо C++. Уметь клепать на Qt - полезно, но зацикливаться на нём точно не стоит.

Знакомься со всем подряд :)

mv ★★★★★
()

нехватает виртуальной машины и GC. Ах да, и рефлексии человеческой, QMetaObject убог.

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

Так модерируй, модератор. Запарили уже устраивать тролксы в девелопменте. Хотите звезд - пишите новости.

...

Апи жирнющ плюс море всего и вся. Я был бы рад, если Qt умел лишь удобно рисовать няшные окошечки.

staseg ★★★★★
()

D-pointer'ы применены не всегда к месту.

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

> Qй-ли. Назовите хоть один тип, для которого можно было бы применить копирование

Любой, отнаследованный от QObject.

Ну не. Такого не надо

Почему? Неужели не хочется проверять типы в рантайме, а если хочется убедиться, что сигнал правильно соединён, писать тесты, которые покрывают весь код, где есть QObject::connect?

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

>нехватает виртуальной машины

Для таких как вы придумали яву и дотнет с моно.

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

Мне не понравилось на нем программировать - многословно очень, что ли. И окошки не няшными получаются.

Впрочем на работе я отказался гуи колбасить, и это совсем не мой фан, так что сейчас уже пофиг:).

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

> Любой, отнаследованный от QObject.

Да ладно. QWidget хотя бы не должен копироваться

Неужели не хочется проверять типы в рантайме, а если хочется убедиться, что сигнал правильно соединён, писать тесты, которые покрывают весь код, где есть QObject::connect?

Хочется. Но и хочется не знать детальную информацию о типе объекта, к которому цепляешься

namezys ★★★★
()

>Вопрос встал в связи с тем, что я еще не совсем программист (2 курс)

Видишь ли, я мог бы тебе аргументированно объяснить, почему Qt говно, и почему ее хваленая документация по уровню даже хуже gtk'шной (спасают только examples с исходниками, но qt-demo гораздо более убого, чем gtk-demo, потому что за исходниками надо лезть в assistant), но ты этого не поймешь. Это все равно что рассказывать годовалому малышу о половом размножении человека.

Просто поверь на слово, от Qt балдеют вчерашние MFC'шники. Дотнетчики брезгливо морщатся, Ъплюсобыдлокодеры презрительно фыркают, сишники вообще не понимают, кому может понадобиться этот зоопарк велосипедов с колесами сомнительной формы.

linuxfan
()

отвратительный интерфейс с хорошей реализацией. главный минус - то, что Qt это каркас на расширенном C++: система событий прибита гвоздями, биндинги пишутся долго и мучительно (что кроме PyQt реально работает?), нормально пользоваться можно только в связке с C++ (и то - с ограничениями, накладываемыми MOC)

у того же Tk (в контексте GUI) ситуация обратная: хороший C API, бездна биндингов, библиотека легко эмбеддится в проект - но при этом хреновая реализация свистелок

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

> Просто поверь на слово, от Qt балдеют вчерашние MFC'шники.

Просто поверь. GTK делали выходцы из мира ассемблера и С. Так чтоб выбора нет

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

> Да ладно. QWidget хотя бы не должен копироваться

Не должен. Но непонятно, почему нельзя скопировать QBuffer. Непонятно, почему если я хочу заюзать интроспекцию (например Q_PROPERTY), а сразу теряю возможность копировать объект, потому что он должен быть QObject.

Но и хочется не знать детальную информацию о типе объекта, к которому цепляешься

Как минимум необходимо знать, что данный объект содержит нужный слот. Поэтому совсем без информации о типе не получится. Если хочется использовать разные классы, можно отнаследовать их от класса с нужными слотами.

anonymous
()

Всё плохо с исключениями. Многие вещи на шаблонах смотрелись бы роднее.

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

>Видишь ли, я мог бы тебе аргументированно объяснить, почему Qt говно, и почему ее хваленая документация по уровню даже хуже gtk'шной <...>, но ты этого не поймешь. Это все равно что рассказывать годовалому малышу о половом размножении человека.

Тогда можете попробовать объяснить мне. Не троллинга ради, на самом деле интересно, чем не устраивает документация по Qt и почему Qt такой плохой фреймворк для С++

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

> Но непонятно, почему нельзя скопировать QBuffer.

А почему должны? Он ведет себя как значение.

Если хочется использовать разные классы, можно отнаследовать их от класса с нужными слотами.

Палка с 2мя концами

namezys ★★★★
()

сейчас практически все пишу на С++ с использованием Qt [..] просьба в этом треде аргументированно указать его основные (с вашей точки зрения) недостатки

главное не думай что ты пишешь на С++, потому что потом, если тебя вдруг посадят за голый С++, будешь много и часто удивляться и плеваться

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

> А почему должны? Он ведет себя как значение

В С++ есть синтезируемый конструктор копирования. Его выкидывание сужает область использования. Для этого есть какие-то основания?

Палка с 2мя концами

Расскажите про 2-й конец. Хочется узнать, чем так плохо знать информацию о типе (даже части типа).

И что там по поводу Q_PROPERTY и невозможности копирования?

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

такие треды нужно резать по 4.3 с (-20), потому что умный человек сам найдет ответы на такие вопросы, а троллям нужно давать по шапке.

вот и начните с того что дайте себе по шапке, ТС задал нормальный вопрос

shty ★★★★★
()

Если касательно гуйни - tk

плюсы - стабильность, обратная совместимость, есть привязки к стопицоттыще языков, малотребовательность к ресурсам

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

>Просто поверь. GTK делали выходцы из мира ассемблера и С. Так чтоб выбора нет

Я считаю, тактодрочер по-любому лучше, чем MFC-ненатурал.

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

> умный человек сам найдет ответы на такие вопросы, а троллям нужно давать по шапке.

при таком раскладе весь лор надо порезать, ибо 99.9% лора суть баян. останутся только стишки в толксах, да.

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

> В С++ есть синтезируемый конструктор копирования. Его выкидывание сужает область использования. Для этого есть какие-то основания?

Копируются значения. А не поведение.

Скопировать окно? Скопировать потоковый буфер ввода/вывода? Что еще хотите копировать и куда?

И что там по поводу Q_PROPERTY и невозможности копирования?

Об этом не думал. Тут особых причин не вижу. Все видать упирается в QObject

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

>Не троллинга ради, на самом деле интересно, чем не устраивает документация по Qt

Своей непонятностью. В большинстве своем это унылое доксигеновское говно со всеми вытекающими, а именно: написано косноязычными программистами и максимально сжато. К примеру, в разделе о ListView ни одна тварь не сознается, почему этот view молча игнорирует все столбцы, кроме первого. И только наследственный MFCшник знает, что multicolumn list view — это на самом деле TreeView.

почему Qt такой плохой фреймворк для С++

Потому что он «вещь в себе», при этом очень большая, но крайне ограниченная. По пунктам:

1. «Вещь в себе» — отсутствует интеграция с внешним миром и другими библиотеками. Даже контейнеры свои собственные зачем-то написали, хотя и клянутся, что это жизненно необходимо было. В 1996-м году — да, на embedded платформах — возможно. В 2010 году их Q* говно нахрен никому не нужно.

2. Qt монструозно. Огромная библиотека, в которой есть и работа с сетью, и парсер XML, и GUI, и потоки и еще дохрена всего (даже компонент браузера). Напоминаю: чем сложнее интсрумент, тем сложнее его использовать.

3. Ограниченность Qt. При всем огромном наборе классов, на всех на них лежит штамп «designed to use with Q* in Q* cases». Стоит чуть отойти в сторону от того, как по мнению разработчиков надо было использовать этот класс — и все, приехали. Велкам ту недокументированные грабли.

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

> Напоминаю: чем сложнее интсрумент, тем сложнее его использовать.

У.. cocao от Apple совсем сложный тогда. Там столько компонентов.

Стоит чуть отойти в сторону от того, как по мнению разработчиков надо было использовать этот класс — и все, приехали.

А где не так?

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

[qoute]Своей непонятностью. В большинстве своем это унылое доксигеновское говно со всеми вытекающими, а именно: написано косноязычными программистами и максимально сжато.[/qoute]
Бредишь? Или предпочитаешь маркетоидный бред для маркетологов?

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

И только наследственный MFCшник знает, что multicolumn list view — это на самом деле TreeView.

Вообще-то QTableView, что вобщем-то логично.

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

>Или предпочитаешь маркетоидный бред для маркетологов?

info libc прояснит тебе, что именно я предпочитаю. А также man'ы из 2-го и 7-го разделов. Это образец для написания документации.

Doxygen'овское говно — это бред сивой кобылы, а не документация. И так не один я считаю, кстати. Досадно, что это говно по каким-то причинам прижилось.

linuxfan
()

у него нет C API (я программирую на C) GTK не имеет этого недостатка.

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

ой. он с qt плохо скрещивается иногда. в нем проблемы

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