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

Discussion in 'WASM.PROJECTS' started by captain cobalt, Jan 1, 2005.

  1. captain cobalt

    captain cobalt New Member

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



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



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



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



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



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



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



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



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



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

    Same New Member

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

    captain cobalt New Member

    Blog Posts:
    0
    Joined:
    Dec 21, 2003
    Messages:
    222
    Location:
    /ru/perm
    Ничего не имею против XML, и даже упоминаю его. :)

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

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



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

    Same New Member

    Blog Posts:
    0
    Joined:
    Oct 23, 2003
    Messages:
    114
    Ага значит некий визуал редактор типа рисуеш форму кнопочки менюшки он ето дело разбирает и сладывает в отдельный файл путь тот же XML а потом компилирует исполнительный файл который который анализируя XML создаёт ко нему окошко(в том виде в котором мы его нарисовали)?

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

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

    Blog Posts:
    0
    Joined:
    Jan 6, 2003
    Messages:
    3,143
    Location:
    Ukraine
    captain cobalt

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

    CyberManiac New Member

    Blog Posts:
    0
    Joined:
    Sep 2, 2003
    Messages:
    2,473
    Location:
    Russia
    Язык описания интерфейсов - вещь важная и нужная. По крайней мере, я такую потребность уже ощутил, когда мне стало вломы в очередной раз ручками набирать, какую панель нужно делать видимой, если пользователь кликнул по чекбоксу. Надо полагать, кончится все тем, что такой язык появится :)
     
  7. Edmond

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

    Blog Posts:
    0
    Joined:
    Sep 2, 2002
    Messages:
    203
    Location:
    WASM.RU
    captain cobalt

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



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



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



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



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



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



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

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



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

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

    Blog Posts:
    0
    Joined:
    Sep 2, 2002
    Messages:
    203
    Location:
    WASM.RU
    Quantum

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



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

    Chib777 Александр

    Blog Posts:
    0
    Joined:
    Sep 22, 2003
    Messages:
    82
    Location:
    Ukraine, Odessa
    captain cobalt



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

    tylerdurden New Member

    Blog Posts:
    0
    Joined:
    Feb 25, 2004
    Messages:
    322
    А ты смотрел TCL/TK ?
     
  11. AsmGuru62

    AsmGuru62 Member

    Blog Posts:
    0
    Joined:
    Sep 12, 2002
    Messages:
    689
    Location:
    Toronto
    Про 'Longhorn' слыхали?

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

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

    CyberManiac New Member

    Blog Posts:
    0
    Joined:
    Sep 2, 2003
    Messages:
    2,473
    Location:
    Russia
    AsmGuru62

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



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

    Same New Member

    Blog Posts:
    0
    Joined:
    Oct 23, 2003
    Messages:
    114
    2 Edmond

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

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

    2 AsmGuru62

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

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

    masquer wasm.ru

    Blog Posts:
    0
    Joined:
    Sep 13, 2002
    Messages:
    890
    Location:
    Николаев




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

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

    Blog Posts:
    0
    Joined:
    Sep 2, 2002
    Messages:
    203
    Location:
    WASM.RU
    masquer

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



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

    CyberManiac New Member

    Blog Posts:
    0
    Joined:
    Sep 2, 2003
    Messages:
    2,473
    Location:
    Russia
    Edmond

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



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



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



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

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

    Blog Posts:
    0
    Joined:
    Sep 2, 2002
    Messages:
    203
    Location:
    WASM.RU
    CyberManiac

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

    masquer wasm.ru

    Blog Posts:
    0
    Joined:
    Sep 13, 2002
    Messages:
    890
    Location:
    Николаев


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





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

    CyberManiac New Member

    Blog Posts:
    0
    Joined:
    Sep 2, 2003
    Messages:
    2,473
    Location:
    Russia
    masquer

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



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



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



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



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



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

    masquer wasm.ru

    Blog Posts:
    0
    Joined:
    Sep 13, 2002
    Messages:
    890
    Location:
    Николаев


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