Re[15]: Почему настоящие программисты избегают C++
От: Awaken Украина  
Дата: 25.02.05 15:49
Оценка:
К>Вот в винде он как раз многопоточный (для этого и существуют очереди сообщений у потоков).
К>И этим пользуются разные подпольные компоненты — DDE, OLE.

очереди сообщений относятся к приложению а не к графическому движку.
разве можно из двух потоков одновременно (а не ставя запросы в очередь) рисовать на одном DC?
или например запустить асинхронную операцию заливки экрана а самому в это время рисовать в другом месте
Re[16]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 15:49
Оценка:
olegkr пишет:

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

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

А необходимы они всегда (якоря — пример простейшего layout'а). Достают
уже программы без поддержки масштабирования окон.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[18]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 16:01
Оценка:
olegkr пишет:

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

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

[большой скип]

> Наглядно видно, что подписка на событие и сам обработчик разделены.

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

Ну и как все это относится к MVC? Понятно, что некоторые фичи C#
позволяют слегка сократить код (кстати, по методу на обработчик события
— тоже некузяво), но как это относится к архитектуре WinForms?

> 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)
> Читаемость куска кода, использующего данную конструкцию просто
> изумительная.

Говорю же: FormLayout. Всякие GridBag'и нужно забыть как пережитки прошлого.

> Да и вообще, весело разбираться в чужом коде на свинге, с целью

> переместить кнопочку "отсуда-сюда". Работа для настоящих
> интеллектуалов, дотнет отдыхает, комплит помогает.
> Про документацию я вообще умалчиваю. Такое не может называться
> полноценной документацией.

Чего? Весь _исходный_ и откомментированный код Свинга доступен в JDK,
JavaDoc качается с сайта, есть замечательный Swing Tutorial. Чего еще надо?

А вот где взять код WinForms — мне самому интересно.

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

> C>вообще немасштабируемых) форм.
> Anchor-ы решают сию задачу в 9 из 10 случаев.

Нет.

> Для оставшегося одного можно использовать и самописный лайаут

> менеджер. Не велика задача.

Да, поэтому в большинстве программ она и не решена.

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

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

Нда.... Крайняя степень VB-запущенности.

Интерфейсы нужны для отделения разных видов функциональности. Вот,
например, в WinForms список сам хранит свои данные. В Swing'е список
получает данные из объекта, реализующего интерфейс ListModel.
Соответственно, я могу сделать ListModel (точнее это уже давно
сделаено), который работает поверх ResultSet'а из БД и получить
"датабиндинг" (так любимый дельфистами). А еще можно сделать ListModel,
получающий данные по RPC с удаленного сервера.

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

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

> как
> C>ни на что большее, чем формочки, он не способен.
> Вот только одна беда. На винформах не проблема написать
> professional-looking GUI

К сожалению только "looking", а не "working".

> а на свинге это вызывает немалые затруднения. Фактически, любой

> прилично-выглядящий ГУИ, типа эклипса — самопис.

Агащаз. Эклипс использует свой GUI-пакет только из-за того, что Swing во
время проектировки Эклипсы был еще малоюзабельным.

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

> C>даже на старых машинах.
> Если бы летала... Впрочем, возможно я просто привык к шустрому VS.NET
> вот и ворчу.

Рекомендую поставить IDEA 3.0, или еще лучше IDEA 2.6 — новые версии
Идеи сами по себе тормозные (не из-за GUI).

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

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

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

Он однопоточный в том смысле, что нельзя безопасно работать с
GUI-элементами, созданными в одном потоке, из другого потока (хотя
некоторые оконные сообщения действительно будут обрабатываться корректно).

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

