LINUX.ORG.RU
ФорумTalks

Автоматизация создания GUI: насколько мы подошли к этому?

 , ,


0

1

Есть много книг про UX и GUI. (А также сейчас у нас есть нейросети чтобы их проанализировать.)

В связи с этим вопрос: возможно ли формализовать проектирование графических интерфейсов пользователя?

Скажем, было бы здорово создать DSL, описывающий интерфейс на уровне «контролируемый пользователем объект с такими-то свойствами», компилятор которого одним махом запроектирует красивый правильный нативный на данной платформу гуй (или его часть) и даст готовый код для втыкания в проект.

Абсолютно уверен что таким вопросом на планете уже задавались сотни людей. Не попадались ли вам результаты размышлений на эту тему или, например, попытки написать такой софт?


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

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

ispmanager

Там, видимо, «крупноблочно» это всё?

А я предполагаю размещение вообще всех виджетов в автоматическом режиме

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

Тут я бы полагался на оконный менеджер, хотя если удастся формализовать почему это должно быть на вот этом мониторе, а то на другом - почему бы и нет?

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

Нет, там на каждый «объект» монотонная форма-простыня со всеми его свойствами, и есть кнопки навигации по связям между объектами.

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

Тут я бы полагался на оконный менеджер,

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

ну а сейчас, ты наверное в курсе, как ведут себя с позиционирование оконные менеджеры под вяленным

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

Значит «да» - я примерно такой подход и имел ввиду

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

Это оффтопик, но решаемо.

Так то пользователи мониторов это вообще статпогрешность - нормальные люди пользуются экранами телефонов

pikabu
() автор топика
Последнее исправление: pikabu (всего исправлений: 1)

В связи с этим вопрос: возможно ли формализовать проектирование графических интерфейсов пользователя?

Нет не возможно.

Скажем, было бы здорово создать DSL

После чего другая контора создаст свой DSL, третья контора свой DSL, а стайка Васянов создаст свой Debian «DSL-free» со своим самобытным интерфейсом.

- - -

Специфика графической системы unix мешает описать все единым объектом, поскольку этот «единый объект» все равно вынужден будет учитывать прослойки рядом. И даже одинаковые с т.з. пользователя «объекты» у этих прослоек имеют разные параметры и свойства, проще говоря создаются по-разному.

Посему твой DSL просто будет выглядеть как набор функций, каждая из которых содержит пачку ifdef'ов для каждой прослойки и лапшу из преобразования типов. Ну вот не смогли дятлы из Gnome и такие же дятлы из Qt сделать для своих дятлокошек идентификаторы в виде int или хотя бы *char.

Поэтому чтобы тебе сделать кроссплатформенную программу - тебе либо ее нужно прибить гвоздями к тулкиту; либо в ее логике реализовать ту самую пачку ifdef'ов под каждый существующий.

Не попадались ли вам результаты размышлений на эту тему или, например, попытки написать такой софт?

Попадались. WxWidgets называется.

windows10 ★★★★★
()
Последнее исправление: windows10 (всего исправлений: 1)

...возможно ли формализовать проектирование графических интерфейсов пользователя?

Нет, это невозможно.

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

WxWidgets...

Штука хорошая.

Я сейчас курю FLTK, ибо WxWidgets слишком жирён для встраивания.

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

Я недостаточно хорошо объяснил и вы неверно поняли проблему

Речь не идёт о кроссплатформенности - это дело уже десятое, и WxWidgets тут никаким боком

Суть в том чтобы создать описание GUI без конкретики какая кнопка где расположена и за что отвечает: пусть всё это (а также вкладки, списки, крыжики, «группировку по смыслу» и т.д.) сделает какой-то компилятор на основе формальных или эмпирических данных, с учётом законов восприятия

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

Нет, это невозможно.

Доказательства?

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

Суть в том чтобы создать описание GUI без конкретики какая кнопка где расположена и за что отвечает: пусть всё это (а также вкладки, списки, крыжики, «группировку по смыслу» и т.д.) сделает какой-то компилятор на основе формальных или эмпирических данных, с учётом законов восприятия

LLM? Пишешь что где расположено и на каком языке и оно генерит нужный код.

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

LLM? Пишешь что где расположено и на каком языке и оно генерит нужный код.

В таком деле я противник LLM - всё должно быть детерминировано, с гарантией и быть объяснимо, а не как колдунство

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

