Re[10]: Почему настоящие программисты избегают C++
От: Awaken Украина  
Дата: 25.02.05 08:50
Оценка:
TL> 10 баллов! Первый признак дельфиста: "окно с обычной кнопкой OK, текст которой написан нестандартным шрифтом"! "Повбывав бы!" (к)


я чего-то тоже не пойму — а нахрен там нестандартный шрифт?
а если пользователь поменяет "тему десктопа" в Винде единообразно, что станет с этим нестандартным шрифтом?
Re[8]: Почему настоящие программисты избегают C++
От: Awaken Украина  
Дата: 25.02.05 09:25
Оценка: 1 (1) +5
C>То-то более 99% процентов кода на Земле — невизульного (т.е. не имеющий
C>отношения к UI).

выскажу совсем крамольную мысль.
для большинства программ где нужность гуя только для "достать данные из базы и показать на экране",
можно использовать веб-браузерный интерфейс со скриптами и серверными сценариями (ASP,JSP).
и никаких библиотек для С++ не надо.
а если ГУЙ нетривиальный как в CAD-системах — вряд ли какая-то из стандартных визуальных библиотек тут достаточна
(разве что в качестве минимального "каркаса" под собственный фреймворк)
Re[9]: Почему настоящие программисты избегают C++
От: Amidlokos Россия  
Дата: 25.02.05 10:08
Оценка:
Здравствуйте, Awaken, Вы писали:

A>выскажу совсем крамольную мысль.


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

Другое дело, что есть и другие варианты, кроме баз и CAD-систем... Вот об этом и флейм
WARNING: expression "to_be || !to_be" is always true
Re[12]: Почему настоящие программисты избегают C++
От: Rebus83 Россия  
Дата: 25.02.05 10:41
Оценка:
Здравствуйте, Demiurg, Вы писали:

D> Это ведь SIM? До ужаса кривая и глюкавая программа... Она бы и на VCL себя так же вела Ну или по-другому как-то глючила

Зъя, батенька, зъя. Хорошая прога. Мне нравится. Кроме последней версии в линуксе больше ничем другим и не пользуюсь!
... << RSDN@Home 1.1.4 beta 4 rev. 303>> Вокруг тишина
Какая странная планета! — подумал Маленький принц. — Совсем сухая,
вся в иглах и соленая. И у людей не хватает воображения. Они только
повторяют то, что им скажешь...
Re[13]: Почему настоящие программисты избегают C++
От: Demiurg  
Дата: 25.02.05 10:58
Оценка:
Здравствуйте, Rebus83, Вы писали:

D>> Это ведь SIM? До ужаса кривая и глюкавая программа... Она бы и на VCL себя так же вела Ну или по-другому как-то глючила

R>Зъя, батенька, зъя. Хорошая прога. Мне нравится. Кроме последней версии в линуксе больше ничем другим и не пользуюсь!

Хорошая, но глюкавая. Я сам долго ей пользовался, пока она меня совсем не всбесила своими глюками Теперь перещел на аську — плююсь сижу...
Может это виндовый порт сима такой глюкавый, конечно...
... << RSDN@Home 1.1.4 beta 4 303, 1991 — Tutankhamon (dance mix)>>
Re[16]: Почему настоящие программисты избегают C++
От: d Bratik  
Дата: 25.02.05 11:45
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>Здравствуйте, d Bratik, Вы писали:


DB>>Туманно все как-то Через какой API этот собственный framework что-либо рисует? Через GDI, через MFC-шные классы-оболочки над GDI?


_O_>Уфф. Рисуем используя Stingray + MFC. Дальше MainSoft все делает :

_O_>http://www.mainsoft.com/products/mainwin_howitworks.html

_O_>

_O_>The Visual MainWin Runtime consists of the Windows Runtime on UNIX and Core Services. Together, they enable Windows applications to execute natively on UNIX.

_O_>The Windows Runtime on UNIX includes an extensive set of Microsoft technologies such as MSXML, SSL, MSHTML, WinSock, COM/DCOM and ATL. These are based on the original Microsoft implementation, tuned for UNIX by Mainsoft.

_O_>Visual MainWin Core Services for UNIX and Linux provide functionality such as synchronization objects, threads and low-level graphic functionality utilized by the Windows Runtime on UNIX. The Core Services also include the Mainsoft RPCSS and Registry services, which provide the robust infrastructure required to support huge numbers of Visual MainWin processes running concurrently on the same machine.

