LINUX.ORG.RU
ФорумTalks

Скажите мне, что я не одинок


0

2

Вкуриваю тут GObject. Ребята, это жесть полнейшая! Это что нужно было курить, чтобы такое сотворить?! Чувствую себя дауном.

Наверно нужна была веская причина, чтобы придумать GObject. Мне интересно, какая? Почему не писать просто на языках, которые поддерживают ООП?

И еще интересно, на лоре есть люди, которые вкурили? Снимаю шляпу!

★★★★★

А мне понравился gobject. Очень удобно, куча вкусных плюшек прилагается. Когда перетащил на него libxklavier, много стало проще и логичнее ИМХО.

Да, ООП на С - это для сильных духом. Но это лучше всяких недоОО поделок типа плюсов. А обжектив С как-то не прижился на линухе.

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

Нет, в последнее время я не пишу на Си :) Всё CL да Смолтоки всякие.

Но использовать буду непременно.

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

>А мне понравился gobject … Когда перетащил на него libxklavier

<troll>
За что его и выбросили из KDE
</troll>

А раньше оно на чём было?

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

> Да, ООП на С - это для сильных духом. Но это лучше всяких недоОО поделок типа плюсов.

зато на «недоОО поделке» есть FLTK, где статично слинкованный пример весит меньше 200Кб, не расскажете сколько весит статично слинкованный стандартный пример на GTK?

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

> статично слинкованный стандартный пример на GTK?

со всякими пангами, кэйрами, глибами и т.п. ес-но

ahonimous
()

Простота написания биндингов для других языков. Ниезменный ABI, что _очень_ важно для совместимости. Возьми программу, собери ее с gtk-2.14.2 с помощью gcc-3.2, потом подсунь ей gtk-2.20.1 собранный с помощью gcc-4.4 - и программа продолжит работать. Слабо повторить то же самое с программой на Qt и gcc-c++?

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

> Возьми программу, собери ее с gtk-2.14.2 с помощью gcc-3.2, потом подсунь ей gtk-2.20.1 собранный с помощью gcc-4.4 - и программа продолжит работать

если только не скажет, что glibc, с которым собран gtk-2.20.1, не найден - а так оно и будет, если его собирать на другой более «новой» машине

Слабо повторить то же самое с программой на Qt и gcc-c++?


а зачем?

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

Единственные биндинги, которые нужны, это к perl и python, возможно, к Java. Остальные не нужны.

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

> если только не скажет, что glibc, с которым собран gtk-2.20.1, не найден - а так оно и будет, если его собирать на другой более «новой» машине

Со «старой» системы на «новую» GTKшный софт переезжает безболезненно. А C++/Qt-шный - как правило, с пересборкой. И как следствие, с GTK я могу в любой момент могу накатить более новую версию GTK, будучи уверенным что кроме GLIB/GTK и его компонентов мне нет необходимости что-либо обновлять, и ничего не сломается.

no-dashi ★★★★★
()
Ответ на: комментарий от ahonimous

>что нахер никому не надо (fixed)

Поэтому эти ваши кеды так и не достигли уровня надежности ънтрпайзного Гнома!

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

Там почти ничего и нет :\

Нет множественного наследования. Ну нет так нет, в C++ тоже никто не заставляет.

То, что это отдельная либа тоже ничего не даёт само по себе.

On platforms where there is no standard ABI that works across all C++ compilers

which is not usually the case,



:)

The problem occurs in part because different C++ compilers use different kinds of name mangling to ensure the uniqueness of all exported symbols.


Не проще ли было затребовать что-нибудь одно в стандарте, чем изобретать GObject?

Perhaps the most profound difference is GObject’s emphasis on signals


Qt и Boost для C++ имеются.

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

tags:fat

Надеюсь, и не достигнут. Кому нужен KDE на моно? :}

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

> А C++/Qt-шный - как правило, с пересборкой. И как следствие, с GTK я могу в любой момент могу накатить более новую версию GTK, будучи уверенным что кроме GLIB/GTK и его компонентов мне нет необходимости что-либо обновлять, и ничего не сломается.

а вот недавно обновление в cairo( который нужен gtk ) сломало отрисовку в GIMP, Chromium и т.д. - вы конечно скажете, что ведь тут дело не в ABI, так нечестно и т.п., но я скажу вам одно - без пересборки, просмотра полученных варнингов и тестирования, уверенности в том, что «ничего не сломается» быть не может, хоть на С, хоть на С++

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

> Поэтому эти ваши кеды так и не достигли уровня надежности ънтрпайзного Гнома!

