serj_lb писал(а):
anpspb писал(а):
Однако если в Фабуле появились новые иконки, значит - нужно? А если попробовать создавать их неким регулярным образом на основе неких стандартных правил? И зафиксировать их в описании стандарта языка наподобие того, как это делается консорциумом W3C применительно к HTML и другим веб-технологиям?
Плодить иконки, даже по правилам, наверное сложно для не очень одаренных художественными способностями людей. ...
====
Резюме. Ниже представлены соображения относительно усовершенствования графической нотации Дракона, ориентированные главным образом на автоматизироанный просмотр дракон-схем. Даны предложения по механизму формирования новых иконок - элементов схемы с целью струтуризации (свертки) знаний, включающих как описания действий, так и данных. Понятие "гипертекст" расширяется до "гипер-графики", т.е. подхода, ориентированного на "разворачивание" свернутых символов-иконок, что обеспечивает представление алгоритма на более детальном уровне и удобный переход между представлениями.
-------
Вообще-то, если говорить "с размахом", то хотелось бы:
1) иметь иконки одного стандартизированного размера, чтобы было удобнее размещать на "листе" (бумаги или экрана)
2) составлять ("набирать") составные иконки-фигуры из примитивов (отрезки, кружки, дуги, точки привязки и т.п.) по определенным стандартным правилам, т. е. "как из конструктора" (в этом случае о "художественных способностях" речи не идет).
3) отдельные элементы-примитивы должны иметь строго определенную семантику, чтобы при одном взгляде на иконку-фигуру было понятно (по составляющим ее примитивам), что в итоге она обозначает.
Не могу придумать пока ничего лучше, как сравнить с иероглифом (одним!), где отдельные части обозначают разные понятия.
Тогда, по аналогии с письменностью, нынешние иконки - это как бы монолитные "слова" (хотя в них тоже есть приставки, суффиксы и т.п., т.е. семантические элементы для составления слова-комбинации). А "иероглифы"-иконки могли бы обозначать целые конструкции (относительно сложные структуры).
Поясню: мне не совсем нравятся иконки Дракона, в которых отдельно от основного контура нарисован, например, таймер. Получается составное понятие (и занимающее много места, и требующее интеллектуальных усилий на восприятие каждого элемента поодиночке и соединение их в одно понятие! Не зря же люди рамки придумали!).
Лучше бы ограничиться одним (внешним) контуром и дополнительные/другие элементы "запихнуть" внутрь него. И тогда размещение иконок могло бы быть сделано более рациональным (на листе), можно было бы каждой присваивать точные "координаты", заранее знать размеры, легче рассчитывать позиционирование и т.п. (Фактически это был бы аналог моноширинного текста вместо имеющего сейчас места "текста" с "буквами" разного размера).
И вот тогда на базе ограниченного множества семантик-примитивов пользователи без всяких способностей могли бы составлять свои комбинации - описания как элементарных объектов, так и более сложных структур, допустим, циклов и т.п. Тем самым достигается очень важное свойство, присущее (прежде всего, естественным) языкам - свёртка понятий!
И подобная нотация дала бы дорогу универсальному техноязыку, о котором и писал Владимир Даниелович, языку, в котором было бы свойство расширяемости.
Конечно, дополнительно к описанию действий хотелось бы добавить в такой язык и описание данных. Иначе получается, что графический язык описывает только действия, а текстовый (С, Паскаль, Питон, Java, etc.) - дополнительно еще и данные и объекты. И потому текстовый пока выигрывает... . А если бы были объекты, то можно было бы подумать об объектно-ориентированном графическом языке. (Да, это - усложнение. И потому-то мы все любим Дракон по сравнению с тем же UML - за простоту. Но никто не запрещает реализовать уровневую модель языка с усложняющимися от уровня к уровню конструкциями, рассчитанными и на новичков - на "нижнем" уровне, и на профи - на более сложном верхнем).
А вот как реализовать... М.б. отдельное поле (подвал) на листе выделять под описание данных для некоторой области (scope) действия процесса (на бумаге). Но если реализовывать на современном компьютерном оборудовании, то можно предложить (по щелчку или касанию сенсорного экрана - по "тапу") раскрывать отдельную под-область экрана и отображать нужные элементы там (или на том же самом месте). (Т.е., например, "тап" - погрузиться, раскрыть; двойной "тап" по экрану - всплыть и отобразить верхний уровень).
Что же касается того, что некоторые схемы слишком "раскидистые" и не помещаются в ширину "листа", то здесь предложенное решение уже сейчас ДОЛЖНО быть реализовано путем "ухода в трехмерность": по щелчку (или касанию) иконка "раскрывается", отображая (детализируя) свое "внутреннее устройство" в виде Дракон-схемы следующего, нижележащего уровня. Тогда реализация такого техноязыка в компьютерной среде (а не на бумаге) дает новое качество - трехмерность, и предоставляет удобство контекстного "погружения-всплытия" с уровня на уровень. Т.е. мгновенно, не затрудняя человека необходимостью прилагать интеллектуальные усилия на попытки мысленного упорядочивания отдельных элементов схем и налаживания связей между ними, обеспечивает нужное масштабирование, т.е. показ схемы (некий аналог гипертекста, но графического типа, т.е. гипер-графика) , включая и действия, и данные!
Если же говорить о более отдаленном будущем, то можно представить себе как бы большой экран (типа плазменного) на котором (или даже "в воздухе") будут появляться элементы схем, мгновенно раскрываясь и скрываясь в зависимости от активного уровня, интересующего пользователя, управляющего этим "театром" с помощью лазерной указки и радио-манипулятора.
Пусть эти предложения и покажутся некоторым коллегам фантастикой, однако можно вспомнить некоторые фильмы с показом оборудования военных штабов, где на специальных прозрачных "стендах" отображается положение подлодок, кораблей, подразделений противника, мгновенно вычисляется их местоположение, даются целеуказания своим боевым постам и т.д. Т.е. уже существуют по крайней мере идеи (а то и прототипы) подобных устройств. Так почему бы не попробовать сделать хотя бы нечто отдаленно похожее на уже существующей аппаратной базе?
Возможно, что очередную реализацию усовершенствованного графического техноязыка (типа Дракона) потребуется делать уже платформенно-независимой в виде веб-приложения, в котором современными средствами (HTML5, CSS, JS, JS-библиотеки, ...) можно будет реализовать "гипер-графику", масштабировение, автоматическую генерацию кода, связь с другими системами и т.д. Действительно, ведь в те годы, когда появился Дракон, такие технологии, как сенсорный экран, гипертекст, bluetooth и мн. др. (даже мобильники) еще только-только появлялись.... .
Надеюсь, что коллеги поддержат, поправят и подскажут возможные пути развития предложенного, возможно, и инструментарий. На сегодня, как мне кажется, Qt для этого не очень подходит. Или я ошибаюсь?