_O_>Visual MainWin creates native UNIX binaries requiring no virtual machine. No emulation or mapping is performed at runtime, guaranteeing maximum performance of the deployed application.


Честно говоря, этот отрывок меня не убедил. Я с большим подозрением отношусь к рекламным заявляениям, оперирующим термином UNIX. Я подозреваю, что в данном случае под UNIX-ом подразумевается MacOS, для которой действительно есть своя реализация MFC и COM, а также другие Windows-причиндалы. Обычно, если производитель сумел портировать свой продукт на Linux, и нет технических проблем портировать на MacOS (или на FreeBSD), то он пишет, что портировал на UNIX Если же производитель портировал продукт на Solaris, то он этим начинает кичиться и обязательно так и пишет, чтобы народ об этом знал и не сомневался Например, разработчики Qt указывают длинный список конкретных версий UNIX. К сожалению, у меня нет Visual MainWin Runtime (иначе я бы давно все выяснил), поэтому мои слова в данном случае не более, чем спекуляция.

DB>>Не-е-е, такой ответ не устраивает Пока сам воочию не увижу скриншот с солярки, не поверю Подозреваю, что программе Вашей требуется эмулятор Wine, которого на солярке нет. Я же не просто так спрашивал, сколько у Вас реальных пользователей на Solaris


_O_>Сделаю, когда доберусь до SPARС-а.


Договорились, я буду ждать
Re[17]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 11:49
Оценка:
d Bratik пишет:

> _O_>Visual MainWin creates native UNIX binaries requiring no virtual

> machine. No emulation or mapping is performed at runtime, guaranteeing
> maximum performance of the deployed application.
> Честно говоря, этот отрывок меня не убедил. Я с большим подозрением
> отношусь к рекламным заявляениям, оперирующим термином UNIX. Я
> подозреваю, что в данном случае под UNIX-ом подразумевается MacOS, для
> которой действительно есть своя реализация MFC и COM, а также другие
> Windows-причиндалы.

Нет. Я лично тестировал MainWnd под Линуксом, и знаю что он работает под
Соляркой. Если не веришь — скачай триальную версию.

ЗЫ: именно из MainSoft'а в прошлом году утекли исходники Винды. Так что
делай выводы....

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[8]: Почему настоящие программисты избегают C++
От: d Bratik  
Дата: 25.02.05 12:03
Оценка: -1 :)
Здравствуйте, Awaken, Вы писали:


DB>>И все же я пока не видел ни одной промышленной GUI бибилиотеки на С++, которая бы отдаленно приближалась по качеству к VCL и .NET >Framework. Обыскал весь Интернет — таковой в природе нет. Qt более-менее ничего, но когда основательно начинаешь пользовать, начинаешь >плеваться.


A>дался тебе этот ГУЙ! в любой мало мальски сложной программе гуй это 1-10% всей задачи.

A>я как-то участвовал в разработке музыкального редактора. это система распознавания и визуализации нотных записей , как положено
A>на линейках нотного стана, каждая нота на своей высоте. самое сложное тут это не нарисовать эти ноты — а алгоритмы как их представить
A>в виде векторной графики, масштабировать, сериализовать в двоичные файлы , и т.д.
A>писано все было на VC++ 6.0 и MFC, и впоследствие портировано на Макинтош.
A>это я к тому что в сложной задаче на первом месте алгоритмы, а не библиотеки примитивов (они сводятся к набору достаточно низкоуровневых функций, которые можно — и нужно — изолировать в отдельный слой и абстрагировать от основной логике)

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

GUI (framework) — это огромная архитектурная сложность.
Re[12]: Почему настоящие программисты избегают C++
От: d Bratik  
Дата: 25.02.05 12:25
Оценка:
Здравствуйте, Garrrrr, Вы писали:

G>Здравствуйте, Kh_Oleg, Вы писали:


G>К сожалению, в борьбе с кривыми руками ни одна библиотека не может одержать победу...

G>Я вообще такое впервые вижу, и никогда с такими проблемами ни у себя в программах, ни в многочилсленных программах для Linux,
G>написанных на Qt, не встречался.

Значит недостаточно Qt пользовал

Делаем простейшее окно с изменяющимися размерами. Сразу после запуска программы берем за нижний левый угол окна и пытаемся его увеличить. Ничего не получается Теперь беремся за правый нижний угол — все работает. Снова беремся за нижний левый угол — теперь заработало Так работает Qt на Solaris.

