gtk или qt что выбрать

GTK или QT: причина выбора

Re: GTK или QT: причина выбора

>Чем вы руководствовались при выборе gtk или qt- based system?)

Не руководствуюсь при выборе софта используемым тулкитом. И смотрю на выбирающих по тулкиту как на говно.

Re: GTK или QT: причина выбора

а че тут руководствоваться? СТавить и qt и gtk. Это как-то повлияет на производительность?

Re: GTK или QT: причина выбора

я выбираю ДЕ, а не тулкит.

Re: GTK или QT: причина выбора

qt/kde приложения выглядят красивее и работать с ними удобнее чем с gtk аналогами. никаких религиозных предрассудков по поводу запуска gtk приложений под kde не имею

Re: GTK или QT: причина выбора

>Не руководствуюсь при выборе софта используемым тулкитом. И смотрю на выбирающих по тулкиту как на говно.

Re: GTK или QT: причина выбора

Сейчас вот у меня решается вопрос на чем программировать. Если честно, на qt для меня легче. Хотя gtk тоже хочется освоить. На первое время, mono + gtk# исследую. Может когда-нибудь и нативный gtk освою.

Re: GTK или QT: причина выбора

Re: GTK или QT: причина выбора

Если не ради флэйма, а по делу.

Qt:
1. Кроссплатформенность
2. Легкая портируемость на другие архитектуры
3. Не трубует библиотеки X (всякие минимальные embedded окружения на GTK тянут за собой Xlib)
4. Написано на С++, и хорошо вписываются в концепцию ООП
5. Много портов на другие языки
6. Очень хорошо оформлена документация по API

Возможно что-то еще из главного забыл.

Re: GTK или QT: причина выбора

Только недалекий человек может сам себе ограничивать свободу выбора.

Re: GTK или QT: причина выбора

GTK под вендой тормозит местами.

Re: GTK или QT: причина выбора

>Чем вы руководствовались при выборе gtk или qt- based system?)

Re: GTK или QT: причина выбора

Пользуюсь как gtk так и qt софтом, никаких предрассудков не имею на почве тулкитов. Но если прога тянет с собой кишки KDE, то естественно отправляется фтопку, ибо одна DE у меня уже есть, и половина другой мне нафиг не нужна.

Re: GTK или QT: причина выбора

место мало 2 тулкита ставить

Re: GTK или QT: причина выбора

Пользуюсь и одной и второй, причем вместе с ДЕ. Для работы был выбран гном, а дома используется КДЕ3 (четверка не стоит ибо лень собирать ее и допилить на генте). А для ноутбука была выбрана бубунта (стыдно, каюсь, но, блин, все железо заработало почти сразу, лишь алсу пришлось руками пересобирать), соответсвенно, тоже с гномом.

Re: GTK или QT: причина выбора

Re: GTK или QT: причина выбора

Использую софт на обоих библиотеках, Qt люблю больше, потому как программирую с использованием этой библиотеки немного.

Re: GTK или QT: причина выбора

>место мало 2 тулкита ставить

Источник

В чем разница между GTK + и Qt?

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

Но когда вы переключились на Linux, проблема внезапно стала актуальной. Это потому, что насколько хорошо приложение интегрируется с остальной частью вашего рабочего стола, часто возникает вопрос: сделано ли оно в GTK + или Qt?

Что такое GTK + и Qt?

GTK + и Qt — это наборы инструментов, используемые разработчиками для структурирования внешнего вида и ощущения приложения. Эти наборы инструментов предоставляют кнопки, панели инструментов, ползунки и меню, которые вы видите при использовании приложения.

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

История GTK + и Qt

Haarvard Nord и Eirik Chambe-Eng начали разработку Qt в 1991 году. Название, которое произносится как «милый», появилось из-за того, как буква Q выглядела шрифтом Eavcs Haavard, и из-за предыдущего использования буквы t в Xt, X инструментарий уже используется на рабочих столах Unix.

Nord и Chambe-Eng позже стали соучредителем Quasar Technologies, которая стала Throll Tech, затем Throlltech, и теперь существует в другой форме, как The Qt Company.

В 1995 году Throll Tech выпустила исходный код для версии Qt для Linux. Но это не соответствовало определению Free Software Foundation в отношении свободного поскольку людям не разрешалось распространять код, если они вносили какие-либо изменения. Лишь в 2000 году Throlltech предоставил пользователям свободу свободно редактировать и распространять код.

