LINUX.ORG.RU

[посоветуйте][да будет срачъ]Надоела java

 


0

2

Доброго. Понимаю, что вопрос для срача, но постараюсь задать наиболее корректно.

Собственно, надоела ява. Хочется чего-то, что пошустрее и меньше памяти жрет, но чтобы можно было пистаь на «все» (Win+Mac+Linux) платформы. Софт чисто десктопный. Понимаю, что наиболее правильно писать 3 различных гуя + ядро, чтобы все нативно выглядело. Но все-таки. И хотелось бы, чтобы скорость разработки была сравнима с явовской.

Итого выбор:

C++: QT/GTK+ как они на маке смотрятся? А то GTK на винде не очень... Есть ли какой-нить стиль, чтобы оно более нативно смотрелось? Гугл дает только на 2000/XP. Как со скоростью разработки?

C#: WinForms/GTK/MonoMac патентные проблемы со стороны Мелкософта не волнуют.

Python: хм... даже не знаю...

Другие варианты?

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

> C++: Qt и на винде, и на маке выглядит нативно.

Damn lie

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

GPL2 к патентам не имеет никакого отношения. GPL3 в явном виде гарантирует возможность использовать все патентованные технологии в производных работах. Какие от этого проблеммы? А у моно с лицензией все нормально, и не нужно мешать лицензии и патенты в одну кучу.

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

Зато PHP + JS + HTML5 везде будет выглядеть ненативно. А если еще учесть, что браузеры бывают разные, то вылезет еще и куча проблемм.

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

На appdb.winehq.org лень глянуть? Но зачем ее ставить в вайн?

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

>Проверяются только при коннекте/дисконнекте сигнала и слота.

Ага. В рантайме. Если прототип сигнала изменится, или просто где-то опечатка, то никаких ошибок компиляции, вообще ничего - мы узнаем об этом только в рантайме. И это на С++!

если ты действительно пишешь на Qt и столкнулся с этим, то скорее всего ты что-то делаешь не так.

ты что-то делаешь не так или выбрал не тот тулкит.

Какие-то педиковатые ответы))

yoghurt ★★★★★
()

.Net решает, да.

anonymous
()

Более десктопная проблема. Для разведки трудоемкости QT/GTK и тп.

Есть дерево, в основе - композит. Нужно его вывести в «TreeView», но для каждого типа данных свое оформление.

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

>Единственное ограничение «шаблонного» QObject'а - невозможность определения сигналов/слотов

Что есть невозможность использовать его по прямому назначению.

>Решается либо прямым использованием event'ов

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

>> ни тебе множественного наследования куобжектов

Приведи пример, когда ты реально упираешься в это ограничение

Легко - набор интерфейсов, испускающих те или иные сигналы, имеющих те или иные слоты, и набор классов, реализующих разные комбинации этих интерфейсов.

>> ни тебе вложенных классов-куобжектов

4.2

4.2 на твоё 4.2:

#include "obj.hpp"

int main (int argc, char *argv[]) {
    (void) argc;
    (void) argv;
    return 0;
}
#ifndef __OBJ_HPP__
#define __OBJ_HPP__

#include <QObject>

class Foo: public QObject {
    Q_OBJECT

    class Bar: public QObject {
        Q_OBJECT
    };
};

#endif // __OBJ_HPP__
~/devel/qtsucks $ make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o main.o main.cpp
/usr/bin/moc-qt4 -DQT_WEBKIT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. obj.hpp -o moc_obj.cpp
obj.hpp:10: Error: Meta object features not supported for nested classes
make: *** [moc_obj.cpp] Error 1
yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Плохое наследство от первых версий Qt. И это таки мелочь, которая не может сделать годный тулкит говном.

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

>Если прототип сигнала изменится
Необходимо осторожнее подходить к изменениям в архитектуре проекта.

просто где-то опечатка

При первом же тестовом запуске это обнаружится.

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

>Необходимо осторожнее подходить к изменениям в архитектуре проекта.

Класс, испускающий сигнал, может быть и не свой :)

При первом же тестовом запуске это обнаружится.

Да, но всё равно неприятно

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

Для JS уже есть биндинги для нормальных гуйных тулкитов?

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

>Легко - набор интерфейсов, испускающих те или иные сигналы, имеющих те или иные слоты, и набор классов, реализующих разные комбинации этих интерфейсов.

Так не делай интерфейсы QObject'ами. Определи сигналы и слоты как чисто виртуальные методы и реализуй их в потомках.

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

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

В Qt5 это хотят поправить: http://developer.qt.nokia.com/wiki/New_Signal_Slot_Syntax

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

4.2 на твое 4.2:

#ifndef __OBJ_HPP__
#define __OBJ_HPP__

#include <QObject>

class Foo: public QObject {
    Q_OBJECT
    class Bar;
};

class Foo::Bar: public QObject {
    Q_OBJECT
};