Я уже молчу, что иногда он (Qt) жрет процессорное время, зацикливаясь на посылках-обработках сообщений, что он вообще НЕ excetion-safe (разработчики называют это "not using exceptions" и вообще не защищают выделение ресурсов, поэтому любой виртуальный метод или обработчик сигнала должен иметь всеобъемлющий try {} catch (...) {}), что он не позволяет создавать многопоточный GUI (для отмазки предоставляя какой-то один отстойный объект синхрониации с однтим циклом обработки сообщений на все потоки!)... И т.д. и т.п.

Версия 4 вроде бы обещает быть получше, но с исключениями и потоками она до сих пор не дружит (хотя уже есть beta).
Re[13]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 12:37
Оценка:
d Bratik пишет:

> Версия 4 вроде бы обещает быть получше, но с исключениями и потоками

> она до сих пор не дружит (хотя уже есть beta).

Вроде я уже говорил, что ВСЕ распространенные GUI-библиотеки —
НЕпотокобезопасны. Включая WinAPI и VCL (которая построена на WinAPI).

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[13]: Почему настоящие программисты избегают C++
От: Garrrrr  
Дата: 25.02.05 13:12
Оценка:
Здравствуйте, d Bratik, Вы писали:

G>>Здравствуйте, Kh_Oleg, Вы писали:


DB>Значит недостаточно Qt пользовал

Может быть

DB>Делаем простейшее окно с изменяющимися размерами. Сразу после запуска программы берем за нижний левый угол окна и пытаемся его увеличить. Ничего не получается Теперь беремся за правый нижний угол — все работает. Снова беремся за нижний левый угол — теперь заработало Так работает Qt на Solaris.


Насчет солярки не знаю — не работал, но на Linux все и всегда работает корректно (кстати, если ты за кроссплатформенность — ты видел
КАК работают kylix-приложения на linux?).

DB>Я уже молчу, что иногда он (Qt) жрет процессорное время, зацикливаясь на посылках-обработках сообщений, что он вообще НЕ excetion-safe (разработчики называют это "not using exceptions" и вообще не защищают выделение ресурсов, поэтому любой виртуальный метод или обработчик сигнала должен иметь всеобъемлющий try {} catch (...) {}), что он не позволяет создавать многопоточный GUI (для отмазки предоставляя какой-то один отстойный объект синхрониации с однтим циклом обработки сообщений на все потоки!)... И т.д. и т.п.


Хотел бы я увидеть хотя бы одну потокобезопасную, безопасную относительно исключений библиотеку GUI.
И потом — методы в Qt, из которых нельзя выкидывать исключения, объявлены как throw(), т ч разработчики честно предупреждают,
чего они от тебя НЕ ждут (ведь ты же не имеешь привычки кидать исключения из деструктора?)
И вообще, многопоточность — это отдельная песня. С каждой библиотекой можно работать в многопоточной среде, просто надо соблюдать
ряд правил для этого. STL вон тоже не многопоточная если на то пошло...

DB>Версия 4 вроде бы обещает быть получше, но с исключениями и потоками она до сих пор не дружит (хотя уже есть beta).

Qt работает на слишком многих платформах с различными по отцтойности компиляторами — отсюда изначальная политика минимализма c++ кода.

P.S.: И вообще, у меня сложилось впечатление, что для тебя не обсуждение главное, а посрать в камментах побольше....
Re[13]: Почему настоящие программисты избегают C++
От: olegkr  
Дата: 25.02.05 13:57
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Кстати добавлю: WinForms — это действительно работа дельфиста. Такую

C>уродливую систему могли написать только они.

C>Нет чтоб сделать как Swing в Java...


Свят-свят-свят! Не надо нам, дотнетчикам, свингов, упаси боже!
Re[14]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 14:05
Оценка: +1
olegkr пишет:

> C>Кстати добавлю: WinForms — это действительно работа дельфиста. Такую

> C>уродливую систему могли написать только они.
> C>Нет чтоб сделать как Swing в Java...
> Свят-свят-свят! Не надо нам, дотнетчикам, свингов, упаси боже!

Да я знаю. Большинство винформистов предпочитают VBшный стиль: без
разделения вида и модели, без нормальных layout'ов (anchor'ы — это
уродство), с абсолютно кривой иерархией наследования.

