Декларативный GUI

Тема в разделе "WASM.PROJECTS", создана пользователем captain cobalt, 1 янв 2005.

  1. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Декларативный GUI - это способ полностью описать GUI и его поведение на некотором расширяемом структурированном языке описания данных, например, XML. Полностью означает, что в одном описании действительно содержится вся информация о целевом GUI: какий заголовок имеет главное окно, какие пункты имеет главное меню (File ... About), какие есть тулбары, какие пункты содержатся в подменю главного меню, какие диалоговые окна появляются при их выборе, какие в них есть флажки, радиокнопки, кнопки "OK" "Cancel", и т. д., и т. п.



    Это описание затем обрабатывается некоторым софтом (который нужно написать) и при разработке софта не нужно будет больше тратить время на программирование GUI. Больше ресурсов останется на разработку тех функций программ, ради которых они и разрабатываются; функции эти будут вызываться в соответствии с описанием GUI...



    Соображения:



    -- Язык описания GUI не должен позволять делать предположения насчёт размеров контролов. Если вы думаете, что "точные координаты" и "визуальное проектирование" - рулят, то посмотрите, как выглядят ваши программы с изменёнными стандартными средствами размерами стандартных контролов. ;)



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



    -- Должна быть возможность локализации. В описании GUI не должно быть строк в явном виде. Вместо этого должны быть указания, где брать эти строки. Это должно позволить легко локализовывать даже скомпилированные программы.



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



    -- Следует предусмотреть расширяемость языка описания GUI.



    -- Сверхцелью является вовсе не облегчение программирования "виндузЯтников хрЕновых", а переносимость гуёвых программ. Поэтому в первом приближении выразительные возможности языка описания GUI будут пересечением возможностей win32, Gtk и Qt.



    -- Однако должна быть возможность при необходимости тщательно описать все низкоуровневые детали (передача параметров, возврат результатов, и т. п.) вызова пользовательских функций.
     
  2. Same

    Same New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2003
    Сообщения:
    114
    А чем тебе не нравится использование для таких целей XML? вон люди на нём языковые модули пишут - а нектоторые скины к своим прогам...
     
  3. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Ничего не имею против XML, и даже упоминаю его. :)

    Речь идёт об инструменте программирования, а не об одноразовом использованиии чего-либо.

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



    Гипотеза о возможности полностью описать GUI как структурированные данные следует из гипотезы иерархичности таких интерфейсов. Типичный приём работы пользователь заключается в том, чтобы выбрать пункт главного меню, выбрать подпункт, появляется диалоговое окно, поработать с диалоговым окном, программа выполняет "полезную функцию". Конкретные случаи могут варьироваться, однако важно лишь что элементы GUI (почти) никогда не работают циклически или рекурсивно. Есть лишь всегда присутствующий главный цикл прохода по этой иерархии от корня (или, возможно, от промежуточной точки). И цикл этот выполняет обработчик описания GUI.
     
  4. Same

    Same New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2003
    Сообщения:
    114
    Ага значит некий визуал редактор типа рисуеш форму кнопочки менюшки он ето дело разбирает и сладывает в отдельный файл путь тот же XML а потом компилирует исполнительный файл который который анализируя XML создаёт ко нему окошко(в том виде в котором мы его нарисовали)?

    В принципе можно только муторно это и возникнет проблема с определением событий - например нет проблем создать кнопку динамически, есть проблема присвоить ей действие(причём нужное) по событию
     
  5. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    captain cobalt

    Чем не устраивают rc-скрипты?
     
  6. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Язык описания интерфейсов - вещь важная и нужная. По крайней мере, я такую потребность уже ощутил, когда мне стало вломы в очередной раз ручками набирать, какую панель нужно делать видимой, если пользователь кликнул по чекбоксу. Надо полагать, кончится все тем, что такой язык появится :)
     
  7. Edmond

    Edmond узник замка IF THEN ELSE

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    203
    Адрес:
    WASM.RU
    captain cobalt

    Да, это тоже не первого года проблема.



    Но позвольте немного сказануть.



    Во первых такой язык на XML есть. И называется он XFORMS W3C.



    Во вторых (как говорит Володя), библиотеки Qt и т.д. - это просто НАСТОЯЩЕЕ уродство. С них кода больше чем можно себе представить. Зачем это нам, ассемблерщикам?



    В третьи - да такой язык, или скрипт-язык действительно необходим, главное верно определить границы проекта.



    Что касается самого интерфейса GUI, то беготня за интерфейсом к приложению в конце концов обернёться тем же самым Qt.



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

    Или скажем так - тупая инкапсуляция - не рулит.



    Поэтому что вопрос в лоб: что именно будет уметь этот ЯВУ, или инструмент?
     
  8. Edmond

    Edmond узник замка IF THEN ELSE

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    203
    Адрес:
    WASM.RU
    Quantum

    RC - скрипты управляют ТОЛЬКО ВИДОМ. Но не описывают законы функциональности.



    Кстати - вот в этом смысле XML не рулит!!!
     
  9. Chib777

    Chib777 Александр

    Публикаций:
    0
    Регистрация:
    22 сен 2003
    Сообщения:
    82
    Адрес:
    Ukraine, Odessa
    captain cobalt



    Можно чуть попроще об идее и о цели.
     
  10. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    А ты смотрел TCL/TK ?
     
  11. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Про 'Longhorn' слыхали?

    Всё это там уже сделано...

    XAML называется.
     
  12. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    AsmGuru62

    Про 'Longhorn' слыхали?



    Будет такая же мертвечина, как и Windows XP styles и .Net. Win2000, WinXP и Win2003 про этот ХАМЛ ничего не знают и не узнают никогда. Если бы ту долбаную DLL не расхачили, у нас бы до сих пор было ровно два стиля: Серые Прямоугольники и Luna. Скины сторонних производителей для Media Player опять же по пальцАм одной руки пересчитать можно. Все, что требует от пользователя доустановки "системных" компонентов, очевидным образом является трупорожденным и использоваться будет только отдельными энтузиастами "передовых технологий", потому как подавляющему большинству оно нахрен не сдалось. А подавляющему большинству лицензионных юзеров оно нахрен не сдалось два раза: первый раз потому что и так все работает, а второй - потому что за деньги. Ну и программистам оно нахрен не сдалось три раза: первые 2 я уже назвал, а третье - потому что сужает круг потенциальных пользователей.
     
  13. Same

    Same New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2003
    Сообщения:
    114
    2 Edmond

    Кстати - вот в этом смысле XML не рулит!!!

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

    2 AsmGuru62

    Про 'Longhorn' слыхали?

    А как же "переносимость гуёвых программ" за его пределами?
     
  14. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев




    мне это делфи напомнило со всеми вытекающими... Имхо, ничего из этого не получится, по крайней мере применительно к ассемблеру - если даже все правильно реализовать (лет так через 5-6), то будем получать программку типа hello dword размером с пару мегабайт (хотя через 5-6 лет это уже будет не актуально :) ).
     
  15. Edmond

    Edmond узник замка IF THEN ELSE

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    203
    Адрес:
    WASM.RU
    masquer

    Причём тут Дельфи? Дельфи не от того потерпело крах :))



    Так всё таки - какие же границы проекта?
     
  16. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Edmond

    Причём тут Дельфи?



    Увы, почти ни при чем. В Delphi GUI почти не декларативен. Там чтобы видимость панели с состоянием чекбокса связать, код писать надо, а это плохо :-(



    Дельфи не от того потерпело крах :))



    А оно разве потерпело крах 8-) Кто бы мог подумать? :) На днях вообще-то очередная версия вышла, причем под старый добрый Win32, а не только под всякие дефекативные .Net. Только у нас, к сожалению, еще не появилась, чтобы можно было заценить фишку.
     
  17. Edmond

    Edmond узник замка IF THEN ELSE

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    203
    Адрес:
    WASM.RU
    CyberManiac

    Так в том то и дело, что не причём :)
     
  18. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    Хм, ну от тараканов и динамитом можно избавляться...





    Сам не пользуюсь, но говорят, что от версии к версии делфи все хуже и хуже, а для 8-й оперативки желательно иметь не менее 1 Гига, иначе тормозит безбожно. Все на 2-5й версиях сидят.
     
  19. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    masquer

    Сам не пользуюсь, но говорят, что от версии к версии делфи все хуже и хуже



    Никогда не слушай тех, кто говорит, что раньше солнце было ярче, вода - мокрее, а софт - лучше. Ибо они заблуждаются и идеализируют прошлое. На самом деле солнце было таким же тусклым, вода - такой же мутной, а софт (за _очень_ редким исключением) - таким же глючным, только еще более неудобным.



    >для 8-й оперативки желательно иметь не менее 1 Гига, иначе тормозит безбожно.



    Восьмерка - маздай, ибо дотнет. Я всегда знал, что дотнет нужно давить гидравлическим прессом, пока не респлодился. В Борланде, похоже, тоже доперли, что умным людям не след "задрав штаны, бежать за комсомолом" и вернули Win32 на место. По свидетельствам очевидцев, если от 2005-й оторвать дотнет, ее потребность в памяти уменьшается как бы не в 3 раза.



    >Все на 2-5й версиях сидят.



    У нас на предприятии "все" сидят на седьмой и понемногу присматриваются к 2005-й. Очень уж много там полезных фич в язык добавили.
     
  20. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    Когда это слышишь от десятка разных людей имеющих опыт 10+ лет на делфи, то поневоле приходится :)