Re[4]: Библиотека для создания графических интерфейсов польз
От: c-smile Канада http://terrainformatica.com
Дата: 16.09.17 17:18
Оценка:
Здравствуйте, alex_public, Вы писали:


_>Я сам предпочитаю во многих местах использовать исключительно функциональный стиль. Только вот есть небольшой нюанс: как раз для GUI стиль ООП является вполне себе естественным и оптимальным.


Ты уже сам определись: или "исключительно функциональный стиль" или "ООП является вполне себе естественным и оптимальным".
Что из этого верно?

CS>>Тогда как практически весь современный UI (Web это 99.99% всего UI) крайне далек от той изначальной модели.


_>

_>Предлагаю тебе просто открыть исходники какого-нибудь там Webkit'a и посмотреть своими глазами на реализацию этого самого Web UI — ты там увидишь всё те же самые C++ классы в классической ООП схеме.

Sciter тоже написан на C++ и использует классы и всё такое. Более того у меня используется динамическое наследование, см. мою дискуссию на SO. Здесь тоже обсуждалось. Так вот такие трюки это не совсем C++, а скорее C + VTBL руками сделанная.

Но суть в том что класс в смысле C++ там только один — namespace dom { class element; }. Т.е. снаружи такой системы UI это композиция однотипных элементов.
+ система event handlers которые уже и определяют как эти LEGO блоки себя ведут. Вот эти три <text>+<button>+<popup> собранные в одном месте есть COMBOBOX, а этот один <textarea> есть текстовый редактор.

Современная ситуация такова что базовых/классических элементов которые раньше использовались в UI в реальности не стало хватать с самого начала.
Появились всякие там OWNERDRAW и прочее попытки сделать это всё в ООП стиле... Ну кошмарно же получилось...

CS>>Т.е. весь современный UI это системы Lego блоков (DOM элементов) с динамически назначаемыми event handlers, свойствами и методами.


_>И это всё отлично ложится как раз на ООП модель.


Я не отрицаю, но давай уточним что такое "ООП модель". Это модель внутреннего устройства (WebKit, Gecko, Trident, h-smile engine в Sciter)
или то что предлагается использовать юзерам твоей OOП (MFC,Qt,wxWidgets,etc.)?

Если внутреннего устройства то это никого не парит.
Важно как API этого GUI engine устроен и его гранулярность.

CS>>Во многом functional и declarative programming. Проблема в том что UI имеет свою внутреннюю логику.


_>В HTML это происходит на машине клиента в момент загрузки страницы, а в Qt на машине разработчика в момент компиляции *.ui файлов — более эффективный подход.


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

Это вот
<body>hello world</body>

24 байта занимает. Предложи более компактный способ сериализации. И способ восстановления из того формата который существенно быстрее скажем этого вот моего парсера который я использую в sciter.
При все при том что координаты ты сериализовать не можешь — они не известны в общем случае (разные DPI и form factors target devices).


CS>>Без GC получить динамический UI сложно.


_>Полная ерунда и невладение C++.


Подозреваю что мой код работает на твоем компьютере в одном из установленных продуктов.
Сомневаюсь что твой — на моих.

Это я про объективные оценки того кто чем владеет.

CS>>Angular и React со товарищи рулят не просто так. Declarative code binding это не прихоть, а требование времени.

CS>>Мы перестали делать приложения "на всю жизнь". Время жизни UI решений теперь измеряется месяцами если не неделями.
CS>>Поэтому нужно уметь быстро подстраиваться под архитектуры OS и пр. Сколько жила Windows XP? А сколько Windows 7, а Windows 8.
CS>>Про Windows 10 я вообще молчу. Сейчас уже выходит Creators Update... Там некоторые UI принципы вообще другие...
CS>>Как пример сколько времени мы смотрели на кнопки в виде башни танка Тигр. А сколько в виде башни T64 (WinXP...Win7)? А сколько на современные плоские?
CS>>Сколько времени на цельнолитые windows? А сколько на современные blur behind (MacOS, Windows 8 и кульминация в Creators Update)...

_>Ты действительно считаешь, что правильное GUI должно это всё задавать в себе? Вообще то у разных людей разные вкусы и разные ОС, которые они настраивают под эти вкусы. Так что правильное GUI в идеале должно полностью соответствовать локальным настройкам, а не навязывать свои (такие приложения выделяются в негативную сторону, и кстати обычно это как раз приложения с веб интерфейсом или написанные на Java).


Я не знаю что такое "локальные настройки" в современном мире.

Windows XP и Windows 10 — там не то что настройки там UI API разные. В одном есть HWND во втором — уже нет (UWP).
А Linux? Gnome и KDE и твое приложение с тем самым .ui файлом что должно использовать?
Эта мулечка уже протухла лет 10 тому как... Какие нафиг "локальные настройки" в Microsoft Office? А в Visual Studio?
А если сравнить Sublime Text UI и скажем какой Notepad++ — ну блин UI/UX disaster же...
Отредактировано 16.09.2017 17:27 c-smile . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.