GTK + начинался как GIMP Toolkit, созданный Питером Маттисом в качестве замены существующего интерфейса, используемого в программе манипуляции изображениями GNU. После переписывания инструментарий стал GTK + и был выпущен в 1998 году. В отличие от Qt, у людей была свобода редактировать, изменять и делиться GTK + с самого начала.

Хотя Qt в некотором смысле является более универсальным и адаптируемым инструментарием, сообщество в течение первых лет консолидировалось вокруг GTK +. Стоит также отметить, что некоммерческий фонд GNOME теперь поддерживает GTK +, в то время как публично торгуемая компания The Qt Company ведет разработку Qt. Тем не менее, на данный момент ни один инструментарий не является «более бесплатным», чем другой.

Настольные ПК и программное обеспечение на базе GTK

Если вы недавно перешли на Linux, есть большая вероятность, что вы используете настольный компьютер на базе GTK. Это потому, что во многих из лучших настольных сред Linux используется GTK +.

Возьмите GNOME, опцию по умолчанию в таких известных и хорошо зарекомендовавших себя ОС Linux, как Ubuntu, Fedora и Debian. Затем есть альтернативы, такие как MATE и Xfce, которые предлагают более легкие и более традиционные интерфейсы.

Давайте не будем забывать об Elementary OS, новичке, который больше обслуживает последние коммутаторы, чем давние пользователи Linux.

Многие из самых популярных приложений с открытым исходным кодом лучше интегрируются с десктопами на базе GTK. Это включает в себя такие программы, как Firefox, Thunderbird, LibreOffice и GIMP. Менее известные кроссплатформенные приложения на основе GTK включают AbiWord, Inkscape и Pidgin.

Среди приложений GTK + растет степень разнообразия. Программное обеспечение, разработанное специально для GNOME, может выглядеть неуместно даже на других настольных ПК на базе GTK. Это связано с тем, что руководящие принципы разработки интерфейса пользователя GNOME не поощряют использование меню и вносят другие, менее распространенные изменения.

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

Между тем, большинство вышеупомянутых популярных кроссплатформенных инструментов GTK + остаются относительно независимыми от настольных компьютеров (что означает, что они выглядят неуместно в GNOME и элементарной OS, поскольку акцент делается на уникальном дизайне).

Настольные ПК и программное обеспечение на основе Qt

Рабочий стол KDE Plasma является старейшей полнофункциональной рабочей средой для Linux. Если бы в 1996 году Qt был полностью открыт, GNOME, возможно, даже не существовало бы. Более двух десятилетий спустя сообщество KDE продолжает предоставлять самый многофункциональный рабочий стол Linux.

Поскольку существует так мало других настольных ПК на базе Qt, многие приложения Qt специально разработаны для настольных компьютеров Plasma и могут даже зависеть от различных компонентов KDE. По этой причине интеграция программного обеспечения KDE является одной из лучших среди любых настольных систем.

Вы можете настроить интерфейс, который влияет на каждое приложение, или вы можете настроить одно приложение, пока оно не станет удобным. Тем не менее, рабочий стол Plasma не единственный, который использует Qt. LXQt — это одна из альтернатив, которая фокусируется на том, чтобы быть легче и проще.

Хотя некоторые программы KDE являются кроссплатформенными, эти программы не так известны за пределами сообщества Linux. Наиболее заметными исключениями могут быть Krita и digiKam.

Не все программное обеспечение Qt специально разработано для KDE. К таким программам относятся медиаплеер VLC и настольное издательское приложение Scribus.

Разница имеет значение?

Есть технические различия между GTK + и Qt, но большинство из них больше интересуют разработчиков, чем остальные из нас. В наши дни ограничения еще труднее заметить, чем раньше. Благодаря отличной тематике многие приложения GTK + теперь выглядят как дома на рабочем столе Plasma на базе Qt. Некоторые из этих приложений выглядят больше на плазме, чем в GNOME.

Между тем, вы также можете установить Scribus или VLC на рабочий стол на базе GTK, даже не осознавая, что есть разница.

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

Читайте также:  с какими банками сотрудничает белагропромбанк без комиссии

В конечном счете, вопрос о том, предпочитаете ли вы GTK + или Qt, сводится к выбору вашего любимого интерфейса рабочего стола и ваших любимых приложений для Linux.

Источник

Qt vs GTK в 2019 для написания простых интерфейсов.

До этого много писал под Qt кросс-платформ штуки, никогда не писал под GTK ничего.

