Я писал в соответствующем чате Telegram своё мнение. Разверну сюда свою мысль об идее сделать Дракон объектно-ориентированным.
Мы пытаемся
смешать всё воедино, сделать из Дракона швейцарский нож, что не совсем правильно, если совсем не правильно. Пытаемся сделать Дракон-схемы и диаграммами состояний, и диаграммами потоков данных, и диаграммами бизнес-процессов, хотя самая близкая по концепции ниша - это диаграммы деятельности и диаграммы последовательностей (
activity diagram,
sequence diagram).
Теперь об ООП. Алексей Муравицкий
не описал подробно концепцию ООП в Драконе в нашем чате. Это преувеличение. Не написано, как в Драконе реализуется описание свойств, методов, принципов ООП (абстракция, инкапсуляция, наследование, полиморфизм). Поэтому
концепцию пока нельзя считать полной, на мой взгляд. По крайней мере подождём ответа и дальнейших сообщений от самого Алексея, либо увидим сами эти принципы в его демонстрации нового редактора дракон-схем.
Но самый главный казус, который переплетается с началом моего сообщения, это концептуальная нестыковка. Как в
алгоритмическом языке программирования может быть ООП? В определении "ДРАКОН" (даже если это гибридный язык) главное слово не
"программирования", а
"алгоритмический". А алгоритм, как нам известно со школьной скамьи, это
последовательность действий для достижения некоторой
цели. Описание классов не содержит последовательности действий и не имеет иной цели кроме как описать класс.
Условно, нельзя сказать, что словарь русского языка - это художественное произведение, потому что он содержит лишь определения всех слов, собранных в последовательность, и не наделённых художественным замыслом автора. Цель словаря - это быть словарём, давать определение словам. В то время, как цель романа - быть романом и не быть словарём, содержать мысль, художественную ценность.
Попытка выдать словарь за художественный роман - это попытка описывать классы языком ДРАКОН.С точки зрения самого языка,
цельная логическая конструкция - это примитив либо силуэт. Для гибридного языка ДРАКОН-Си, ДРАКОН-Python и т.д. эта конструкция интерпретируется никак иначе как
функция.
Класс в объектно-ориентированном программировании - это
тоже цельная логическая конструкция. Но для её обозначения у ДРАКОНа
нет иных средств кроме тех же примитива и силуэта. Стало быть возникает конфликт (даже не столько для программиста, сколько для пользователя этим редактором) -
как отличить класс от функции в ДРАКОНе, если вдруг и то, и другое станет реализуемо в редакторах? Это задача и проблема, которая затрагивается предложением языка Дракон++.
Из принципа "критикуешь-предлагай" могу сказать, что понятия "класса" и "функции" нужно разграничивать. То есть для описания классов использовать другой метод,
другую нотацию, связанную с ДРАКОНом. И такая нотация
есть. Из недавнего экскурса по книге "Почему мудрец похож на обезьяну..." Владимира Паронджанова я вычитал такой язык как
ГРАФ. Язык дефиниций. Он не описывает последовательности, он именно даёт определения.
Он - тот самый словарь, который не нужно выдавать за роман.Вложение:
ГРАФ пример из книги.PNG [ 255.14 КБ | Просмотров: 2023 ]
Применительно к классам ГРАФ-схема представляет собой шаблонную конструкцию - имя класса с всегда тремя ветвями - свойства, методы, события. Следующий уровень детализации уже зависит от самого описания класса. Какая-то ветвь может и вовсе оказаться пустой.
Вложение:
ГРАФ класс.png [ 17.51 КБ | Просмотров: 2023 ]
Например, сейчас Алексей Муравицкий постепенно презентует работу своего редактора дракон-схем для ПЛК на примере светофора. Светофор можно описать как класс при помощи языка ГРАФ. Причём этот язык может описать не только класс, но и структуру - тоже важную часть в ООП. Например, светофор обладает свойством "свет". Это структура, состоящая из двух ключей - цвет (красный, жёлтый, зелёный) и длительность (1 секунда, 2 секунды, 4 секунды).
Вложение:
ГРАФ светофор.png [ 22.52 КБ | Просмотров: 2023 ]
Каждый метод и событие класса уже можно описать в виде дракон-схемы, так как они по природе своей
функции.
Таким образом, при помощи языка ГРАФ можно обособленно описать классы (а то и целое пространство имён).