а я пользуюсь гномом :) хотя раньше пользовался КДЕ3 - отличная была DE, а испортилась она не из-за ненужной совместимости в ABI, а из-за самодурства разработчиков, и если б КДЕ3 продолжили пилить в правильном направлении - пользователей у гнома было бы намного меньше

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

>если б КДЕ3 продолжили пилить в правильном направлении - пользователей у гнома было бы намного меньше

Меньше на Целого Линуса? :)

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

> Меньше на Целого Линуса? :)

ну как минимум еще на меня :) а если по сути - очень много людей свалили с КДЕ после выхода 4.0, хотя опять же при правильном развитии КДЕ( с допиливанием имеющегося, а не ломанием и заменой на дебильные свистелки ) - было бы наоборот

ahonimous
()
Ответ на: комментарий от kost-bebix

>Хотя и все равно синтаксическая совместимость с Си, хотелось бы, чтоб отмерла и не было стыдно за такой «Hello, world» в 2010м году.

Примерно с 70-х никто не мешает писать хеллуворлды без использования Си-нтаксической совместимости :)

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

> Примерно с 70-х никто не мешает писать хеллуворлды без использования Си-нтаксической совместимости :)

Чё? Это как?

kost-bebix ★★
()
Ответ на: комментарий от Deleted

Его включили в КДЕ уже тогда, когда там был гобжект. А выкинули потом, в рамках чистки рядов. NIH синдром такой синдром:)

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

Это не NIH, это разумное действие, т.к. GObject в плюсах ни к чёрту не нужен. Хотя зачем добавляли вообще не понятно, знали же :}

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

> NIH синдром такой синдром:)

угу - для библиотеки размером в 50Кб тянуть 8Мб зависимостей( только для glib ) это просто офигеть какой NIH синдром

ahonimous
()

Конечно не одинок! У каждого есть пара человек которые его жутко ненавидят

Почему не писать просто на языках, которые поддерживают ООП?


Не православно же! И биндинги к С++ писать труднее

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

>Линус давно уже поплевался через оба плеча ив ернулся таки на кеды

ДА?? Что-то я сиё пропустил А новость на ЛОРе была?

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

гм, не, что-то я ничего такого не выгуглил

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

> А что - либхклавир был единственной внешней зависимостью кде, использующей глиб?

не знаю, но знаю точно, что любой нормальный программист должен избегать ненужных завязок - что разработчикам GTK, например, видимо неизвестно:

/usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-png.so
/usr/lib/pango/1.6.0/modules/pango-basic-fc.so
/usr/lib/libxml2.so.2.7.7
/usr/lib/libglade-2.0.so.0.0.7
/usr/lib/libgio-2.0.so.0.2510.0
/usr/lib/libgdk_pixbuf-2.0.so.0.2102.0
/usr/lib/libatk-1.0.so.0.3009.1
/usr/lib/libgdk-x11-2.0.so.0.2102.0
/usr/lib/libgtk-x11-2.0.so.0.2102.0
/usr/lib/libpangoft2-1.0.so.0.2800.1
/usr/lib/libpangocairo-1.0.so.0.2800.1
/usr/lib/libgmodule-2.0.so.0.2510.0
/usr/lib/libpango-1.0.so.0.2800.1
/usr/lib/libpixman-1.so.0.18.2
/usr/lib/libcairo.so.2.10910.0
/lib/libglib-2.0.so.0.2510.0
/usr/lib/libgthread-2.0.so.0.2510.0
/usr/lib/libgobject-2.0.so.0.2510.0

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

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

И чо? Программа использует GTK
GTK-шные сущности - это GObject'ы
Списки (чайлды внутри парента например) - это GLIB
Прорисовка - Cairo и GDK
Рендеринг шрифтов - pango
Двойная буферизация и загрузка пиксмапов движком - libpixman, libpixbufloader
Учет всяческих альтернативных способов ввода (вроде так?) ATK
Построение формы по ресурсу - Glade
Ресурс это XML - libxml
Окошко Open - gio
В чем проблема-то? Или тебе показать вывод rpm -ql qt4???

no-dashi ★★★★★
()
Ответ на: комментарий от ahonimous

И что, KDEшные или Qt-шные программы лучше, по-твоему?