Qt5: что-то монструозное, 100500 гигов библиотек для простого интерфейса, какой-то гимор с лицензиями, статическими линкованиями.

GTK(2,3,+): что-то, что я не пробовал, но выглядит как что-то более скромное.

Голимые иксы: в принципе тоже норм, можно попробовать )

Be smart. Use Qt or WxWidgets when it matters. Use native APIs when it doesn’t. Leave GTK to the GIMP developers; it’s their baby and they’re the only ones who seem to know how to use it correctly.

эти слова в одном предложении не сочетаются

GTK2 уже мертв, GTK3 был мертвым уродом-мутантом с самого начала. Qt5 тоже не блещет красотой дизайна (во всех смыслах) но хотя бы подает признаки жизни.

GTK3 был мертвым уродом-мутантом с самого начала

Не надо, топик не про срач.

если ты упомянул в ОП слова GTK и Qt, то срача не избежать

если ты упомянул в ОП слова GTK и Qt, то срача не избежать

Избежать. Просто не срись и всё.

GTK+ ты никогда не похоронишь, так как два релевантных браузера его используют. Ну и Java, Mono (C#) тоже завязаны на него.

Ну и всякие там Fedora, Ubuntu, Debian сделали ставку на GTK+.

QML для простых интерфейсов самое то.

GTK ужасен. Какой-то совершенно нелепый фреймворк для 2019 года, где надо вручную делать то, что в других делается само.

Может просто не стоит разрабатывать прикладной софт на Си в 2019?

Может просто не стоит разрабатывать прикладные приложения на Си в 2019?

Точно! Только либы, хорошие либы с хорошим API! А GUI как в deluge.

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

Голимые иксы: в принципе тоже норм, можно попробовать )

И что ты будешь делать со своим приложением, когда иксы выкинут? А случится это довольно скоро. В Fedora, вон, процесс уже идёт. В Ubuntu не в LTS-дистрах – тоже, насколько я знаю.

GTK(2,3,+): что-то, что я не пробовал, но выглядит как что-то более скромное.

А ты попробуй. Все ведь познаётся в сравнении. Опыт работы с Qt 5 у тебя уже есть, а вот с GTK+3 – нету. Так что почему бы и не попробовать? Тем более GTK+3 тупо доступен в современных дистрибутивах Linux сразу из коробки, в отличие от того же, который в ту же Ubuntu нужно устанавливать из репозиториев.

А че аргументировать то? Достаточно посмотреть на это пальцетыкательное уродство, да ещё и исполненное в виде веб говна. Сколько бы у тебя не было оперативы GNOME3 съест всё что осталось после запуска браузера. HIG абсолютно наркоманский, да ещё и ломали его каждую версию. Трей? Иконки? Нормальное управление окнами? Меню? Это все чего в гноме нет. Могли бы хотя бы нормальных тем запилить, шрифтов и нарисовать наконец иконки которые не будут вызывать рвоту при взгляде на них. Короче заняться полезными вещами, вместо прибивания к своему поделию systemd. Хотя самой большой наркоманией в GNOME все таки является подобие реестра, хотя это ещё до GNOME3 придумали.

а причём тут GNOME? мы вроде про GTK говорили, причём с точки зрения программиста

Neither

Ну так нужен же срач. Но GTK и кроссплатформа один хрен вещи несовместимые.

Но GTK и кроссплатформа один хрен вещи несовместимые.

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

До этого много писал под Qt кросс-платформ штуки

Qt5: что-то монструозное, 100500 гигов библиотек для простого интерфейса, какой-то гимор с лицензиями, статическими линкованиями.

Мало писал, коль повторяешь замшелые мифы.

Пишешь опенсорс — гимор с лицензиями тебя вообще не касается.

Пишешь проприетарщину — либо линкуешься динамически и не знаешь проблем, либо обеспечиваешь возможность перекомпиляции программы с другой версией Qt (например, предоставив покупателю объектные файлы) и опять-таки не знаешь проблем.

Ну и Qt 4.8 ещё вполне себе работоспособна, если что. Если не тянуть в рот webkit/webengine, можно вообще без особых усилий обеспечить компилябельность одних исходников в Qt4 и Qt5. Я в DoubleContact так и делаю.

Источник

В чем разница между GTK+ и Qt?

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

Но когда вы переключились на GNU/Linux, проблема внезапно стала актуальной. Это потому, что насколько хорошо приложение интегрируется с остальной частью вашего рабочего стола, часто возникает вопрос: сделано ли оно в GTK+ или Qt?

