LINUX.ORG.RU
ФорумTalks

[ССЗБ] Какое же говно это наше GTK

 


0

3

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

Архитектурно оно представляет какое-то совершенно нелепое нагромождение классов, недоделанных недоабстракций и длинных списков deprecated функций. Нормального механизма обмена сообщениями между компонентами нет. Декомпозиции на абстрактные интерфейсы не прослеживается.

Компоненты зачем-то разбиты на две группы - оконные и безоконные - между которыми, пролегает такая хорошая, качественная железобетонная стена. Можно даже побиться об неё головой. Вместо того, чтобы на уровне архитектуры дать возможность любому компоненту работать как в отдельном под-окне, так и в окне родителя, предлагаются танцы с бубном EventBox.

Средства для кустомизации компонент наследованием находятся в зачаточном состоянии, а для кустомизации тонкой настройкой в рантайме - и вовсе в противозачаточном. Часть компонент нуждается в разбиении на субкомпоненты, например, ужасный GtkNotebook. Часть компонент просто написана задней лапой. Исходники производят полное впечатление, что перед нами не универсальный тулкит, на котором работает чертова уйма гуёв, а всё тот же костыльный набор виджетов для GIMP-а.

После программирования GUI на gtk, очень хочется тщательно отмыть руки от говна, а затем напиться от безысходности.

Тщательно отмой руки от говна, напейся, протрезвей и прекрати уже пилить свой ненужный таскбар.

thesis ★★★★★
()

Архитектурно оно представляет какое-то совершенно нелепое нагромождение классов, недоделанных недоабстракций и длинных списков deprecated функций.

deprecated

СС3Б

Andaril
()

Внимание, вышеприведённый текст подходит для 99% тулкитов и фреймворков.

Кроме творений божественного Андерса Хейсберга, конечно.

queen3 ★★★★★
()

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

Eddy_Em ☆☆☆☆☆
()

в тред призывается geek

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

Во-первых, там только плюсы, а во-вторых, слишком много ненужных велосипедов. Терпеть не могу 600 уровней абстракции. Чем ближе к делу, тем удобнее.

Eddy_Em ☆☆☆☆☆
()

Ололо. Я бы все-таки принял кетанову при такой попоболи.

baverman ★★★
()

> Средства для кустомизации компонент наследованием находятся в зачаточном состоянии, а для кустомизации тонкой настройкой в рантайме - и вовсе в противозачаточном

Ну вот сделал тут с cl-gtk2 что-то вроде gtk:array-list-store, только Sortable. Модель наследуется от array-list-store. Чем не «кустомизация в рантайме»? Или что ты имел в виду?

http://common-lisp.net/project/cl-gtk2/doc/gtk/array_002dlist_002dstore.html

different_thing
()

Литературный стиль хорош! А вот жирноты явно не хватает.

r_asian ★☆☆
()

не нравится - не пользуйся. или тебя дубиной по почкам дуплили, чтобы ты gtk использовал?

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

Пусть все эти любители кутей покажут столько интерфейсов для других языков, скока есть у gtk

Миллиарды мух (С)

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

Ничего подобного. В GTK ненужных сущностей наплодили намного меньше, чем в кутях.

А вообще, нормальная библиотека виджетов должна быть как можно более простой и прозрачной. А не так, как это есть - ничерта не понятно, что в ее «недрах» происходит и как на это повлиять...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от r_asian

Причем тут мухи? Это говорит о том, что знающему человеку такой интерфейс сделать - раз плюнуть. А с вашим кьютом, судя по кол-ву интерфейсов, возятся сто лет, прежде чем что-то выдадут. Ну либо ЦА такая, что кроме C++ ничего не нужно:)

different_thing
()

Ты прозрел.

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

perl, ruby, mono, python, php, cl, d, java (jambi, rip)

этого мало? да и вообще, с такой штукой, как smoke биндинг к любому скриптовому языку сделать несложно.

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

>Им там gcc нужен, чтобы оно заработало!

Кошмар какой. Не представляю, как жить с gcc в системе.

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

