Russian Qt Forum
Апрель 28, 2024, 08:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 3 4 [5]   Вниз
  Печать  
Автор Тема: Переходничок  (Прочитано 43487 раз)
SABROG
Гость
« Ответ #60 : Сентябрь 13, 2010, 12:38 »

Вот-вот, для чего там Qt?
Не нужно иметь сотни зависимостей от разных библиотек, следить за тем, чтобы разные их версии продолжали корректно работать друг с другом. Следить за тем, чтобы все используемые библиотеки были переносимы на целевые платформы.

Поэтому, когда люди используют тот же boost::shared_ptr в своем коде для Qt, вместо QSharedPointer это вызывает смешанные эмоции. С одной стороны вопрос "нафига, если всё есть в одном месте?", а с другой "отвязаться от конкретной  библиотеки - правильно".

Для чего мне тянуть с собой QtCore + QtXml, если мне нужна маленькая консольная утилитка простого парсинга xml? Я возьму малюсеньку библиотечку tinyxml.
Это тоже привязка к библиотеке. Но я согласен с тем, что каждая проблема требует своего инструмента. Просто сегодня ты написал небольшую утилитку для парсинга с использованием tinyxml, а завтра нужно в утилиту добавить код, который отпаршенное должен будет заливать в БД и снова надо подключать еще одну библиотеку и это до тех пор, пока количество зависимостей не разростется.

Цитата: Denjs
извините, в половине случаев у меня не хватало настойчивости для таких утилит выкачать из сети все что им требуется по всем их зависимостям...  
Я не хочу создавать такой софт))) я хочу в 3 шага. скачал (1 дистрибутив) - распаковал - собрал.
Согласен. Кроме всего прочего, когда автор библиотеки забрасывает её развитие нужно искать новую, так как другие части программы отказываются работать.

Это не ко мне, это к ТС.
Судя по другим постам автора, этот - очередной пост, где Qt - нежелательный гость.
« Последнее редактирование: Сентябрь 13, 2010, 12:41 от SABROG » Записан
BRE
Гость
« Ответ #61 : Сентябрь 13, 2010, 12:44 »

Потому что гуй - на QT, ядро - зависит от turbovision, в качестве скриптового языка - мы тянем питон (за каким-то популярным фигом, причем не последнюю версию, а за конкретным номером, потому что не совсем совместимы)...
Ядро должно зависеть только от тех библиотек, которые ему нужны. Также как и GUI.
А насколько быстро ты сможешь переделать свою программу и сколько кода придется переписать, если вдруг условия изменяться и нужно будет отказаться от Qt? 100%?

Я не хочу создавать такой софт))) я хочу в 3 шага. скачал (1 дистрибутив) - распаковал - собрал.
Вот и объясни зачем мне загружать Qt, его собирать, что бы запустить небольшой парсер xml-файлов.  Улыбающийся
И это при том, что из всей Qt будет использоваться 0,001% ее возможностей.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #62 : Сентябрь 13, 2010, 12:53 »

Как узнать имея итератор, что указатель на объект занулён?

 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Denjs
Гость
« Ответ #63 : Сентябрь 13, 2010, 12:55 »

Цитировать
Цитата: Denjs от Сегодня в 12:35
Цитировать
Потому что гуй - на QT, ядро - зависит от turbovision, в качестве скриптового языка - мы тянем питон (за каким-то популярным фигом, причем не последнюю версию, а за конкретным номером, потому что не совсем совместимы)...
Ядро должно зависеть только от тех библиотек, которые ему нужны. Также как и GUI.
Все зависит от тех библиотек которые ему нужны. Но сумма зависимостей всей системы - часто удручает. Слишком разношЁрстно и генетически трудно совместимо.
Цитировать
А насколько быстро ты сможешь переделать свою программу и сколько кода придется переписать, если вдруг условия изменяться и нужно будет отказаться от Qt? 100%?
А на сколько быстро вы сможете привести в единый строй ваш зоопарк ву стиле (QT+ncurces+pyton+...)

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

Вот и объясни зачем мне загружать Qt, его собирать, что бы запустить небольшой парсер xml-файлов.  Улыбающийся
И это при том, что из всей Qt будет использоваться 0,001% ее возможностей.
Это зависит от контекста. В бщем случае - это вопрос выбора стратегии) или вы решаете текущие маленькие проблемы, или вы избавляетесь от больших проблем в будущем (когда вы знаете что вы все-таки перерастете ваши текущие маленькие проблемы и вам будет необходимо ковыряться со всем вашим зоопарком одновременно, если  в каждом конкретном случае будете выбирать "локальные решения").