Зато "интуитивно", блин.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[13]: Почему настоящие программисты избегают C++
От: Awaken Украина  
Дата: 25.02.05 14:26
Оценка:
>обработчик сигнала должен иметь всеобъемлющий try {} catch (...) {}), что он не позволяет создавать многопоточный GUI (для отмазки

объясни в какой такой ОС существует многопоточный GUI?
в винде он однопоточный по определению (для этого и очередь сообщений)
Re[15]: Почему настоящие программисты избегают C++
От: olegkr  
Дата: 25.02.05 14:29
Оценка: -1
Здравствуйте, Cyberax, Вы писали:

C>Да я знаю. Большинство винформистов предпочитают VBшный стиль: без

C>разделения вида и модели, без нормальных layout'ов (anchor'ы — это
C>уродство), с абсолютно кривой иерархией наследования.

Абсолютно точно. Не надо нам нафиг этих разделений, вынуждающих плодить классы, как на дрожжах, даже в примитивных формах. Ага, анонимные классы помогают... до тех пор пока они не станут занимать половину всего кода и найти начало и конец становится затруднительно
Layout тоже нам нах не надо. Когда для того, что бы спозиционировать как тебе надо (а не лайауту) контролы, нужно ломать голову и вкладывать один лайаут в другой, одновременно вспоминая многочисленные параметры конструкторов и прочую мутотень... Нее, я лучше в визуальном дизайнере (каковые для свинга имеются, но работают, мягко говоря глюкаво) их мышкой накидаю за пять минут и займусь более полезной работой. Хотя не спорю, иногда лайауту нужны... в одной форме из ста. Но терпеть неудобства от них в 99 формах — я пас. Вам нравится — велкам. У нас разные понятия прекрасного.
А вот чего ради ты приплел иерархия? Тут я даже теряюсь. Ни в свинге, ни в дотнете, оная иерархия как-то не вызывала никаких чувств у меня.
Ну а тормознутось и убогость (даже если поставить WinXP-шную темку) получаемого в свинге интерфейса, думаю всем известна. Блин, ну какого хрена этот свинг плодит кучу объектов внутри себя, что в сочетании с особенностями джавовского GC вызывают периодические подвисания... долго искал лекарство от этой болезни, не нашел, может в java 1.5 получше дело обстоит.
Re[14]: Почему настоящие программисты избегают C++
От: Pazak Россия  
Дата: 25.02.05 14:51
Оценка:
Здравствуйте, olegkr, Вы писали:

C>>Нет чтоб сделать как Swing в Java...

O>Свят-свят-свят! Не надо нам, дотнетчикам, свингов, упаси боже!

Ну не знаю как насчет дотнетчиков, а мне, дельфисту, swing'овские layout'ы очень даже понравились.
Ку...
Re[16]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 14:52
Оценка: +1
olegkr пишет:

> C>Да я знаю. Большинство винформистов предпочитают VBшный стиль: без

> C>разделения вида и модели, без нормальных layout'ов (anchor'ы — это
> C>уродство), с абсолютно кривой иерархией наследования.
> Абсолютно точно. Не надо нам нафиг этих разделений, вынуждающих
> плодить классы, как на дрожжах, даже в примитивных формах.

Разделение на модель-вид-контроллер не заставляет "плодить классы". Как
раз наоборот.

> Ага, анонимные классы помогают... до тех пор пока они не станут

> занимать половину всего кода и найти начало и конец становится
> затруднительно

Анонимные классы — это аналог делегатов, а не следствие MVC.

> Layout тоже нам нах не надо. Когда для того, что бы спозиционировать

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

Да, нужно помнить параметры FormLayout'а.... Чрезвычайно
сложнозапоминаемые, настолько, что даже автокомплит совсем не поможет. И
ведь еще даже документацию просмотреть придется. Нет, это не для ВБистов.