C>А необходимы они всегда (якоря — пример простейшего layout'а). Достают

C>уже программы без поддержки масштабирования окон.

Простейший, то он простейший. Только в большинстве случаев его хватает за глаза. И не надо громоздить для примитивнейшой формы лайаут в лайауте. Из практики, чего мне не хватает в дополнении к якорям — размещения контролов пропорционально-горизонтально, что бы они одновременно растягивались. Буду писать, благо к дотнету подключить лайаут не так сложно и он будет прекрасно работать в дизайнере форм. Хотя... по GUI Design Guidelines ширина лабелов, текстбоксов, листбоксов и комбобоксов на форме должна быть кратной 40px, не очень хорошо это правило стыкуется со свободно-масштабируемыми формами.
Re[18]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 16:09
Оценка:
olegkr пишет:

> C>А необходимы они всегда (якоря — пример простейшего layout'а). Достают

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

Пришли к соглашению: WinForms для примитивных форм. С чем я согласен.

> Из практики, чего мне не хватает в дополнении к якорям — размещения

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

Ссылки, плиз.

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

C>Ну и как все это относится к MVC? Понятно, что некоторые фичи C#

C>позволяют слегка сократить код (кстати, по методу на обработчик события
C>- тоже некузяво), но как это относится к архитектуре WinForms?

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

C>Говорю же: FormLayout. Всякие GridBag'и нужно забыть как пережитки прошлого.


Какой еще FormLayout? Поиск по javadoc не дал результата.

C>Чего? Весь _исходный_ и откомментированный код Свинга доступен в JDK,

C>JavaDoc качается с сайта, есть замечательный Swing Tutorial. Чего еще надо?

Мелочи. Удобной документации. javadoc — большая свалка и помойка, по сравнению с MSDN.

C>А вот где взять код WinForms — мне самому интересно.


Неуверен на 100%, но можно посмотреть на mono project. Впрочем навряд-ли. Винформы никто переносить на другие платформы не собирается, т.к. он заточен под Win.

>> Anchor-ы решают сию задачу в 9 из 10 случаев.

C>Нет.
Да. Подеремся?

C>Да, поэтому в большинстве программ она и не решена.

Лениво поди девелоперами, да и не особо нужно.

C>В Swing'е список получает данные из объекта, реализующего интерфейс ListModel.


Отсылаю к документации по дотнету. В частности, к IBindingList.

C>К сожалению только "looking", а не "working".

Ошибаешься. Работает все на-ура, в отличии от свинга.

C>Агащаз. Эклипс использует свой GUI-пакет только из-за того, что Swing во

C>время проектировки Эклипсы был еще малоюзабельным.

А он и сейчас малоюзабелен. Изменений к лучшему не видно.
Re[19]: Почему настоящие программисты избегают C++
От: olegkr  
Дата: 25.02.05 16:24
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Пришли к соглашению: WinForms для примитивных форм. С чем я согласен.


Ага, а свинг — для кривых форм и любителей потрахать мозги себе и юзеру. Согласен.

C>Ссылки, плиз.


Наследуешься от класса LayoutEngine и вперед.
Re[20]: Почему настоящие программисты избегают C++
От: olegkr  
Дата: 25.02.05 16:27
Оценка:
Здравствуйте, olegkr, Вы писали:

O>Наследуешься от класса LayoutEngine и вперед.


Ссылку забыл дать по LayoutEngine
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/custlaywinforms.asp
Re[20]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 16:35
Оценка:
olegkr пишет:

> C>Ну и как все это относится к MVC? Понятно, что некоторые фичи C#

> C>позволяют слегка сократить код (кстати, по методу на обработчик события
> C>- тоже некузяво), но как это относится к архитектуре WinForms?
> Напрямую. Ты не обязан строго следовать MVC.

Ну что сказать... Не знаешь ты, что такое MVC.

> C>Говорю же: FormLayout. Всякие GridBag'и нужно забыть как пережитки

> прошлого.
> Какой еще FormLayout? Поиск по javadoc не дал результата.

http://www.jgoodies.com/freeware/forms/

> C>Чего? Весь _исходный_ и откомментированный код Свинга доступен в JDK,

> C>JavaDoc качается с сайта, есть замечательный Swing Tutorial. Чего
> еще надо?
> Мелочи. Удобной документации. javadoc — большая свалка и помойка, по
> сравнению с MSDN.

Нда уж....

JavaDoc — это всего лишь автосгенерированная документация по коду.
Аналога помойки MSDN в Java нет.

>>> Anchor-ы решают сию задачу в 9 из 10 случаев.

> C>Нет.
> Да. Подеремся?

Давай, как раз в Москву собираюсь ехать скоро

> C>Да, поэтому в большинстве программ она и не решена.

> Лениво поди девелоперами, да и не особо нужно.

Нужно. Например при разрешении 1400x1050 всякие формочки в 400 пикселей
выглядят оооочеьнь мелкими.

> C>В Swing'е список получает данные из объекта, реализующего интерфейс

> ListModel.
> Отсылаю к документации по дотнету. В частности, к IBindingList.

Не то. Вот код интефейса ListModel (комментарии и импорты удалены):
public interface ListModel
{
  int getSize();
  Object getElementAt(int index);
  void addListDataListener(ListDataListener l);
  void removeListDataListener(ListDataListener l);
}

Все! Это все, что мне нужно реализовать. Как мне сделать тоже самое для
IBindingList'а? Написать свою реализацию DataTable'а?

И как быть с деревьями? Вот код TreeModel'а для Явы:
public interface TreeModel
{
    public Object getRoot();
    public Object getChild(Object parent, int index);
    public int getChildCount(Object parent);
    public boolean isLeaf(Object node);
    public void valueForPathChanged(TreePath path, Object newValue);
    public int getIndexOfChild(Object parent, Object child);
    void addTreeModelListener(TreeModelListener l);
    void removeTreeModelListener(TreeModelListener l);
}


> C>К сожалению только "looking", а не "working".

> Ошибаешься. Работает все на-ура, в отличии от свинга.

Угу, то-то Янус до сих пор нормально не работает на моей машине.

> C>Агащаз. Эклипс использует свой GUI-пакет только из-за того, что

> Swing во
> C>время проектировки Эклипсы был еще малоюзабельным.
> А он и сейчас малоюзабелен. Изменений к лучшему не видно.

Еще бы. Особенно не заметно, если и не смотреть.

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

К>>Вот в винде он как раз многопоточный (для этого и существуют очереди сообщений у потоков).

К>>И этим пользуются разные подпольные компоненты — DDE, OLE.

A>очереди сообщений относятся к приложению а не к графическому движку.

A>разве можно из двух потоков одновременно (а не ставя запросы в очередь) рисовать на одном DC?

Можно.

A>или например запустить асинхронную операцию заливки экрана а самому в это время рисовать в другом месте


Можно. Сколько угодно.

Другое дело, что заставлять несколько потоков драться за один графический контекст — это маразм...
Перекуём баги на фичи!
Re[20]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 16:45
Оценка: :)
olegkr пишет:

> C>Пришли к соглашению: WinForms для примитивных форм. С чем я согласен.

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

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

> C>Ссылки, плиз.

> Наследуешься от класса LayoutEngine и вперед.

Ага, конечно. Еще бы WM_SIZE посоветовал обрабатывать.

Готовые взаимозаменяемые Layout'ы где? Тот в МСной статье — фигня.
Особенно понравилось:
===========
*Layout mode interaction*
Currently, having *Spring*, *FillContainer*, and *SizeMode* set
generates some odd behavior. This should be cleaned up so that the
layout code becomes more fault-tolerant.
===========

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

C>Ну что сказать... Не знаешь ты, что такое MVC.


ОК. Пусть будет так. Не знаю я что такое MVC, хоть данная модель и используется в нашем проекте. Дело в том, что в дотнете есть выбор — использовать MVC или нет. В свинге такого выбора просто нет.

C>http://www.jgoodies.com/freeware/forms/


Интересная весчь. Спасибо. Единственная стоящая весчь, и то наваяли не в SUN-е.

C>JavaDoc — это всего лишь автосгенерированная документация по коду.

C>Аналога помойки MSDN в Java нет.

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

C>Давай, как раз в Москву собираюсь ехать скоро


Давай к нам — нам как раз пара свингистов нужны на проект. С супер-знанием свинга на хорошие бабки. Если интересно — пиши на olegkr@email.su.

C>Не то. Вот код интефейса ListModel (комментарии и импорты удалены):

C>Все! Это все, что мне нужно реализовать. Как мне сделать тоже самое для
C>IBindingList'а? Написать свою реализацию DataTable'а?

Если проще — то имеется IList.

C>Угу, то-то Янус до сих пор нормально не работает на моей машине.


Я всегда думал — что Янус написали злобные джависты, что бы им было за что ругать дотнет.
Re[21]: Почему настоящие программисты избегают C++
От: olegkr  
Дата: 25.02.05 16:53
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Нет, Свинг — для профессиональных GUI-программистов, которые могут

C>обойтись и без редактора формочек.

И которые готовы всю жизнь потратить на размещение контролов на форме.

C>Готовые взаимозаменяемые Layout'ы где? Тот в МСной статье — фигня.


Понятно дело, что писать надо. У нас один уже написан, вполне рабочий, и я бы не сказал, что супер-пупер это сложно.
Re[22]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 16:58
Оценка:
olegkr пишет:

> C>Нет, Свинг — для профессиональных GUI-программистов, которые могут

> C>обойтись и без редактора формочек.
> И которые готовы всю жизнь потратить на размещение контролов на форме.

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

> C>Готовые взаимозаменяемые Layout'ы где? Тот в МСной статье — фигня.

> Понятно дело, что писать надо. У нас один уже написан, вполне рабочий,
> и я бы не сказал, что супер-пупер это сложно.

Каждый свой неинтероперабельный велосипед пишет....

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[22]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 17:03
Оценка:
olegkr пишет:

> C>Ну что сказать... Не знаешь ты, что такое MVC.

> ОК. Пусть будет так. Не знаю я что такое MVC, хоть данная модель и
> используется в нашем проекте. Дело в том, что в дотнете есть выбор —
> использовать MVC или нет. В свинге такого выбора просто нет.

Покажите мне, где в WinForms есть MVC.

А в Свинге можно элементарно не использовать MVC, а просто пользоваться
стандартными реализациями моделей и видов — будет почти все как в WinForms.

> C>JavaDoc — это всего лишь автосгенерированная документация по коду.

> C>Аналога помойки MSDN в Java нет.
> Ага, нет бабок — генерим доки с сорцов (это уже мне наш джавист
> подсказывает у него почему-то на джавадоки аллергия)

JavaDoc — это документация именно _к_ _исходникам_. То есть просто
документируются классы и методы — так же как и reference'ы в MSDN'е.

> C>Давай, как раз в Москву собираюсь ехать скоро

> Давай к нам — нам как раз пара свингистов нужны на проект. С
> супер-знанием свинга на хорошие бабки. Если интересно — пиши на
> olegkr@email.su.

И так работа уже есть (на С++, а не на Java — я многопрофильный)

> C>Не то. Вот код интефейса ListModel (комментарии и импорты удалены):

> C>Все! Это все, что мне нужно реализовать. Как мне сделать тоже самое для
> C>IBindingList'а? Написать свою реализацию DataTable'а?
> Если проще — то имеется IList.

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

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

C>Нет, при некотором опыте руками писать на Свинге получается _быстрее_,

C>чем рисовать в редакторе.

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

C>Каждый свой неинтероперабельный велосипед пишет....


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

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

> графический контекст — это маразм...

Еще очень забавный опыт: создать в одном потоке дочернее окно с
родителем в другом потоке.

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

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

>> графический контекст — это маразм...

C>Еще очень забавный опыт: создать в одном потоке дочернее окно с

C>родителем в другом потоке.

Вот только что опыт ставил. Результат — мрачный, но (через пень-колоду) работает.
Перекуём баги на фичи!
Re[24]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 25.02.05 17:09
Оценка:
olegkr пишет:

> C>Нет, при некотором опыте руками писать на Свинге получается _быстрее_,

> C>чем рисовать в редакторе.
> Я бы поверил, если бы сам не писал на Свинге. Возможно через
> пару-тройку лет интерфейсы вслепую и можно натренироваться фигачать.

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

> C>Каждый свой неинтероперабельный велосипед пишет....

> аналогично можно сказать и про jgoodies

Но! В Яве у layout'ов стандартный интерфейс, поэтому тот же JGoodies без
проблем может интеоперировать хоть с FlowLayout'ом из JDK1.0.1

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.