Декларативный GUI - это способ полностью описать GUI и его поведение на некотором расширяемом структурированном языке описания данных, например, XML. Полностью означает, что в одном описании действительно содержится вся информация о целевом GUI: какий заголовок имеет главное окно, какие пункты имеет главное меню (File ... About), какие есть тулбары, какие пункты содержатся в подменю главного меню, какие диалоговые окна появляются при их выборе, какие в них есть флажки, радиокнопки, кнопки "OK" "Cancel", и т. д., и т. п. Это описание затем обрабатывается некоторым софтом (который нужно написать) и при разработке софта не нужно будет больше тратить время на программирование GUI. Больше ресурсов останется на разработку тех функций программ, ради которых они и разрабатываются; функции эти будут вызываться в соответствии с описанием GUI... Соображения: -- Язык описания GUI не должен позволять делать предположения насчёт размеров контролов. Если вы думаете, что "точные координаты" и "визуальное проектирование" - рулят, то посмотрите, как выглядят ваши программы с изменёнными стандартными средствами размерами стандартных контролов. -- Тем не менее, основная задача многих программ - рисовать графику (диаграммы, графики функций, и т. п.), поэтому необходимы средства языка, позволяющие описать место, куда они будут выводиться. -- Должна быть возможность локализации. В описании GUI не должно быть строк в явном виде. Вместо этого должны быть указания, где брать эти строки. Это должно позволить легко локализовывать даже скомпилированные программы. -- Различие идиоматики естественных языков иногда приводит к тому, что одно и то же понятие в них может описываться текстовыми строками, отличающимися по длине в несколько раз. Известны примеры, когда из-за этого программы, локализованные "по-тупому" выглядят совершенно по уродски. Следует учесть этот опыт и предусмотреть некоторую гибкость, чтобы отдельные логические области диалоговых окон могли автоматически "перекомпоновываться" для достижения большей эстетичности. -- Следует предусмотреть расширяемость языка описания GUI. -- Сверхцелью является вовсе не облегчение программирования "виндузЯтников хрЕновых", а переносимость гуёвых программ. Поэтому в первом приближении выразительные возможности языка описания GUI будут пересечением возможностей win32, Gtk и Qt. -- Однако должна быть возможность при необходимости тщательно описать все низкоуровневые детали (передача параметров, возврат результатов, и т. п.) вызова пользовательских функций.
А чем тебе не нравится использование для таких целей XML? вон люди на нём языковые модули пишут - а нектоторые скины к своим прогам...
Ничего не имею против XML, и даже упоминаю его. Речь идёт об инструменте программирования, а не об одноразовом использованиии чего-либо. Цель - полностью избавиться от гуёвого кода в программах, и получить больше времени на программирование сути. Гипотеза о возможности полностью описать GUI как структурированные данные следует из гипотезы иерархичности таких интерфейсов. Типичный приём работы пользователь заключается в том, чтобы выбрать пункт главного меню, выбрать подпункт, появляется диалоговое окно, поработать с диалоговым окном, программа выполняет "полезную функцию". Конкретные случаи могут варьироваться, однако важно лишь что элементы GUI (почти) никогда не работают циклически или рекурсивно. Есть лишь всегда присутствующий главный цикл прохода по этой иерархии от корня (или, возможно, от промежуточной точки). И цикл этот выполняет обработчик описания GUI.
Ага значит некий визуал редактор типа рисуеш форму кнопочки менюшки он ето дело разбирает и сладывает в отдельный файл путь тот же XML а потом компилирует исполнительный файл который который анализируя XML создаёт ко нему окошко(в том виде в котором мы его нарисовали)? В принципе можно только муторно это и возникнет проблема с определением событий - например нет проблем создать кнопку динамически, есть проблема присвоить ей действие(причём нужное) по событию
Язык описания интерфейсов - вещь важная и нужная. По крайней мере, я такую потребность уже ощутил, когда мне стало вломы в очередной раз ручками набирать, какую панель нужно делать видимой, если пользователь кликнул по чекбоксу. Надо полагать, кончится все тем, что такой язык появится
captain cobalt Да, это тоже не первого года проблема. Но позвольте немного сказануть. Во первых такой язык на XML есть. И называется он XFORMS W3C. Во вторых (как говорит Володя), библиотеки Qt и т.д. - это просто НАСТОЯЩЕЕ уродство. С них кода больше чем можно себе представить. Зачем это нам, ассемблерщикам? В третьи - да такой язык, или скрипт-язык действительно необходим, главное верно определить границы проекта. Что касается самого интерфейса GUI, то беготня за интерфейсом к приложению в конце концов обернёться тем же самым Qt. Давайте признаем, что инкапсуляция - уже давно не рулит. Или скажем так - тупая инкапсуляция - не рулит. Поэтому что вопрос в лоб: что именно будет уметь этот ЯВУ, или инструмент?
Quantum RC - скрипты управляют ТОЛЬКО ВИДОМ. Но не описывают законы функциональности. Кстати - вот в этом смысле XML не рулит!!!
AsmGuru62 Про 'Longhorn' слыхали? Будет такая же мертвечина, как и Windows XP styles и .Net. Win2000, WinXP и Win2003 про этот ХАМЛ ничего не знают и не узнают никогда. Если бы ту долбаную DLL не расхачили, у нас бы до сих пор было ровно два стиля: Серые Прямоугольники и Luna. Скины сторонних производителей для Media Player опять же по пальцАм одной руки пересчитать можно. Все, что требует от пользователя доустановки "системных" компонентов, очевидным образом является трупорожденным и использоваться будет только отдельными энтузиастами "передовых технологий", потому как подавляющему большинству оно нахрен не сдалось. А подавляющему большинству лицензионных юзеров оно нахрен не сдалось два раза: первый раз потому что и так все работает, а второй - потому что за деньги. Ну и программистам оно нахрен не сдалось три раза: первые 2 я уже назвал, а третье - потому что сужает круг потенциальных пользователей.
2 Edmond Кстати - вот в этом смысле XML не рулит!!! Почему же? добавить описания - для событий онклин,онкейап и т.д. - только возникнет проблема с названием обработчиков действий в Программе и за её пределами(в XML) 2 AsmGuru62 Про 'Longhorn' слыхали? А как же "переносимость гуёвых программ" за его пределами?
мне это делфи напомнило со всеми вытекающими... Имхо, ничего из этого не получится, по крайней мере применительно к ассемблеру - если даже все правильно реализовать (лет так через 5-6), то будем получать программку типа hello dword размером с пару мегабайт (хотя через 5-6 лет это уже будет не актуально ).
masquer Причём тут Дельфи? Дельфи не от того потерпело крах ) Так всё таки - какие же границы проекта?
Edmond Причём тут Дельфи? Увы, почти ни при чем. В Delphi GUI почти не декларативен. Там чтобы видимость панели с состоянием чекбокса связать, код писать надо, а это плохо :-( Дельфи не от того потерпело крах ) А оно разве потерпело крах 8-) Кто бы мог подумать? На днях вообще-то очередная версия вышла, причем под старый добрый Win32, а не только под всякие дефекативные .Net. Только у нас, к сожалению, еще не появилась, чтобы можно было заценить фишку.
Хм, ну от тараканов и динамитом можно избавляться... Сам не пользуюсь, но говорят, что от версии к версии делфи все хуже и хуже, а для 8-й оперативки желательно иметь не менее 1 Гига, иначе тормозит безбожно. Все на 2-5й версиях сидят.
masquer Сам не пользуюсь, но говорят, что от версии к версии делфи все хуже и хуже Никогда не слушай тех, кто говорит, что раньше солнце было ярче, вода - мокрее, а софт - лучше. Ибо они заблуждаются и идеализируют прошлое. На самом деле солнце было таким же тусклым, вода - такой же мутной, а софт (за _очень_ редким исключением) - таким же глючным, только еще более неудобным. >для 8-й оперативки желательно иметь не менее 1 Гига, иначе тормозит безбожно. Восьмерка - маздай, ибо дотнет. Я всегда знал, что дотнет нужно давить гидравлическим прессом, пока не респлодился. В Борланде, похоже, тоже доперли, что умным людям не след "задрав штаны, бежать за комсомолом" и вернули Win32 на место. По свидетельствам очевидцев, если от 2005-й оторвать дотнет, ее потребность в памяти уменьшается как бы не в 3 раза. >Все на 2-5й версиях сидят. У нас на предприятии "все" сидят на седьмой и понемногу присматриваются к 2005-й. Очень уж много там полезных фич в язык добавили.