Что такое GTK+ и Qt?

GTK+ и Qt – это наборы инструментов, которые разработчики используют для структурирования внешнего вида и ощущения приложения. Эти наборы инструментов предоставляют кнопки, панели инструментов, ползунки и меню, которые вы видите при использовании приложения.

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

История GTK+ и Qt

Haarvard Nord и Eirik Chambe-Eng начали разработку Qt в 1991 году. Название, которое произносится как «милый», появилось из-за того, как буква Q выглядела в шрифте Eavcs Haavard и предыдущего использования буквы t в Xt, X инструментарий уже используется на рабочих столах Unix.

Nord и Chambe-Eng позже стали соучредителем Quasar Technologies, которая стала Throll Tech, затем Throlltech, и теперь существует в другой форме, как The Qt Company.

В 1995 году Throll Tech выпустила исходный код для версии Qt для GNU/Linux. Но это не соответствовало определению Free Software Foundation (FSF), так как людям не разрешалось распространять код, если они вносили какие-либо изменения. Только в 2000 году Throlltech предоставил пользователям свободу свободно редактировать и распространять код.

GTK+ начинался как GIMP Toolkit, созданный Питером Мэттисом в качестве замены существующего интерфейса, используемого в программе манипуляции изображениями GNU. После переписывания инструментарий стал GTK+ и вышел в 1998 году. В отличие от Qt, у людей была свобода редактировать, изменять и делиться GTK+ с самого начала.

Хотя Qt в некотором смысле является более универсальным и адаптируемым инструментарием, сообщество в течение первых лет консолидировалось вокруг GTK+. Стоит также отметить, что некоммерческий фонд GNOME теперь поддерживает GTK+, в то время как публично торгуемая компания The Qt Company ведет разработку Qt. Тем не менее, на данный момент ни один инструментарий не является «более бесплатным», чем другой.

Настольные ПК и программное обеспечение на базе GTK

Если вы недавно перешли на GNU/Linux, есть большая вероятность, что вы используете настольный компьютер на базе GTK. Это связано с тем, что многие из лучших сред GNU/Linux для настольных систем используют GTK+.

Возьмите GNOME, опцию по умолчанию в таких известных и хорошо зарекомендовавших себя ОС GNU/Linux, как Ubuntu, Fedora и Debian. Затем есть альтернативы, такие как MATE и Xfce, которые предлагают более легкие и более традиционные интерфейсы.

Давайте не будем забывать об elementary OS, новичке, который обслуживает последние коммутаторы больше, чем давние пользователи GNU/Linux.

Многие из самых популярных приложений с открытым исходным кодом лучше интегрируются с десктопами на базе GTK. Это включает в себя такие программы, как Firefox, Thunderbird, LibreOffice и GIMP. Менее известные кроссплатформенные приложения на основе GTK включают AbiWord, Inkscape и Pidgin.

Среди приложений GTK+ растет степень разнообразия. Программное обеспечение, разработанное специально для GNOME, может выглядеть неуместно даже на других настольных ПК на базе GTK. Это связано с тем, что руководящие принципы разработки интерфейса пользователя GNOME не поощряют использование меню и вносят другие, менее распространенные изменения.

Также знайте, что многие приложения, предназначенные для elementary OS, недоступны для других рабочих столов.

Между тем, большинство вышеупомянутых популярных кроссплатформенных инструментов GTK+ остаются относительно независимыми от настольных компьютеров (что означает, что они выглядят неуместно в GNOME и elementary OS, поскольку акцент делается на уникальном дизайне).

Настольные ПК и программное обеспечение на основе Qt

Рабочий стол KDE Plasma является старейшей полнофункциональной рабочей средой для Linux. Если бы Qt был полностью открыт еще в 1996 году, GNOME мог бы даже не существовать. Более двух десятилетий спустя сообщество KDE продолжает предоставлять самый многофункциональный рабочий стол GNU/Linux.

Поскольку существует так мало других настольных ПК на базе Qt, многие приложения Qt специально разработаны для настольных компьютеров Plasma и могут даже зависеть от различных компонентов KDE. По этой причине интеграция программного обеспечения KDE является одной из лучших среди любых настольных систем.

Читайте также:  что делать если к твоей девушке подкатывают на работе

