Уважаемый Геннадий Тышов!
Вы сделали великое дело. Создали дракон-редактор. И смело показали его в открытом доступе. Вы сделали это ПЕРВЫМ. Огромное Вам спасибо.
Благодаря Вам появилась возможность превратить Дракон из туманной абстракции в конкретный факт. Попробовать его на зуб. Пощупать руками. Попинать ногами. Более тщательно выявить его недостатки. И обрушить на него новую волну критики. А критика — это величайшая ценность, которая позволяет двинуть дело вперед.
Ваш редактор в некоторых отношениях ПРЕВОСХОДИТ наш редактор. Ваш редактор имеет БОЛЕЕ РАЗВИТУЮ СИСТЕМУ РАБОТЫ С УЗЛАМИ И ЛИНИЯМИ.
У нашего, конечно, тоже есть достоинства — он полностью отработан, вылизан и работает, как часы. Но это мелочь.
По изложенным выше причинам я бы не хотел сейчас критиковать Ваш редактор. Он заслуживает благодарности и похвалы, а не критики.
Но есть одно замечание, которое мне хотелось бы высказать уже сейчас.
Отвечая Александру Ильину, Вы сказали (Пятница, 18 Апрель, 2008 21:42):
«Вы успешно осваиваете Дракон-редактор. Надо освоить объединение линий, икона "Конец" должна находиться на одной вертикали (шампуре) с заголовком».
Конечно, Вы правы. Правило шампура — важное правило языка Дракон. И его, конечно, надо соблюдать.
Однако здесь есть одно «но». Причем очень важное.
Александр Ильин — это ЦАРЬ. Не царское это дело — помнить и соблюдать дурацкие правила. ЦАРЬ должен МЫСЛИТЬ. А помнить и соблюдать правила должен НЕГР. Негром является дракон-редактор. Задача состоит в том, чтобы воспитать такого негра. Беда в том, что ваш негр — большой либерал. Он дает царю слишком много свободы. Позволяет ему делать явные глупости. В результате царь оказывается в неудобном положении. Это плохо. Это неуважение к царю. Потому что царь не должен ошибаться. Ведь он — царь. Цари не ошибаются.
Негр должен быть не либералом, а цербером. Допустим, царь по забывчивости или по другой причине собирается совершить ошибку. Цербер должен в зародыше пресекать такие попытки. То есть полностью исключать возможность ошибочных действий (ошибок графического синтаксиса).
В частности, любые попытки царя нарушить «правило шампура» НЕ ДОЛЖНЫ исполняться. Независимо от того, что хочет или не хочет царь, правило шампура должно соблюдаться АВТОМАТИЧЕСКИ.
К сожалению, для примитива Ваш редактор эту задачу не решает. А он обязан ее решать.
Ни в коем случае нельзя загружать ЦАРЯ подобной черновой работой. Повторю еще раз: не царское это дело! Надо создать для царя по-настоящему ЦАРСКИЕ условия. То есть обеспечить для него
максимальный интеллектуальный комфорт.Таким образом, либерализм вашего негра уменьшает степень автоматизации работы пользователя. Что, конечно, плохо.
Это с одной стороны. А с другой, либерализм вашего негра — большое достоинство. Например, Илья Ермаков хочет разместить элементы так, как ему нужно для наглядности. Негр не повинуется — Илья недоволен. Цитирую (Илья Ермаков Пятница, 18 Апрель, 2008 21:00):
«Позиции элементов не сохраняются (не могу выровнять операторы в разных ветках относительно друг друга — всё равно сбрасываются)».
Илья прав — негр должен исполнять РАЗУМНЫЕ приказы царя.
Так что задача существенно усложняется: с одной стороны негр должен быть цербером, с другой — либералом. Это не так просто. Можно ли этого добиться? Полагаю, да. Но как это сделать?
Рискуя ошибиться, изложу свое понимание проблемы. In my humble opinion, решение состоит в следующем. Редактор должен работать в двух режимах. Назовем их:
• цербер-режим,
• либерал-режим.
На первом этапе по умолчанию выбирается цербер-режим. В чем его суть? Редактор работает как цербер-автомат. Либерализм категорически запрещен. Шаг налево, шаг направо — расстрел. На этом этапе пользователю запрещено работать с узлами и линиями.
Но! Это вовсе не значит, что каких-то узлов и линий не будет. Вовсе нет. В цербер-режиме формируется ПОЛНОСТЬЮ ЗАКОНЧЕННАЯ дракон-схема. Которая полностью соответствует правилам языка Дракон, описанным в моей книге.
Если речь идет о программировании, формируется ПОЛНОСТЬЮ ЗАКОНЧЕННЫЙ код программы. (Например, в том смысле, как это делает Александр Ильин).
В конце исполнения цербер-режима формируется логически правильная, но, возможно, недостаточно удобная дракон-схема. Которую, надо подправить вручную с помощью дракон-редактора. Например, сделать некоторые предусмотренные у Тышова операции с узлами и линиями. Чтобы сделать схему «покрасивее», чем это сделал цербер. Или, например, расположить элементы так, как хочет Илья Ермаков.
Для этой цели следует перейти в либерал-режим.
В либерал-режиме изменяется (улучшается) только графика. Алгоритм и программный код на выходе редактора НЕ МОГУТ ИЗМЕНЯТЬСЯ. Такие изменения блокируются.Иными словами, в либерал-режиме разрешаются только косметические улучшения графики, которые никак не влияют на алгоритм и программный код. Они (алгоритм или код) остаются инвариантом относительно проводимых графических преобразований.
Сказанное мною следует воспринимать с осторожностью по следующим причинам.
1. Геннадий Тышов выбрал непривычный для меня алгоритм работы дракон-редактора. Анализируя этот новый для меня стиль, я мог что-то не понять и ошибиться в суждениях.
2. Наш редактор работает только в цербер-режиме. Он не умеет делать либерал-операции.
3. В моей книге описан только цербер-режим работы дракон-редактора. В ней, насколько я помню, ничего не говорится о либерал-операциях (в явном виде).
4. Я давно мечтал о либерал-операциях, но по разным причинам мне не удалось добиться их реализации в нашем редакторе.
5. Поэтому мои рассуждения о либерал-операциях не опираются на опыт практической работы. И следовательно, могут содержать ошибки.
6. Геннадий Тышов продемонстрировал, что его редактор умеет выполнять некоторые либерал операции. Этот неожиданный для меня факт является воплощением моей старинной мечты. Но Тышов заплатил за либерализацию неоправданно высокую цену — он ухудшил характеристики цербер-режима. В результате этого некоторые операции, которые должны выполняться автоматически, возлагаются на пользователя, что провоцирует ошибки.
7. Терминологию я выдумывал на ходу. Извините, если коряво получилось.