#endif // __OBJ_HPP__
annulen ★★★★★
()
Ответ на: комментарий от annulen

Вот это прикол. Тогда им стоило об этом сказать в том же #error

yoghurt ★★★★★
()

> Python: хм... даже не знаю...

Python + PySide

Norgat ★★★★★
()

>но чтобы можно было пистаь на «все» (Win+Mac+Linux) платформы

Java тоже не всегда так умеет.

PHP :-)

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

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

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

Легко - набор интерфейсов, испускающих те или иные сигналы, имеющих те или иные слоты, и набор классов, реализующих разные комбинации этих интерфейсов.


Программируя на Qt, легко убедиться, что потомки QObject'ов, как правило, представляют собой описания объектов, обладающих законченной или практически законченной реализацией. Это следствие использования moc, ограничений C++ и общего подхода к дизайну фреймворка (а это, на секундочку, один из наиболее вменяемых API в мире C++ в принципе). Чисто теоретически претензия принимается, но она имеет смысл только в отрыве от того, что конкретно в Qt такая необходимость возникает опять же редко. Просто потому, что API вполне располагает к тому, чтобы с ней не столкнуться. Хотя, уверен, что поклонникам стандартной библиотеки и boost'a, желающим применить привычные подходы в Qt без всякой адаптации, батхерт обеспечен.

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


Все зависит от задачи. Иногда прямое использование Qt'шных event'ов вполне оправдано. Кроме того, ты пропустил «или» в оригинальном посте, а конкретно - наследование от шаблонного QObject'a и определение сигналов/слотов в потомке, что абсолютно не является проблемой, «плохой практикой» и т.п.

4.2 на твоё 4.2:


Прошу прощения, показалось, что ты имел ввиду вложенные объекты. Нельзя совершенно точно сказать, что вложенные определения классов - это всегда очень плохо. Но вложенные определения «сложных» классов (а наследование от QObject это предполагает) - совершенно очевидный способ получить кочергой по е**лу от других участников проекта. Закинь свой классец в namespace detail и забудь.

Какие-то педиковатые ответы))


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

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

Кстати, когда Qt5 выходит? Есть ли смысл учить 4.7 а потом переходить на 5 или сразу с 5го?

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

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

> Кстати, когда Qt5 выходит? Есть ли смысл учить 4.7 а потом переходить на 5 или сразу с 5го?

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

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

Qt5 - это будущее, и наступать оно будет постепенно.
Лучше прямо сейчас начать учить Qt4.7, он уже работает. Когда официально выйдет Qt5, докажет свою нужность и т.п., тогда можно переходить на него.

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

>гимп и варешарк на винде смотрятся вполне нормально

дооо, про гимп я промолчку, а вот, к примеру, Dia под виндой выглядела в старых версиях как говно

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

>Даже на винде криво смотрится,

Даже на винде криво и ненативно смотрятся Dreamweaver, Photoshop, OpenOffice, Microsoft Office, Winamp, iTunes, Safari, Visual Studio. Но никто по этому поводу не печалится

Karapuz ★★★★★
()

Покажите уже «ужасный гтк на винде», а то я только dia и pidgin пользовался, проблем не заметил. Ну и как на макОС выглядит, хочу посмеяться.

true_admin ★★★★★
()

а вот на «нативность» мне глубоко похрен и вам того же советую.

Некоторые идут ещё дальше: используют приложения, скажем, только на gtk или только на qt. С учётом общего (низкого) уровня развития софта зачастую проблема хоть каку-нить вменяемую софтину найти.

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

>dia
И ты хочешь сказать, что она хорошо выглядит? Когда мне приходилось ей пользоваться на винде (где-то 1,5 года назад) - dia выглядела ужасно. Сейчас что-то поменялось?

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

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

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

Сейчас что-то поменялось?

пользовался года четыре назад или ещё раньше. Выглядела так же как в линухе. Примерно так: http://my.opera.com/kurzon/blog/2009/02/08/visi . Были недоработки с прорисовкой, в остальном принципиальной разницы не почувствовал.

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

>Ну и как на макОС выглядит, хочу посмеяться.

Печально выглядит, по дефолту крайне убогая тема (ни намека на закос), работает под иксами.

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

У меня инкскейп даже похуже)

Кста, на твоем скрине gtk1 :)

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

Если тебе хочется тянуть все в веб - тяни. Мне нет, так что пхп мне не упал. А вообще, не бесят.

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

>Покажите уже «ужасный гтк на винде», а то я только dia и pidgin пользовался, проблем не заметил. Ну и как на макОС выглядит, хочу посмеяться.

да тот же pidgin на Windows 7

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

>Есть ли смысл учить 4.7 а потом переходить на 5 или сразу с 5го?

Большой разницы в API между 4.7, 4.8 и 5 нет и не ожидается. Более принципиальный вопрос: учить С++ или QML?

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