Вы можете настроить интерфейс, который влияет на каждое приложение, или вы можете настроить одно приложение, пока оно не станет удобным. Тем не менее, Plasma Desktop не единственный, кто использует Qt. LXQt – это одна из альтернатив, которая фокусируется на том, чтобы быть легче и проще.

Хотя некоторые программы KDE являются кроссплатформенными, эти программы не так известны за пределами сообщества GNU/Linux. Наиболее заметными исключениями могут быть Krita и digiKam.

Не все программное обеспечение Qt специально разработано для KDE. К таким программам относятся медиаплеер VLC и настольное издательское приложение Scribus.

Насколько важна разница?

Есть технические различия между GTK+ и Qt, но большинство из них больше интересуют разработчиков, чем кого либо из нас. В наши дни ограничения еще труднее заметить, чем раньше. Благодаря отличной гибкости, многие приложения GTK+ теперь выглядят как дома на рабочем столе Plasma на базе Qt. Некоторые из этих приложений выглядят лучше на плазме, чем в GNOME.

Между тем, вы также можете установить Scribus или VLC на рабочий стол на базе GTK, даже не осознавая, что есть разница за кулисами.

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

В конечном счете, вопрос о том, предпочитать ли вам GTK+ или Qt, сводится к выбору вашего любимого интерфейса рабочего стола и ваших любимых приложений для Linux.

Источник

Gtk vs. Qt: драки не будет

Материал из Wiki.crossplatform.ru

Автор: Арсений Чеботарев «Комиздат» 3 марта 2005 г

Стоило только мне написать об Qt как об одной из основополагающих библиотек в мире открытых систем, как тут же вламываются ко мне озверевшие линуксоиды и начинают доказывать, что самая основополагающая — это Gtk. Спокойно, господа, опустите ваши колы с стволы. Я и не отказываюсь — есть такая буква, точнее — целых три.

Содержание

[править] Происхождение

В чем разница между Qt и Gtk и что сразу бросается в глаза — так это их происхождение. В мире открытых систем существует два источника происхождения софта.

Первый: что-то было разработано одним человеком (двумя, тремя) для себя или для своей работы, а в дальнейшем, в силу корпоративной политики, стало достоянием общественности — но, те не менее, продолжает строго разрабатываться по корпоративному плану, с учетом пожеланий пользователей продукта. На сегодня таким образом рождаются самые интересные, стабильные, «сбитые» и хорошо документированные детища.

Второй путь — это когда кто-то что-то писал-недописал, выложил, потом пришло еще двое, что-то переделали, потом еще сто пятьдесят человек внесло свою лепту (лепта — монета, вставляемая известно куда; соответствует нашим «пяти копейкам»). Потом еще какие-то люди таскали-портировали, документировали… Пока, наконец, не пришли коммерсанты и не начали лицензировать. Залицензировали версию 1.0.5, после чего вышла «свободная» 2.6.3 — и с тех пор никто толком не знает, где у этого бегемота нос, а где — хвост. Апологеты такого «зоопарка» аргументируют ситуацию примерно так: «Вам нужен нос? Вот он — и не нужно спрашивать, где хвост. Достаточно знать, что он тоже есть».

К первому разряду программ относятся, например, MySQL, PHP, Python, Qt и сам Linux, изменения в ядро которого вносит сам товарищ Торвальдс.

Но и во второй группе тоже немало программ, таких как Gtk или PostgresQL. Эти программы отличаются обширными экстенсивными интерфейсами, которые писались кучей народа — и, судя по всему, не предназначены для освоения одним человеком. По подобию вавилонского столпотворения это напоминает мне только интерфейсы Java. Оно и понятно — при создании Java применяются многие из «группен-секс»-технологий разработки, которые используются в интернете и мире GNU.

Чтобы как-то продемонстрировать сказанное, напомню историю создания Gtk (сокращенно, с сайта gtk.org).

[править] История Gtk

Разработку Gtk начал Питер Маттис (Peter Matthis), ему помогали Спенсер Кимбэл (Spencer Kimball) и Джош Макдональд (Josh Macdonald).

Мариус Вольмер (Marius Vollmer) навел на мысль, как GTK+ должен работать с различными языками программирования.

Ларс Хамман (Lars Hamann) и Стефан Джеске (Stefan Jeske) добавили все возможности в основные элементы управления.

Карстен Хайзлер (Carsten Haitzler) разработал и реализовал первую поддержку тем.

Шоун Амундсон (Shawn Amundson) занимался менеджментом релизов GTK+-1.0 и GTK+-1.2.