Прям так написано: make и gcc. Может скачаю и посмотрю, что там они собирают, если собирают вообще

different_thing
()

> После программирования GUI на gtk, очень хочется тщательно отмыть руки от говна, а затем напиться от безысходности.

у меня была аналогичная реакция на андроидный жабо-гуй. не знаю кому как, а мне gtk после него сказкой кажется :)

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

Ничего подобного. В GTK ненужных сущностей наплодили намного меньше, чем в кутях

Если что-то тебе не нужно, то просто не используй это. На Qt существенно удобнее писать.

А вообще, нормальная библиотека виджетов должна быть как можно более простой и прозрачной.

Qt и так проста и прозрачна и это не только библиотека виджетов.

А не так, как это есть - ничерта не понятно, что в ее «недрах» происходит и как на это повлиять...

Во-первых всё понятно, а во-вторых нефиг лезть в недра.

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

Когда Си пихают в GUI, то рождаются ужасы типа GTK. OO на сях это кошмар. Слишком многословно и слишком долго надо вникать в подобные программы.

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

На Сях самое то ООП. Особенно мне понравилось, как в DragonFlyBSD (FreeBSD?) сделано

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

> Вы всё ещё пишете на этом устаревшем гумне мамонта под названием C?

Вы таки предпочитаете pascal или fortran?

cvs-255 ★★★★★
()
Ответ на: комментарий от Reset

Если что-то тебе не нужно, то просто не используй это

Но при этом оно будет отжирать память и делать непонятно что.

Qt и так проста и прозрачна и это не только библиотека виджетов.

Насчет простоты и прозрачности не сказал бы. А насчет «не только библиотека виджетов» - вообще не понимаю, зачем ненужные прослойки плодить.

нефиг лезть в недра

а если хочется? :)

Кроме того, приведу пример, когда «лезть в недра» удобнее: работа со звуком в OSS наиболее проста, т.к. вы работаете почти на самом низком уровне; работа с RS-232 наиболее проста на сях; и т.д.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от different_thing

> Пусть все эти любители кутей покажут столько бесполезных интерфейсов для других языков, скока есть у gtk

исправлено

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

> Собирают какой-то .cpp файл, да.
ну так вроде so-шку с биндингом и собирает. биндинг пишется на cpp со smoke, потом эта библиотека используется как «посредник». что в этом плохого?

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

Ничего там кошмарного нет. Те же структуры данных.

ога, только при работе этими структурами данных 99% времени ты танцуешь гопак, а не занимаешься своей задачей

Reset ★★★★★
()

> перед нами не универсальный тулкит, на котором работает чертова уйма гуёв, а всё тот же костыльный набор виджетов для GIMP-а

Ну не сделать из трёхколёсного детского велосипеда спортивный гоночный велосипед. Хотя замаскировать «под...» можно, да.

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

Ничего подобного. Вот гуглить нормальные замены deprecated-функциям - да, приходится. Но это из-за анального зуда разработчиков. Все равно, если сравнить GTK и Qt, GTK - меньшее дерьмо.

Но то, что GTK - дерьмо, я не отрицаю :)

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

Но при этом оно будет отжирать память и делать непонятно что.

не будет

А насчет «не только библиотека виджетов» - вообще не понимаю, зачем ненужные прослойки плодить.

чтобы писать кроссплатформенные программы и самому не городить костыли оберток

Кроме того, приведу пример, когда «лезть в недра» удобнее: работа со звуком в OSS наиболее проста, т.к. вы работаете почти на самом низком уровне; работа с RS-232 наиболее проста на сях; и т.д.

Ну и ? Тебе религия запрещает использовать Qt и работать с этим на сях ? Кстати rs-232 в бусте обернут, поэтому проще будет на плюсах да еще и кроссплатформенно будет :)

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

Ничего подобного.

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

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

Еще раз: кроссплатформенность мне не нужна. Куча излишних оберток - тоже.

ручные преобразования типов и управление памятью у тебя будут сплошь и рядом.

Можно подумать, в плюсах такого нет. Просто оно немножко сокрыто.

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