В таком деле я противник LLM - всё должно быть детерминировано, с гарантией и быть объяснимо, а не как колдунство

Из-за того что на разных платформах при разных релизах/версиях поведение GUI может отличаться. Многих это разражало и всё пришло к тому что просто пишут под Electron чтоб не связываться с нативными нюансами. А так можешь обертку над WxWidgets сделать, будет примерно то что тебе нужно.

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

Там немного другое - VCL объектеая модель. И без разницы, чем возить.

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

Из-за того что на разных платформах при разных релизах/версиях поведение GUI может отличаться.

Эта проблема тоже решится если создать такой DSL: можно будет сделать разные бэкенды, учитывающие гайдлайны конкретных фреймворков/платформ

pikabu
() автор топика

Странная постановка вопроса. Сначала накидываешь Гуи на листочке потом описываешь это на САРI потом подключаешь считалку к своей Гуи и проверяешь как это работает, а потом насколько это удобно и как оно на вид. И чего тут автоматизировать? И зачем?

Бросай курить!

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

Эта проблема тоже решится если создать такой DSL: можно будет сделать разные бэкенды, учитывающие гайдлайны конкретных фреймворков/платформ

Если сделать рендер и обработку всей логики внутри приложения как это сделано в Electron, то достаточно протестировать на одной платформе и быть уверенным что с крайне большой вероятностью будет работать везде как и планировалось. С фреймворком прийдется проверять на всех версиях всех платформ учитывая всякие библиотеки/программы которые влияют на GUI.

У меня был случай когда разрабатывал приложение на Qt, протестировал на Linux и думал что все будет работать нормально. Но начинаю получать жалобы от пользователей что оно вообще не запускается а падает. Когда начал разбираться оказалось что падало из-за системной темы, при смены темы всё продолжало работать нормально. Вот и как после этого писать нативные приложения, всё желание пропало. Из-за таких мелочей либо делать рендер и логику внутри приложения где ты всё контролируешь, либо запускать GUI в отдельном процессе и при падении делать fallback на собственный рендер. Иначе не сможешь гарантировать работу.

V1KT0P ★★
()

Не попадались ли вам результаты размышлений на эту тему

Попадались.

ya-betmen ★★★★★
()

возможно ли формализовать проектирование графических интерфейсов пользователя?

В общем случае – нет, например, даже раскладки клавиатуры формализовать не удалось.

Не попадались ли вам результаты размышлений на эту тему

Декларативный синтез графических интерфейсов пользователя с помощью реляционного решателя ограничений © (cyberleninka.ru).

quickquest ★★★★★
()
Ответ на: комментарий от ya-betmen

А если пользователь ударит по компьютеру топором, то как твой фалбак поможет?

При чем здесь внешнее воздействие? Тут про изоляцию от внешнего воздействия которое ломает логику приложения и нет гарантий правильной работы хотя казалось бы всё сделал как надо. Как пример можешь посмотреть список программ в черном списке Firefox которые ломают функционал, влезая в чужой процесс.

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

Декларативный синтез графических интерфейсов пользователя с помощью реляционного решателя ограничений

© (cyberleninka.ru).

Вау! Спасибо!

pikabu
() автор топика

Не думаю, что подобное возможно формализовать. Вспомнились подходы к GUI Winamp'а, Sonique и Jetaudio. Вот КАК оценить, кто из них прав?

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

Не думаю, что подобное возможно формализовать.

Пока что это не доказано

Вспомнились подходы к GUI Winamp’а, Sonique и Jetaudio. Вот КАК оценить, кто из них прав?

Это какие-то частные случаи

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

pikabu
() автор топика
Ответ на: комментарий от ya-betmen

А кривая тема поставленная юзером это внутреннее воздействие?

Эта тема была по умолчанию в дистрибутиве, пользователь её специально не выбирал. Еслиб пользователь что-то испротил то тогда это его проблема в основном(если же он платит деньги то можно и специально под него сделать изменения).

Вот такие ситуации когда вроде делаешь всё по правилам а в итоге оно не работает очень сильно раздражает, а также отнимает кучу времени на разбирательство. Вместо того чтоб пилить главный функционал программы, приходится заниматься борьбой с GUI хотя казалось бы за столько лет уже должно было устояться по крайней мере для обыденных случаев. Это одна из причин популярности Electron, он обеспечивает высокую предсказуемость предоставляемого API при чем кроссплатформенно.