Позже, Хавок Пеннингтон (Havoc Pennington) создал элемент управления GtkTextView, основанный на текстовом поле Tk.

Эллиот Ли (Elliot Lee) и Алекс Ларсон (Alex Larsson) написали linux-fb бек’энд (Gtk через фрэймбуфер).

Эрвонн Ченед (Erwann Chenede) добавил многопоточность в GDK и GTK+.

Падрейдж О’браен (Padraig O’Briain) и Билл Ханеман (Bill Haneman) написали ATK и исправили GTK+ для поддержки accesibility (интерфейс для инвалидов).

Ханс Брюер (Hans Breuer) продолжает «контрибьютить» огромные части полезной работы для порта Win32 GTK+ (убитое время — «Майкрософт» не оценит).

Мюррей Камминг (Murray Cumming) и Джеймс Хестридж (James Henstridge) следят за корректной поддержкой различных языков.

Abigail Brady, Sivaraj Doddannan, Dov Grobgeld, Karl Koehler, Theppitak Karoonboonyanan, Noah Levitt, Eric Mader, Roozbeh Pournader и Changwoo Ryu — это лишь некоторые из тех, кто приложился к Pango.

Что является характерным, так это метод, которым развивается Gtk. Основой для тех или иных работ в данном случае не может служить ни распоряжение начальника, ни материальный стимул. Поэтому в качестве «производственного плана» выступают «направляющие» — Guidelines. По мере того, как очередной кто-то захочет прославиться в мире GNU, он может выполнить любую приглянувшуюся ему часть кодирования. Фактически, при этом нет никаких гарантий, что возможность будет когда-нибудь реализована. Например, настраиваемые панели управления или индикатор раскладок клавиатуры могут ждать своей очереди еще очень долго. (Зато реализованы такие «супервозможности», как масштабирование иконок на рабочем столе — ну, что тут можно сказать. )

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

[править] Структура Gtk

Если я утомил вас «историей», это хорошо — вы должны были почувствовать, что такое разработка в джунглях. Освоение Gtk приводит к таким же ощущениям. Впрочем, не будем забегать наперед.

В дополнение приведу еще пару фактов. Изначальный проект назывался GIMP, что значит GNU Image Manipulation Programm (то есть что-то типа Photoshop 3), откуда, собственно, и растут ноги Gtk. На основе того же Gtk построен и ГНОМ — оболочка GNOME (GNU Network Object Model Environment). Самая основная либа для рисования — так называемый GDK (GIMP Drawing Kit), который изначально был «эксплойтером» XLib, а теперь под настроениеможет использовать и Windows GDK.

Вот такая вот иерархия. Графической библиотекой GDK я и сам не брезгую попользоваться, о чем расскажу в одной из статей. Но следует ли из этого, что Gtk — панацея от геморроя? Ответ неизвестен.

Сам Gtk+ (с плюсом) состоит из трех частей.

Glib. Представляет собой низкоуровневый остов всего Gtk+ и GNOME; в этой библиотеке описаны основные структуры, сделаны усилия по отделению Gtk от операционной системы, а также реализованы такие «базисы», как цикл сообщений, потоки, динамическая загрузка модулей и система runtime-вызовов между объектами. Фактически это целая MS Windows 3.11 («ось» без собственных файловых систем и т.п.), изначально написанная под X-Windows. Pango. Компонент, рисующий шрифты. Конечно же, тема это важная, спорить бесполезно, но я бы уже договорился раз и навсегда, как их рисовать, чтобы ни одни «инди-попс» не занимался альтернативными начертаниями, хинтингом и антиалиасингом. Этот вопрос на 99% на совести Adobe — откройте код, изверги.

Впрочем, создатели Gtk делают вид, что Pango и есть такая «земля обетованная». Поддержка интернациональных написаний также предусмотрена и гарантируется. ATK. Набор средств для пользователей, имеющих различные недостатки. В этом наборе: «читатель экрана», увеличительная «лупа», а также поддержка нестандартных устройств ввода. Ко всему этому, Gtk имеет привязки (bindings) к 28-ми языкам программирования, начиная от «блатного квадрата» C++/Java/Perl/Python и заканчивая такими экзотическими наречиями, как Erlang и Hasskell (кстати, кто напишет хорошую статью по Hasskell? — у меня руки не доходят). Я уверен, что мало людей знают хотя бы половину этих языков — зато неимоверная работа проделана.