> Нее, я лучше в визуальном дизайнере (каковые для свинга имеются, но

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

Чтобы потом все юзеры плевались от неправильно масштабируемых (или
вообще немасштабируемых) форм.

> Хотя не спорю, иногда лайауту нужны... в одной форме из ста.


В 9 из 10.

> А вот чего ради ты приплел иерархия? Тут я даже теряюсь. Ни в свинге,

> ни в дотнете, оная иерархия как-то не вызывала никаких чувств у меня.

У меня она вызывает отвращение. Интерфейсы не выделены, наследование
используется сверх меры

> Ну а тормознутось и убогость (даже если поставить WinXP-шную темку)

> получаемого в свинге интерфейса, думаю всем известна.

Мне, лично, плевать на конкретную реализацию Свинга — я говорю об общих
принципах проектирования (кстати, в Mac OS X Свинг использует родной
графический движок и неотличим от остальных приложений).

Хотя МС в этот раз поступила честно — пакет называется WinForms, так как
ни на что большее, чем формочки, он не способен.

> Блин, ну какого хрена этот свинг плодит кучу объектов внутри себя, что

> в сочетании с особенностями джавовского GC вызывают периодические
> подвисания... долго искал лекарство от этой болезни, не нашел, может в
> java 1.5 получше дело обстоит.

Руки, значит, не так работают. IDEA написана на Свинге, однако летает
даже на старых машинах.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[14]: Почему настоящие программисты избегают C++
От: Кодт Россия  
Дата: 25.02.05 15:11
Оценка: +1
Здравствуйте, Awaken, Вы писали:

A>объясни в какой такой ОС существует многопоточный GUI?

A>в винде он однопоточный по определению (для этого и очередь сообщений)

Вот в винде он как раз многопоточный (для этого и существуют очереди сообщений у потоков).
И этим пользуются разные подпольные компоненты — DDE, OLE.
А вот делать именно user interface многопоточным в рамках одного приложения — это, как правило, больше проблем, чем выгод. Хотя ничего невозможного здесь нет, и WinAPI (в отличие от других платформ и обёрток) вполне справляется.
Перекуём баги на фичи!
Re[17]: Почему настоящие программисты избегают C++
От: olegkr  
Дата: 25.02.05 15:36
Оценка: +1 -1 :)
Здравствуйте, Cyberax, Вы писали:

C>Разделение на модель-вид-контроллер не заставляет "плодить классы". Как

C>раз наоборот.
C>Анонимные классы — это аналог делегатов, а не следствие MVC.

Ага, только для обработки одного event-а нужно писать либо отдельный, либо анонимный класс. Хочешь обработать нажатия кнопки — пиши класс, наследуемый от ActionListener-a, даже если кнопка одна. Хочешь обработать нажатие клавиши, пиши класс от KeyAdapter-а. Особенно приятно, что интерфейсы содержат не один callback, а несколько, и приходится использовать адаптеры с заглушками. Крайне "удобно". Небольшой, но типичный пример.

btnOK.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent ae)
    {
        ...
    }
});


И понеслось... В итоге — или код инициализации забит обработчиками, либо куча доп.классов.

...
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
...
private void btnOK_Click(object sender, EventArgs e)
{
    ...
}


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

C>Да, нужно помнить параметры FormLayout'а.... Чрезвычайно

C>сложнозапоминаемые, настолько, что даже автокомплит совсем не поможет. И
C>ведь еще даже документацию просмотреть придется. Нет, это не для ВБистов.

Для примера, GridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady)
Читаемость куска кода, использующего данную конструкцию просто изумительная. Да и вообще, весело разбираться в чужом коде на свинге, с целью переместить кнопочку "отсуда-сюда". Работа для настоящих интеллектуалов, дотнет отдыхает, комплит помогает.
Про документацию я вообще умалчиваю. Такое не может называться полноценной документацией.

C>Чтобы потом все юзеры плевались от неправильно масштабируемых (или

C>вообще немасштабируемых) форм.

Anchor-ы решают сию задачу в 9 из 10 случаев. Для оставшегося одного можно использовать и самописный лайаут менеджер. Не велика задача.

C>У меня она вызывает отвращение. Интерфейсы не выделены, наследование

C>используется сверх меры

Ценность интерфейсов в винформах сомнительная, благодаря наличию евентов. Это в свинге без интерфейсов никуда.

C>Хотя МС в этот раз поступила честно — пакет называется WinForms, так как

C>ни на что большее, чем формочки, он не способен.

Вот только одна беда. На винформах не проблема написать professional-looking GUI, а на свинге это вызывает немалые затруднения. Фактически, любой прилично-выглядящий ГУИ, типа эклипса — самопис.

C>Руки, значит, не так работают. IDEA написана на Свинге, однако летает

C>даже на старых машинах.

Если бы летала... Впрочем, возможно я просто привык к шустрому VS.NET вот и ворчу. В принципе, поработав пару месяцев можно привыкнуть.
Re[15]: Почему настоящие программисты избегают C++
От: olegkr  
Дата: 25.02.05 15:46
Оценка:
Здравствуйте, Pazak, Вы писали:

P>Ну не знаю как насчет дотнетчиков, а мне, дельфисту, swing'овские layout'ы очень даже понравились.


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