LINUX.ORG.RU

Статья Qt vs Gtk... + вопросы...


0

0

Вот пытался я определиться, что мне лучше изучать, qt или gtk. Наткнулся на статью на цитфоруме:

http://www.citforum.ru/open_source/qt_gtk/

дяденька говорит, что gtk это бардак, а qt это стройно и красиво. Я как-то раньше считал, что ГТК должно быть проще в освоении так как это просто С... а qt С++ .

Вот и думаю теперь, что лучше... изучить Си++ и потом Куте... или лучше таки к уже имеющимся знаниям по Си... продраться сквозь ГТК...

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

На изучение двух средств меня не хватит, нужно ведь еще и по основной специальности успевать. Посему посоветуйте, куда крестьянину (физику) податься :)

★★★★★

Советую Qt. Простота в освоении ИМХО не связана с языком программирования, но, в основном, с его внятностью и соответствием решаемым задачам. Если знаеш С, понадобится только некоторо представление об ооп, чтобы освоить с++.

bugmaker ★★★★☆
()

Qt.

Задачи интерфейса решаются быстрее, чем на Gtk. Проще в осовении (если знаешь С++), имеет больщой функционал (сеть, sql, файлы, ...).

+ для технических нужд есть QWT: http://qwt.sourceforge.net/

Keiko
()

Вообще-то и та и другая библиотека объектно-ориентированная, но если в случае с QT OOП поддерживается языком, в случае с gtk все реализовано через одно место.

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

>поконкретнее, пожалуйста, что, как и почему.

потому что gtk расшифровывается как Gimp toolkit.

он специально для gimp создавался, а только потом его стали использовать и в других приложениях.

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

Да, плохой пример, но другого я не вижу. Gnome и KDE сравнивать не очень корректно, потому что слишком разные они.

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

а потом они решили забацать DE. Лучше все эти силы, потраченные на GNOME, вложили бы в GIMP - Photoshop отдыхал бы.

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

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

самое главное это легкость поддержки и модификации существующего кода,
в этом qt в несколько раз превосходит gtk.

это качество намного важнее таких качеств как производительность и требования к памяти (если эти преимущества измеряются конечно не в сотни процентов).


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

>это качество намного важнее таких качеств как производительность и требования к памяти (если эти преимущества измеряются конечно не в сотни процентов).

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

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

Оба меняют интерфейс при изменении главного номера версии.

ИМХО qt больше заботиться об этом все-таки это комерческая разработка:
появляются описание как перейти на новую версию, runtime библиотеки для совместимости.

Не знаю как на других платформах, но на Windwos и *nix.

Не qt, не gtk+ особо не тормозят, вернее совсем не тормозят.



anonymous
()

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

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

> GIMP на QT как по скорости будет?

ROFL :D

А нащёт размеров и скорости - это уж как напишеш. Тут в основном от тя зависит, не от тулкита.

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

Я пробовал сначала Qt, написал пару программок с ней (каталог rpm-пакетов например).. писать приятно, претензий нет Но вот сел писать нечто более серьёзное (интерфейс к моей же СЧПУ). Как только речь заходит о деньгах, всплывает абсолютное требование: LGPL. Qt отпадает сразу (это было бы не так, если бы в кармане были лишние $1500). В Gtk+ разобрался гораздо основательнее, чем в Qt, долго торчал в сырцах GDK, чтобы выяснить, как можно быстрее всего вывести собственную динамичную графику и т п.

Вот увидел называние треда - подумал, на лоре всегда любили gtk - ответ очевиден. И что мы видим? :) Моё мнение - за Qt агитируют только пользователи KDE, эгоистично задумав, что если им вдруг понадобится программа автора, то она будет прекрасно подходить к их десктопу, машине и, для милых дам, к сумочке.

Только Gtk+

С уважением, erdizz

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

о каких деньгах ? Если человеку нужно писать прогу для предприятия, и распространяться она не будет ?

>>на лоре всегда любили gtk

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

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

:) интересно... я уже было собрался сделать вывод, что ни одного доброго слова в пользу ГТК никто не сказал.

Можно попробовать подойти к вопросу с другой стороны. С чего сторонники и того и другого посоветуют начать изучение/освоение?

Замечу, что очень часто когда программирую чего-то, то приходится искать не инфу о том как работает данная функция, это просто, а искать собственно название функции или библиотеки, которая поможет сделать то-то и то-то...

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

Для Gtk есть замечательный Gtk-tutorial: http://gtk.org/tutorial/ Параллельно с которым стоит разобраться в объектной системе GObject: http://le-hacker.org/papers/gobject/index.html

Всё остальное найдётся в классическом Reference Manual http://gtk.org/api/

Также мануал и туториал идут с исходными кодами gtk, которые тоже пригодятся, особенно в вопросах вида "а можно ли передавать этой функции NULL?" или "она сама удалит этот объект или я сам должен это сделать?", ответы на которые из мануала иногда ускользают

erdizz

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

qt тоже идет в исходниках. если ты не знал.

основное претензии к gtk это то что она на C.

Это конечно большой недостаток, но можно взглянуть в сторону gtkmm и glade

anonymous
()

Tcl/Tk. Потому как ГУЮ гуево, а железу - железово.

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