С другой стороны, можно понять тягу «малых языковых народов» к Gtk — эта библиотека прикроет любые пробелы собственных библиотек. Так что, можно сказать, неплохой шанс — правда, кому и зачем он дан? Ведь потом показывают программы на каком-то ObjectXLAM и говорят: вот, мол, как красиво! — хотя на самом деле это Gtk-bind, а сам язык страшен и нуден, как три подвала НКВД.

Читайте также:  какой кефир давать в прикорм

Поскольку Gtk занимается, в основном, пользовательским интерфейсом, то существует несколько инструментов, позволяющих создавать этот интерфейс визуально. Вероятно, главное такое средство — редактор Glade. Но, как это принято, все заканчивается обычным текстом на том же C — а не ресурсами времени выполнения, как кое-кто мог подумать. Точнее, Glade может генерировать исходники на C, C++ и Ada, а также работать в gladelib-режиме, когда данные формы сохраняются в виде XML, из которого тексты генерируются на этапе сборки. Второй метод обычно используется для больших проектов.

[править] Разработка приложений: уровень абстракции

Что еще отличает Gtk от Qt, так это среда разработки самой библиотеки и целевая среда разработки. Qt написан на C++ и предназначен для разработчиков на этом языке.

Если говорить об ООП и графическом интерфейсе, то объектное программирование, контроль типов в духе C++ и встроенный в язык полиморфизм являются идеальным примером применения теории на практике. Вполне естественно, что современные системы программирования идут «немного дальше» классического C++, дополняя объекты информацией времени выполнения для дополнительных возможностей контроля типов.

Gtk написан на «чистом» С — то есть совершенно без использования классов C++, шаблонов и т.д. Тем не менее, Gtk — объектно-ориентированная система, основанная на вызовах «методов», обратных вызовах, генерации сигналов и регистрации их обработчиков. Этот подход не нов — так же написана, например, и сама Windows, по крайней мере 3.11 (опять это сравнение), и такие объектные системы, как PalmOS, MySQL и Plan9. Во всех перечисленных системах есть объекты, очереди сообщений и средства регистрации реакций на них — но реализовано это не механизмами C++, а в независимой от языка манере.

Как следствие использования C, Gtk — в некоторой мере более оптимизированная, а также более портабельная библиотека, поскольку сообщения, сгенерированные одним языком, могут быть обработаны в процедуре, написанной на другом. С другой стороны, использование стандартных механизмов C++ в Qt дает более мощный высокоуровневый базис для разработки приложений — ведь не зря же эти «классы Бьярна» получили такое распространение.

Затрудняюсь даже сказать, что лучше,— оба метода нашли широкое применение. Один из них чуть быстрее — но зато и более сложен в освоении и использовании. Другой «жирноват» — зато с ним легче управиться.

Единственное, что можно просто констатировать, так это тенденцию, суть которой образно можно свести к следующему: «быстрая разработка превыше оптимизации кода». С этой точки зрения Qt имеет большое преимущество.

[править] Уровень детализации

Как следствие применения «низкоуровневого» C (хоть это и не очевидно), Gtk имеет значительно более низкоуровневый контроль над всеми деталями интерфейса, в особенности это касается графических параметров. Так что педанты, любящие «ковыряться» в интерфейсе пользователя и строить всякого рода замысловатые элементы, типа «нажми, поверни и выбери», найдут в Gtk больше поводов для самореализации.

Мое скромное мнение в этом вопросе таково: с точки зрения приоритетов разработчика создание вычурных интерфейсов должно стоять на самом последнем месте. Безусловно, некоторые нововведения допустимы, и даже необходимы,— но, будь я Верховным Жрецом Исходного Кода, я бы наложил табу: «не больше одного новшества в интерфейсе пользователя в год». При том одного на всех разработчиков!

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

Уровень детализации на уровне API не обозначает, что основанный на Gtk GNOME лучше проработан, чем основанный на Qt KDE. Скорее наоборот, почему я всегда использую KDE. С виду привлекательный GNOME до сих пор не «разжился» даже собственным индикатором раскладки клавиатуры. Не говоря уже о том, что под GNOME мне случалось наблюдать и куда более неприятные странности. Например, в последней версии Fedora Core 3 GNOME в одночасье перестал печатать в консоли — самое занятное, что обнаружить причину так и не удалось. Естественно, приложив достаточно усилий, можно было бы и разобраться — но я был бы рад, если бы этим занимались люди в рамках «респонсибилити».

