Последнюю пару недель много разговоров про ДРАКОН (Дружелюбный Русский Алгоритмический Язык, Который Обеспечивает Наглядность):
Ознакомительная статья с картинками --
http://www.transhumanism-russia.ru/content/view/331/116/http://forum.oberoncore.ru/viewforum.php?f=62&start=0 -- родной форум разработчиков
http://www.computerra.ru/readitorial/418507/ -- краткая историческая справочка и
http://www.computerra.ru/forum/index.php?PAGE_NAME=read&FID=24&TID=332361 -- 57 страниц дискуссии (с 13 апреля 2009г.), и конца дискуссии пока не видно.
Основные бурно обсуждаемые вопросы -- ДРАКОН как алгоритмический язык для непрограммистов, ДРАКОН как предтеча UML, ДРАКОН как российский космический язык (вариант: SysML для Бурана), ДРАКОН как удобная замена IDEF0, ДРАКОН как школьный алгоритмический язык, ДРАКОН как графическая нотация для Паскаля, Си и прочих Модул и т.д. и т.п.
Вот мои три копейки к этим дискуссиям:
1. Очень жалко, что много-много отечественных (да и не отечественных) языков конца 80-х померло, едва родившись. Так, я принял где-то в 1990-м году участие в разработке языка Pra, и до сих пор жалею, что идеи этого языка остались нереализованными -- даже спецификаций не сохранилось.
2. Увы, отечественные языки в большинстве своем остались на уровне "пакетных" (краткий миг между тогдашним процедурным прошлым и объект-ориентированным будущим -- Ада, Модула как примеры). Мейнстримный переход к объект-ориентированным языкам так и прошел незамеченным. ДРАКОНа этот вопрос даже не волнует, его волнует представление пробега точки исполнения по многовариантному будущему. Развертка во времени (планы), вот что для этого языка волнительно, а структура мира этим языком не описывается.
3. В языках есть три части: абстрактный синтаксис, представления (конкретный синтаксис: часто несколько -- текстовое, графическое, табличное и т.д.), стили -- правила хорошего тона (эргономика, как ее называют авторы ДРАКОНа: то, что безразлично компиляторам, кроме тех языков, в которых значимы элементы, традиционно относимые в других языках к чисто оформительским, например, значимые отступы). ДРАКОН неинтересен как язык, его абстрактный синтаксис примитивен. ДРАКОН неинтересен, как конкретный синтаксис -- это просто один из вариантов представления алгоритма его блок-схемой. ДРАКОН интересен его вниманием к эргономике.
4. Поэтому ДРАКОН я бы считал примером того, как из дерьма (блок-схем) какого-то однобокого процедурного view на систему можно пытаться делать конфетку, определяя стиль использования. Важен не конкретный ДРАКОН, важен метод, который красочно и ярко демонстрируют его создатели: алгоритм сам по себе ничто, а его выражение-представление-оформление-изложение -- всё. В этом месте у меня всплывает Кнутовское литературное программирование, хотя я понимаю всю кощунственность его поминания в этом контексте.
Вот взять, например, какой-нибудь SysML в графическом его конкретном синтаксисе использовать методы стилизации/"эргономизации", наработанные в ДРАКОНе и абстрагированные от ДРАКОНа.
5. Отдельный вопрос -- это сознательная ориентация ДРАКОНа на попсовость. ДРАКОН предлагает не мощные средства выражения, а понятные. У него нет задачи выразить что-то компактно/лаконично, или красиво, или встроить в себя какую-то другую нотацию/DSL. У него есть задача выразить последовательность шагов алгоритма понятно, снизить входной барьер. Это прямой антипод Форта/Лиспа (в их стековой парадигме и функциональной парадигме) и прямой наследник Бейсика в закреплении "народных операторов". Если одни языкостроители ломают (ну ладно -- не ломают, а разминают) мозги пятикурсников об свой язык, то другие языкостроители обламывают свои языки под мозг пятиклассников. И не нужно мне говорить, что "истина должна быть где-то посредине".
6. Я вот ищу язык моделирования, с которым можно было бы прийти к инженерам и организаторам. И никаких дебютных идей по этому поводу я не вижу. ДРАКОН с его чиста конкретна процедурным заходом идет лесом, SysML с его "суженым расширеным" UML идет другим лесом, IDEF0 с его однобокостью идет третьим лесом.
Правильных текстовых языков на темы моделирования я не встречал. Нынешние симпатии мои на стороне безатрибутных языков (ORM, Gellish), плюс в качестве конкретного синтаксической одёжки для них DSL-шаблоны (про которые, конечно, пишут "думайте о шаблонах как о макросах"). Для этих языков нет ни хороших конкретных синтаксисов для разных удобных view, ни развитого инструментария, ни -- тем более -- инструкций по стилю типа тех, что можно найти в описаниях ДРАКОНа. Но какой-то нюх мне подсказывает, что искать всё мне потребное нужно именно в этом месте: мозгозаворачивательный безатрибутный холст, на котором нарисованы тщательно обломанные под народный уровень DSL.
Йа -- язычнег.