>основное претензии к gtk это то что она на C. >Это конечно большой недостаток

Вы иронизируете? Это скорее достоинство.

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

Давайте расставим точки над i в вопросе о языках. Хочу напомнить, что Qt использует НЕ C++, а некую надстройку над языком, требующую предварительной обработки через MOC - MetaObjectCompiler.

Далее. Gtk и, в меньшей степени, Qt, доступны для разных языков. Есть биндинг Gtk+ для тех, что предпочитает C++ - gtkmm, Есть биндинги для Python - PyGTK и PyQt, и для других языков. В Mono есть даже Gtk# ^_^

Поэтому по языкам счёт 3:2 в пользу Gtk: она доступна для большего количества языков, тогда как Qt не обошлась возможностями и без того перегруженного C++ (сигналы/слоты работают хорошо, но не лучше, чем те же сигналы в Gtk+, выполненные на чистом C)

erdizz

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

>Вы иронизируете? Это скорее достоинство.

и каким боком это достоинство?

проблемма в том что для его использования надо тянуть binding, as is его не используешь. А тот же gtkmm весит не мало, а ведь это всего лишь API.

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

Потому, что Си - плохой язык для рисования GUI. Если кто будет использовать для такой задачи Си, то это лишь признак или непрофессионализма, либо тяжелого психического заболевания. То же самое относится и к C++.

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

>Потому, что Си - плохой язык для рисования GUI. Если кто будет использовать для такой задачи Си, то это лишь признак или непрофессионализма, либо тяжелого психического заболевания. То же самое относится и к C++.

Хм... :) а на чем же тогда писать гуй если не на C/С++ ?

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

На хорошем высокоуровневом языке. Желательно скриптовом. Tcl, Python, Scheme...

На C/C++ - слишком громоздко, неподдерживаемо, нединамично.

anonymous
()

Всем сторонникам QT. Меня смущает, что почему-то все приложения требующие быстроты написаны на ГТК... На КуТе только КДЕ да еще я знаю QCAD и SIM. Firefox, OpenOffice, VmWare, Xfce, все на ГТК...

неужели все из-за лицензий?

P.s Кстати интересно почему никто не сказал про Motif, Xforms VxWindows и пр...

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

Обращение к БД? Вот ещё один вопрос на прояснение. Qt - это application framework, тогда как Gtk - widget toolkit. Когда сравниваем Qt с Gtk, имеем в виду ту часть Qt, которая относится к графическому интерфейсу. Если используется gtk, то на более широкий круг задач выводят другие библиотеки.. Про БД в этом смысле я особо ничего не могу сказать - работал с ними только в учебном порядке из Java

erdizz

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

>То же самое относится и к C++.

Вот с этим не согласен. Библиотека GUI подрузамевает ООП,
C++ как раз подходит, а вот C нет.

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

> На КуТе только КДЕ да еще я знаю QCAD и SIM.

так сходи на сайт qt и посмотри, что ты как маленький.

могу добавить например Opera, все еще самый быстрый браузер на Земле.

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

> про Motif, Xforms VxWindows и пр...

потому что их никто не использует.

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

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

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

>могу добавить например Opera, все еще самый быстрый браузер на Земле.

никогда его не юзал :) бо денег хочет.

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

> Вот с этим не согласен. Библиотека GUI подрузамевает ООП, > C++ как раз подходит, а вот C нет.

Полагаю, автор не пробовал на зуб Gtk+. ООП на C возможно, и объектная система GObject во многом выглядит чище, чем C++ (сколько плохого уже сказано в адрес этого языка, и сколько ещё будет сказано). Есть у GObject конечно и особенности, обусловленные, например, несколько ограничивающим синтаксисом C, но к ним быстро привыкаешь:) А такие вещи, как, например, исключения и множественное наследование для пользовательского интерфейса значения не имеют (интерфейсы в GObject конечно поддерживаются). И даже с исключениями можно работать на чистом C. Пример - C-mapping CORBA и его реализация в брокере ORBit из GNOME. Когда речь заходит о серьёзном ООП - вам как раз к нему.

С уважением, erdizz

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

GUI не подразумевает ООП. GUI плохо ложится на ООП (динамический, для статического всё тривиально). ООП плохо подходит для GUI. Это миф. Ты просто повёлся на дешевую провокацию религиозных фанатиков, проповедующих ООП.

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

Какие примеры концептуально более правильной парадигмы построения апи гуёв есть? Где про такое читать? fudgets пригодно уже для построения гуёвых прог?

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

Чё нельзя? Можно... "текстовый гуй" например. man dialog. Есть вроде бы Ховые аналоги ево. Или при помощи wishx ещё можно.

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

Tcl и его Tk, где никакое ОО потрохами наружу не торчит и торчать не думает.

GTK+ на пару с libglade - тоже совсем не-ОО подход.

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

> Ты просто повёлся на дешевую провокацию религиозных фанатиков, >проповедующих ООП.

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

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

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

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

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

Ну приведи примеры, другой парадигмы и ее реального использования.

а то твои высказывания больше на пустой треп похожи.

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

Ты читать умеешь? Или только потны гнуть можешь, супер-пупер-мега-программер с ажно целыми двумя годами немерянного опытищща?

Tk - разве не пример? libglade - не пример?

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