Нужно сказать и о детализации в архитектуре. Причем речь идет не только о функциях и способах описания элементов управления, а и о модульности самой библиотеки. Gtk, как уже было сказано, состоит из доброй дюжины надстроек и сервисов, таких как GLib, GdkPixbuf, GDK, GObject, Pango и т.д. Конечно, для создания простой формы вы не обязаны знать все подробности, но все же такая «слоенка» вызывает некоторые опасения насчет стабильности и согласованного взаимодействия отдельных частей. Хотя вынужден признать, что фактами такие опасения пока не подтверждаются.

С другой стороны, в версии четыре Qt стала значительно более «фрактальной» по сравнению с 3.3.3, так что в некотором смысле обе библиотеки идут встречными курсами. Тем не менее, вы — как разработчик — при выполнении миссии «познать Gtk» столкнетесь со значительно более суровым вызовом, чем, скажем, в задании «изучить Qt».

Кстати, коль уж зашла речь о познании, вот вам последний убийственный аргумент в пользу Qt — документация. Кто видел когда-нибудь документацию Trolltech, тот согласится, что это образец полноты и ясности изложения. С другой стороны — попробуйте-ка просто найти документацию по Gtk.

О’кей, вот она: /usr/share/gtk-doc (почему же не doc/gtk?). Собственно, документация достаточно полная — однако состоит из многих частей, как и сама библиотека. И в конце концов вы, конечно же, можете получить всю нужную вам информацию — но сколько килоджоулей на это уйдет, не берусь предсказать.

Неопровержимый факт: Hello World. Я не буду тут что-то особо расписывать — все и так ясно: инициализация, создание окна, метки, переподчинение последней и отображение, вход в цикл сообщений. Компилируются Gtk-приложения (а также GDK и так далее) с флагами, поставляемыми утилитой pkg-config:

Почему GNOME?Немного остановимся на вопросе, почему компания Red Hat приняла решение использовать GNOME в качестве оболочки по умолчанию.

Вопрос довольно сложный: Красные Шапки являются коммерческой организацией, которая внедряет бесплатный Linux в мир бизнеса. Типичный покупатель Red Hat — это руководитель коммерческой компании, желающий использовать и разрабатывать коммерческие приложения, но не желающий платить лицензионные отчисления в какой-либо форме, кроме «стоимости носителей» и небольшого ревеню создателям дистрибутива, в основном за поддержку. А поскольку коммерческое использование уже выходит за те рамки, до которых простирается «Free License» от Trolltech, то RH правильно делает, что не распространяет Qt там, где за это нужно платить.

Как результат — KDE не включается во всякие «RH Pro Edition».

С другой стороны, у создателей KDE есть серьезные намерения портировать KDE под Gtk. Основной аргумент: KDE в основном представляет философию пользовательского интерфейса и не связан со средой разработки. Кроме того, в последнее время часто появляются сведения о «мультиплатформенных» разработках — имеется в виду, что разработчики используют в одной и той же программе и Qt (KDE), и Gtk. В принципе нет ничего, что делало бы невозможным такой вариант — в, частности использование GDK предоставляет значительно больше возможностей для обработки графики, чем соответствующие объекты Qt.

В результатеВ результате — если бы у бабки была репка, то это был бы дедка. То есть: если бы библиотека Gtk была написана на C++, а Qt не была бы защищена лицензиями Trolltech, если бы Qt обладала бы такими же инструментами рисования, как GDK, а Gtk — такой же документацией, как Qt, можно было бы говорить о «тяжелом выборе».

На сегодня же вопрос так не стоит, а стоит вот как: если вам нужно получить быстрое и надежное приложение, если вы не собираетесь использовать различные ObjectCalm’ы и вам не нужно профессиональное рисование (или вы намерены реализовать его самостоятельно) — то вам прямая дорога на сайт Trolltech, искать последнюю версию Qt. Но имейте в виду: за коммерческое использование ребята собирают деньги (за очень коммерческое, однако). А вы зато получите поддержку и другие бонусы. К тому же, помимо графики, Qt еще много чего умеет.

Но если вы убежденный программист на ObjectXLAM (условный Объектный Хлам, не пытайтесь найти по нему мануал), любите свободную тусовку хиппи, бесплатные пирожки на собачьем пуху, а также ориентирование на местности без компаса — счастливого пути на сайт gtk.org, там вы будете как дома.

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

Источник

Сказочный портал