V1KT0P ★★
()
Ответ на: комментарий от ya-betmen

Сейчас уже не вспомню, а так как уже не работаю в той компании то и таску посмотреть не могу. Там по умолчанию KDE был, так что возможно Kubuntu или похожий. У них в багтрекере был баг по этому поводу.

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

Ну если это была кубунта с дефольной темой то сорян, но это приложение глючное. А то как в анекдоте, вся рота не в ногу...

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

Ну если это была кубунта с дефольной темой то сорян, но это приложение глючное. А то как в анекдоте, вся рота не в ногу…

Так мне от этого не легче особенно учитывая что я разрабатывал платное ПО, и приходилось разбираться со всеми проблемами.

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

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

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

Хорошо что мне не приходилось писать ПО требующее работать с 3D. Как-то ради интереса смотрел список забаненых драйверов GPU в Firefox/Chrome/Safari.

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

В таком деле я противник LLM - всё должно быть детерминировано, с гарантией и быть объяснимо, а не как колдунство

А потом тебя сделают тимлидом, и что будешь делать?)

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

А ты Гуи вообще писал? А то, что то не то с таким подходом как у тебя.

Писал. Что не так с подходом?

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

Это я к тому, что ты можешь быть формально прав, но это как рекурсия в продакшн коде, ты её писал в расчете на 3 уровня, а тебе 100500 приехало. Знать распространеный сетап у юзеров тоже нужно.

ya-betmen ★★★★★
()

Если ИИ реально будет существовать, то никакого смысла в подобном DSL нет. Зачем он может быть нужен? Будет лишь одна кнопка «Сделать мне хорошо», и ту нажимать не надо будет.

Допустим, разработчик пишет программу для проектирования бань. Зачем эта программа нужна потребителю с ИИ, который будет лишь писать или говорить: «Мне нужна баня с хамамом и на пять поэтесс»?.. Зачем нужна баня строителю, который будет говорить или писать: «Нарисуй мне проект бани на 5 этажей и 70 поэтесс»?.. Куда в этой схеме можно и нужно втыкать «программу с GUI»?

Chiffchaff
()
Последнее исправление: Chiffchaff (всего исправлений: 1)

в отдельно взятых отраслях нечто подобное может быть. Тот-же самый HMI, тот который human machine interface. По идее там можно по спецификации генерить черновой вариант (или вообще использовать принципиальную/функциональную схему). Ничуть не удивлюсь если у лидеров подобное уже есть и даже AI-шка к этому припахана.

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

Если ИИ реально будет существовать, то никакого смысла в подобном DSL нет.

Если ИИ реально будет существовать то перед человечеством встанут гораздо более важные вопросы чем дизайн GUI

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

Суть в том чтобы создать описание GUI без конкретики какая кнопка где расположена и за что отвечает: пусть всё это (а также вкладки, списки, крыжики, «группировку по смыслу» и т.д.) сделает какой-то компилятор на основе формальных или эмпирических данных, с учётом законов восприятия

А)

Нет, так оно не работает, и никто этим заморачиваться не будет.

Просто представьте на минутку, что вы пишете ответ на этот коммент, и кнопка «Поместить» у вас находится в самом начале страницы слева, а кнопка «Отменить» например справа снизу. Вас как программиста, субстанцией за такое закидают.

Все это потому что ваши эмпирические данные != мои эмпирические данные. Да и данные эти где-то нужно взять, т.е. сперва эти кнопки все таки придется разместить фиксированно.

- - -

В отличие от программирования и идущей с ней в ногу математики, где используются предельно точные значения и объяснения, в «формальных» и «эмпирических» данных, а так же в «законах восприятия» - точности нет, но в разметке она нужна.

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

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

В отличие от программирования и идущей с ней в ногу математики, где используются предельно точные значения и объяснения, в «формальных» и «эмпирических» данных, а так же в «законах восприятия» - точности нет, но в разметке она нужна.

Так я и предлагаю ввести своего рода «математику GUI»

pikabu
() автор топика
Последнее исправление: pikabu (всего исправлений: 1)
Ответ на: комментарий от pikabu

Речь не идёт о кроссплатформенности - это дело уже десятое

красивый правильный нативный на данной платформу гуй

windows10 ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)