Все должно быть обосновано). Иногда надо потерять в меньшем, что бы выиграть в большем. только и всего. У каждого решения есть плюсы.
« Последнее редактирование: Сентябрь 13, 2010, 13:00 от Denjs » Записан
BRE
Гость
« Ответ #64 : Сентябрь 13, 2010, 12:56 »

Все должно быть обосновано). Иногда надо потерять в меньшем, что бы выиграть в большем. только и всего. У каждого решения есть плюсы.
Золотые слова.  Улыбающийся
Записан
SABROG
Гость
« Ответ #65 : Сентябрь 13, 2010, 12:58 »

А насколько быстро ты сможешь переделать свою программу и сколько кода придется переписать, если вдруг условия изменяться и нужно будет отказаться от Qt? 100%?
С учетом того, что в стандартном языке C++ пока нет возможностей для работы с XML,SQL,Сетью и т.д., то этот вопрос будет стоять всегда в том числе и для BOOST'a. Ждем стандарт C++0x. Там хотя бы гарантируют то, что контейнеры станут потоко-безопасными?

Вот и объясни зачем мне загружать Qt, его собирать, что бы запустить небольшой парсер xml-файлов.  Улыбающийся
И это при том, что из всей Qt будет использоваться 0,001% ее возможностей.
Скачай собранное приложение. Сборка любой программы из исходников требует некоторых усилий со стороны собирающего, которые не всегда увенчаются успехом.
Записан
BRE
Гость
« Ответ #66 : Сентябрь 13, 2010, 12:59 »

Скачай собранное приложение. Сборка любой программы из исходников требует некоторых усилий со стороны собирающего, которые не всегда увенчаются успехом.
Так и я про это, зачем забивать себе голову зоопарком необходимых библиотек.  Улыбающийся
Записан
BRE
Гость
« Ответ #67 : Сентябрь 13, 2010, 13:03 »

С учетом того, что в стандартном языке C++ пока нет возможностей для работы с XML,SQL,Сетью и т.д., то этот вопрос будет стоять всегда в том числе и для BOOST'a.
А зачем изначально создавать решения (код) привязанные к какой-то конкретной библиотеке, если можно просто использовать STL?
К тому же этот код можно будет использовать повторно в любом другом проекте.
Записан
SABROG
Гость
« Ответ #68 : Сентябрь 13, 2010, 13:10 »

А зачем изначально создавать решения (код) привязанные к какой-то конкретной библиотеке, если можно просто использовать STL?
К тому же этот код можно будет использовать повторно в любом другом проекте.
STL не решает множества проблем и имеет свои недостатки для устранения которых приходится писать собственные классы. Никаких готовых решений все-равно не хватит, придется использовать сторонние библиотеки.

Так и я про это, зачем забивать себе голову зоопарком необходимых библиотек.
Для конечного пользователя нет принципиальной разницы на чем написано приложение, только до тех пор, пока он не захочет собрать программу из исходников. В этом случае лучше тогда один Qt поставить, чем десяток библиотек нужных версий.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #69 : Сентябрь 13, 2010, 13:16 »

Ну вот, стоило отлучиться и уже тему зафлудили  Улыбающийся  

По поводу уместно/неуместно: раздел называется "кладовая готовых решений" (а совсем не "кладовая Qt решений"). Так что пока модераторы не перерешают - к месту. Более того, я вчера предлагал обсудить с точки зрения слот/сигнал, не моя вина что желающих не нашлось.

Возвращаясь к теме: мне кажется что паттерн обсервер здесь не подходит. Он предполагает что именно обсервер принимает решение, для этого ему и дается ссылка на объект (full control). Здесь же ситуевина  другая: расчетная часть все решила, сформировала данные, от индикатора требуется их отобразить и проверить cancel. Какой же из него обсервер? Понятно что "уговорить" можно, но ведь получается длинно и мутно:

- метод index() сделали (хотя куда удобнее подавать его как параметр а не заводить член класса), ладно. А где текст который должен отображаться? Еще один член класса, еще один метод-аксессор. И где проверка на cancel?

- многие методы расчетных классов константы. Из-за того что теперь меняется m_index, надо как-то извращаться с const_cast или volatile. Не хотелось бы