[viking@viking-ws ~]$ ldd `which kate` | grep -v " /lib64"
	linux-vdso.so.1 =>  (0x00007fff41932000)
	libkdeinit4_kate.so => /usr/lib64/libkdeinit4_kate.so (0x00000038fea00000)
	libkateinterfaces.so.4 => /usr/lib64/libkateinterfaces.so.4 (0x00000038f7e00000)
	libkparts.so.4 => /usr/lib64/libkparts.so.4 (0x0000003907000000)
	libkio.so.5 => /usr/lib64/libkio.so.5 (0x0000003901000000)
	libQtNetwork.so.4 => /usr/lib64/libQtNetwork.so.4 (0x00000038fb400000)
	libQtXml.so.4 => /usr/lib64/libQtXml.so.4 (0x00000038fb000000)
	libkdeui.so.5 => /usr/lib64/libkdeui.so.5 (0x00000038fc600000)
	libQtGui.so.4 => /usr/lib64/libQtGui.so.4 (0x00000038ff600000)
	libQtSvg.so.4 => /usr/lib64/libQtSvg.so.4 (0x00000038fce00000)
	libkdecore.so.5 => /usr/lib64/libkdecore.so.5 (0x00000038fbc00000)
	libQtDBus.so.4 => /usr/lib64/libQtDBus.so.4 (0x00000038fb800000)
	libQtCore.so.4 => /usr/lib64/libQtCore.so.4 (0x00000038faa00000)
	libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000038f6600000)
	libkutils.so.4 => /usr/lib64/libkutils.so.4 (0x0000003904600000)
	libkde3support.so.4 => /usr/lib64/libkde3support.so.4 (0x000000390a600000)
	libktexteditor.so.4 => /usr/lib64/libktexteditor.so.4 (0x000000390d000000)
	libQt3Support.so.4 => /usr/lib64/libQt3Support.so.4 (0x000000390a000000)
И чем это лучше чем выхлоп гномовских библиотек?

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

> В чем проблема-то?

в том что программа на FLTK умещается в 150Кб со статичной линковкой, при этом:

«GTK-шные сущности» - это С++-е классы
«Списки (чайлды внутри парента например)» - это STL и/или сишные массивы
«Прорисовка» - xlib( которую и используют Cairo и GDK )
«Рендеринг шрифтов» - pango это не рендеринг если-что, а его выравнивание и размещение( один файл в FLTK ), для рендеринга и gtk( cairo ) и fltk используют freetype
«Двойная буферизация и загрузка пиксмапов движком» - пару файлов в самом fltk
«Учет всяческих альтернативных способов ввода» - зачем оно вообще в тулките по умолчанию
«Построение формы по ресурсу» - чтоб форма медленней создавалась?
«Ресурс это XML - libxml» - не нужно
«Окошко Open - gio» - это vfs, единственно что пожалуй надо

в итоге видим, что для gtk нагородили велосипедов на ровном месте

Или тебе показать вывод rpm -ql qt4???


а причем тут qt? я его ниразу не защищал - такой же монстр

ahonimous
()
Ответ на: комментарий от no-dashi

> И чем это лучше чем выхлоп гномовских библиотек?

я тебе показал зависимости gtk-й программы, а ты мне КДЕ-ой - разницу сам найдешь?

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

> Что же приложений в репозитории на этом чудном FLTK раз, два и обчелся?

потому-что он на С++ и не Qt - С++-ки выбирают Qt, и как по мне по таким причинам:

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

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

>Что же приложений в репозитории на этом чудном FLTK раз, два и обчелся?

Ну как что? У него же страшный вид a la win95, и виджетов продвинутых нет, и вообще… :)

fat_angel ★★★★★
()
Ответ на: комментарий от no-dashi

А тебе невдомёк, что полнофункциональная [b]КДЕ[/b]-шная программа немного отличается от Гтк-шного окна с одной кнопкой?

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

ну и из приложений, что есть в убунту:

alsamixergui
alsa-tools-gui
aconnectgui
seaview
zynaddsubfx
yoshimi
xpp
xdiskusage
wmanager
flwm
vbaexpress
tuxpaint-config
rakarrack
mathgl
posterazor
openmovieeditor
openexr-viewers
octave3.2
jargoninformatique
itksnap
horgand
goplay
gmsh
gmorgan
freepops-updater-fltk
fluid
fltk1.1-games
flpsed
flphoto
fldigi
fldiff
drawxtl
csound-gui
bist
ax25-xtools
aqsis
htmldoc

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

> Ну как что? У него же страшный вид a la win95, и виджетов продвинутых нет, и вообще… :)

fltk2 поддерживает стили, в том числе и gtk-е

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

> Ты хотел сказать «в дебиановских репах».

и там и там - так устроит?

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

> По моему fltk не сильно живее…

я оцениваю по активности разработчиков, для fltk каждую неделю выходят новые минорные версии, а fox уже умер

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

> а fox уже умер

беру свои слова назад - официальная версия была уже давно, но на ftp лежит:

fox-snapshot.tar.gz   4,7 MB   14.05.10 21:03:00

значит его еще развивают

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