-  перебор обсерверов в цикле лишен практического смысла. Да, индикаторов может быть много, но конкретный расчет обновляет только один. В примерах не вижу какой? Также расчет решает когда выставить/убрать новый индикатор (если их несколько).

Итого: написано довольно много, продемонстрирована высокая техника программирования (никакой иронии). Но практически задача далека от завершения. Вроде бы подразумевается "ну и там какие-то еще мелкие детали, сам доделай"  Улыбающийся Ведь пользоваться этим (пока) нельзя
Записан
BRE
Гость
« Ответ #70 : Сентябрь 13, 2010, 13:20 »

А на сколько быстро вы сможете привести в единый строй ваш зоопарк ву стиле (QT+ncurces+pyton+...)
Что считать зоопарком?
Для примера возьмем примитивный аудиоплеер.
Его ядро зависит от boost + mpg321. Собран он может быть как консольная программа (может запускаться вообще без GUI) или как библиотека. Клиенты получают готовый интерфейс для его управления.
Есть "морды" (клиенты) для этого плеера, их можно написать 100 разных от текстовых до графических. На чем они будут писаться не важно, хочешь на Qt, хочешь MFC.
Их взаимодействие описывается каким то протоколом.

Вам труднее будет использовать вашу маленькую утилитку в больши системах если её технологии не совпадают с технологиями остальной части системы. вот и все.
Да почему она маленькая?  Она очень большая, просто не зависит от Qt. Улыбающийся
В чем трудность интеграции? При проектировании системы сразу разрабатывается интерфейс взаимодействия ее участников. Придерживайся его.
Записан
BRE
Гость
« Ответ #71 : Сентябрь 13, 2010, 13:28 »

Итого: написано довольно много, продемонстрирована высокая техника программирования (никакой иронии). Но практически задача далека от завершения. Вроде бы подразумевается "ну и там какие-то еще мелкие детали, сам доделай"  Улыбающийся Ведь пользоваться этим (пока) нельзя
А что считать задачей? Только вывести индикатор о выполнении?
Тогда еще раз вопрос, а что делать если понадобиться сделать еще что нибудь?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #72 : Сентябрь 13, 2010, 14:38 »

А что считать задачей? Только вывести индикатор о выполнении?
Да. "Этажерку" - по желанию
Тогда еще раз вопрос, а что делать если понадобиться сделать еще что нибудь?
Проектировать новый интерфейс, а не пытаться сделать его общим, на все - про все. Это съедает массу времени, причем лучшего. А когда доходит до использования, то выясняется что все равно что-то изменить придется. Вот тут с любителями глобальных решений начинаются истерики  Улыбающийся

Разумеется, это мое личное мнение которое я никому не навязываю
Записан
BRE
Гость
« Ответ #73 : Сентябрь 13, 2010, 15:02 »

Проектировать новый интерфейс, а не пытаться сделать его общим, на все - про все. Это съедает массу времени, причем лучшего. А когда доходит до использования, то выясняется что все равно что-то изменить придется. Вот тут с любителями глобальных решений начинаются истерики  Улыбающийся
Что значит проектировать новый интерфейс? Что с ним потом делать?
Пройтись по всем методам всех заинтересованных классов и добавить его поддержку? А если потом еще что нибудь понадобиться, повторить?
IMHO, именно этот подход съедает массу лучшего времени.

Если нужно только выводить индикатор о выполнении, то наверно решение с Observer избыточно.

А как ты пробовал использовать сигналы и что тебя не устроило?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #74 : Сентябрь 13, 2010, 16:10 »

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

Если нужно только выводить индикатор о выполнении, то наверно решение с Observer избыточно.
Та отож  Улыбающийся

А как ты пробовал использовать сигналы и что тебя не устроило?
Не секрет, но здесь нужно что-то принять за "исходную точку" обсуждения. А то если я предложу свой же код и сам же буду критиковать - не гуд  Улыбающийся "Ну ты же не так писал" и.т.п. Так что пусть сначала покажут "как", а потом обсудим (цивильно). Вас лично прошу не суетиться

P.S.  а здОрово Вы закрутили с подачей ф-ции-члена в template! Почти интерпретатор
Сейчас надо бежать, увидимся завтра
Записан
Страниц: 1 ... 3 4 [5]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.059 секунд. Запросов: 22.