DRAKON.SU
https://forum.drakon.su/

мысли вслух
https://forum.drakon.su/viewtopic.php?f=143&t=4291
Страница 1 из 4

Автор:  Сергей Метелёв [ Пятница, 22 Март, 2013 22:58 ]
Заголовок сообщения:  мысли вслух

Что-то почитал про ДРАКОН, что-то поделал, хочется высказать общее впечатление, а не знаю куда. Поэтому решил тему создать.

Во-первых (не по порядку, а как в голову приходит), Дональд Кнут в своё время выдвинул концепцию literate programming. Заключается она в том, что программы в первую очередь для людей, а не для компьютеров, потому о том, чтобы людям их читать можно было нужно специально заботиться. Его вариант называется WEB, из одного исходника генерируется TeX документ, который в конечном итоге для человека и программа для компилятора.

Вот есть в этом какая-то сермяжная правда по-моему. Когда исходно работа происходит с текстом, это даёт ощущение надёжности. Текст можно хоть на бумаге напечатать и потом снова в машину вбить. Текст можно менять и сравнивать изменение версий, о чём несколько человек говорило. А конечный результат при этом можно генерировать из текста в двух вариантах. В графике для людей, чтобы и самому смотреть на него и показывать можно было. И второй конечный вариант из того же исходника --- программа.

Если делать графику на основе TeX или metapost (который как раз для генерации векторной графики из текста создавался аспирантом Кнута из разработанного Кнутом metafonta), то можно было бы пользоваться всеми наработками, доступными под ТеХом, формулами, картинками и т.д.

Теперь про существующие реализации. Работаю я в линуксе и с языком python. Скачал как Drakon Editor, так и ИС. Опыт работы, правда, небольшой пока что. И тем не менее.

По поводу Drakon Editor. Основное, что вызывает у меня внутреннее напряжение, так это отсутствие исходного текста, поскольку работа сохраняется в бинарный файл. И второе, это скрытость алгоритма генерации программы. Если по-мелочи, у меня не получилось создать силуэт без ветки "выход" (или как она там называется) и я не нашёл как передвигать схему как целое вправо-влево.

Если говорить про ИС, то я с ней практически не работал, запускал только под wine. Она запускается и пункты меню по-русски пишет, это хорошо. На что обратил внимание: справку почему-то у меня посмотреть не получилось. И второе, когда захожу в "Справка/установить/ваша установка" среди прочего читаю "Ознакомительный период закончился." Где-то тоже какая-то нестыковка. Хотя вроде бы это ни на что не влияет.

В целом идея мне очень нравится и реализации обе нравятся. Каждая из них находит свою аудиторию, я думаю. Свою реализацию мне конечно не потянуть.

Автор:  Ярослав Романченко [ Суббота, 23 Март, 2013 09:14 ]
Заголовок сообщения:  Re: мысли вслух

Давно предлагал формат XML для хранения ДРАКОН документов, но разработчикам этот формат по непонятным причинам не интересен. А его уже более-менее можно читать человеку и сравнивать внесённые изменения.
Видимо придётся таки делать свою реализацию редактора :)
viewtopic.php?f=79&t=3627

Автор:  Сергей Метелёв [ Суббота, 23 Март, 2013 21:47 ]
Заголовок сообщения:  Re: мысли вслух

Ярослав Романченко писал(а):
Давно предлагал формат XML для хранения ДРАКОН документов, но разработчикам этот формат по непонятным причинам не интересен.


Мне тоже, честно говоря, не очень интересен. По-моему XML здесь лишняя сущность.

Текстовое и графическое выражение алгоритма должно однозначно соответствовать друг другу. Односторонних трансляторов из графики в текст уже целых два, а обратного нет пока что.

Автор:  Ильченко Эдуард [ Суббота, 23 Март, 2013 22:24 ]
Заголовок сообщения:  Re: мысли вслух

Сергей Метелёв писал(а):
Текстовое и графическое выражение алгоритма должно однозначно соответствовать друг другу.
Предложите свой вариант.

Автор:  Сергей Метелёв [ Суббота, 23 Март, 2013 22:48 ]
Заголовок сообщения:  Re: мысли вслух

Ильченко Эдуард писал(а):
Сергей Метелёв писал(а):
Текстовое и графическое выражение алгоритма должно однозначно соответствовать друг другу.
Предложите свой вариант.


Вариант соответствия? Так есть же он, если я правильно понимаю. Например в книге "Учись писать, читать и понимать алгоритмы" коротенько о нём говорится, на странице 73, в главе 6, параграф 6 "Как описать силуэт с помощью текстового языка (псевдокода)", правда не очень подробно.

Автор:  ==== [ Воскресенье, 24 Март, 2013 09:31 ]
Заголовок сообщения:  Re: мысли вслух

Сергей Метелёв писал(а):
Если говорить про ИС, ...

На что обратил внимание: справку почему-то у меня посмотреть не получилось.

И второе, когда захожу в "Справка/установить/ваша установка" среди прочего читаю "Ознакомительный период закончился." Где-то тоже какая-то нестыковка. Хотя вроде бы это ни на что не влияет.
1. Файл справки имеет имя "Dragon.chm", должен находится в папке программы.
.CHM - исполняемая справка в формате HTML MicroSofr.

Для получения доступа к справке из меню и при непосредственном выборе файла справки, на компьютере должно быть настроено сопоставление типов файлов и программ. Для типа ".chm" можно использовать ИЕ или другой интернет обозреватель.

2. Причина ясна из сообщения "Ознакомительный период закончился.".
Необходимо оформить установку программы на данный компьютер или перенести программу на другой.

Автор:  Ильченко Эдуард [ Воскресенье, 24 Март, 2013 09:45 ]
Заголовок сообщения:  Re: мысли вслух

Сергей Метелёв писал(а):
Вариант соответствия? Так есть же он, если я правильно понимаю. Например в книге "Учись писать, читать и понимать алгоритмы" коротенько о нём говорится, на странице 73, в главе 6, параграф 6 "Как описать силуэт с помощью текстового языка (псевдокода)", правда не очень подробно.
Как бы ещё из псевдокода машкод получить ... А из теста ЯП текст псевдокода ...

Автор:  Ярослав Романченко [ Воскресенье, 24 Март, 2013 10:36 ]
Заголовок сообщения:  Re: мысли вслух

Сергей Метелёв писал(а):
Вариант соответствия? Так есть же он, если я правильно понимаю. Например в книге "Учись писать, читать и понимать алгоритмы" коротенько о нём говорится, на странице 73, в главе 6, параграф 6 "Как описать силуэт с помощью текстового языка (псевдокода)", правда не очень подробно.
В том-то и дело, что не очень подробно. А для того что-бы реализовать то о чём вы пишете нужно очень подробно и желательно в (Е)БНФ форме. Потом нужно строить сканер, парсер по этой (Е)БНФ форме, синтаксический анализатор...
Парсер XML писать не надо, полно готовых реализаций.

Автор:  Сергей Метелёв [ Воскресенье, 24 Март, 2013 22:25 ]
Заголовок сообщения:  Re: мысли вслух

Геннадий Тышов писал(а):
1. Файл справки имеет имя "Dragon.chm", должен находится в папке программы. .CHM - исполняемая справка в формате HTML MicroSofr.


Мой линукс отчего-то не переваривает его. Есть в линуксе программа xchm, она его вообще грузить отказалась. А если запускать Dragon.exe с помощью wine, то справку можно открыть но нельзя прочесть. ie, который входит в комплект wine тоже открывать справку не захотел. firefox тоже не знает, что c этим файлом делать. Думаю, что потратив какое-то количество времени можно эту проблему решить, пока что нет сил и времени ковыряться.

Геннадий Тышов писал(а):
2. Причина ясна из сообщения "Ознакомительный период закончился.". Необходимо оформить установку программы на данный компьютер или перенести программу на другой.


Тут опять по-видимому дело в том, что среда для программы не родная и у меня она работает с помощью wine

Но это наверное не так важно. Главное, что программа с помощью wine запускается и вроде как работает. Пункты меню на русском читаются, силуэт создать получилось, дальше не пробовал. Приёмы работы можно уяснить, почитав местный форум, например.

Автор:  Сергей Метелёв [ Воскресенье, 24 Март, 2013 22:38 ]
Заголовок сообщения:  Re: мысли вслух

Ярослав Романченко писал(а):
В том-то и дело, что не очень подробно. А для того что-бы реализовать то о чём вы пишете нужно очень подробно ...


Ильченко Эдуард писал(а):
Как бы ещё из псевдокода машкод получить ... А из теста ЯП текст псевдокода ...


Насколько я понимаю, возможность однозначно переводить графику в текст и обратно и есть главное достижение, которое позволяет использовать ДРАКОН в реальной жизни. То есть можно просто придумать для каждой пиктограммы соответствующее слово, и все дела. Подробно, правда, я не вдумывался.

Последующий перевод из псевдоязыка в язык, который уже будет исполняться, это да, интересно и нетривиально. Мне представляется, что можно было бы каждой ветке сопоставить функцию, например. Начинка вроде не вызывает проблем. Циклы, условные переходы, можно однозначно переводить из псевдоязыка в язык.

Автор:  Ярослав Романченко [ Воскресенье, 24 Март, 2013 23:19 ]
Заголовок сообщения:  Re: мысли вслух

Сергей Метелёв писал(а):
Думаю, что потратив какое-то количество времени можно эту проблему решить, пока что нет сил и времени ковыряться.
.CHM файлы можно декомпилировать программой HTML Help Workshop и после этого просматривать в любом браузере как HTML. Для этого нужно скачать htmlhelp.exe по ссылке http://www.microsoft.com/en-us/download ... x?id=21138 , установить, запустить, выбрать пункт меню File -> Decompile...
Сергей Метелёв писал(а):
Насколько я понимаю, возможность однозначно переводить графику в текст и обратно и есть главное достижение, которое позволяет использовать ДРАКОН в реальной жизни.
Вы об этом где прочитали???

Автор:  Сергей Метелёв [ Понедельник, 25 Март, 2013 05:33 ]
Заголовок сообщения:  Re: мысли вслух

Ярослав Романченко писал(а):
Вы об этом где прочитали???


Можно было предположить во-первых. Если бы программы получались двусмысленные, то какая от них польза была бы?

Отчасти это прямо сказано в вышеупомянутой книге на странице 75. "Сравнивая две формы языка ДРАКОН (графическую и текстовую), можно заметить что соответствующие алгоритмы (рис. 34 и 36) эквивалентны. Однако графический язык, несомненно, более нагляден и доходчив." Обобщения правда не сделано прямо здесь, но я не вижу оснований сомневаться.

Интересно, чем по-Вашему занимался Институт прикладной математики им. М. В. Келдыша, если не обоснованием, в частности, однозначности соответствия и возможности запрограммировать любой алгоритм, то есть достаточности средств языка?

Автор:  Владимир Паронджанов [ Понедельник, 25 Март, 2013 09:09 ]
Заголовок сообщения:  Re: мысли вслух

1. Сергей, графика дракон-схемы математически строго и автоматически переводится в текст.

2. Обратное преобразование (из текста в графику) более сложная задача. Я об этом нигде и никогда не писал (как мне кажется).

3. Но. Многие специалисты на форумах подчеркивают важность и актуальность этой проблемы (пункт 2). Я не готов обсуждать эту проблему (из-за недостатка знаний).

4. Предположим, задана программа на языке программирования. Требуется преобразовать ее в дракон-схему (то есть выполнить преобразование "из текста в графику"). Это очень интересная задача. И очень не простая.
В качестве комментария могу сказать лишь одно:
Цитата:
В тексте (на любом языке программирования, например, на Си, АSM и т.д.) отсутствует деление алгоритма на ветки. Следовательно, (чтобы преобразовать текст программы в дракон-схему "силуэт") деление алгоритма на ветки программист должен задавать вручную.

Автор:  Ярослав Романченко [ Понедельник, 25 Март, 2013 09:13 ]
Заголовок сообщения:  Re: мысли вслух

Вот, вот. Сергей, перечитайте это место несколько раз, распечатайте, повесьте на стену, и время от времени перечитывайте :)
Владимир Паронджанов писал(а):
2. Обратное преобразование (из текста в графику) более сложная задача. Я об этом нигде и никогда не писал (как мне кажется).
Хотя, задача хоть и сложная, но наверное выполнимая.

Автор:  Сергей Метелёв [ Понедельник, 25 Март, 2013 11:07 ]
Заголовок сообщения:  Re: мысли вслух

Так я ж не говорю о том, чтобы преобразовывать произвольный текст на произвольном языке в ДРАКОН-схему.

Я говорю о том, чтобы эквивалентный ДРАКОН-схеме текст, использующий текстовые ДРАКОН-операторы, сделать первичным документом и на его основе строить схему. Исходником сделать текст, конечный результат "неживая" картинка. При необходимости тот же текст можно преобразовывать в программу на конкретном языке программирования. Один и тот же текст, двумя разными преобразованиями.

Если говорить о связке текстового и визуального представления ДРАКОН, преимущества и недостатки такого подхода полностью аналогичны тем, что возникают при работе с ТеХ по сравнению с визуальными редакторами.

Если нужно преобразование в программу на каком-то конкретном языке программирования, то потребуется явно определять преобразование операторов из текстовых ДРАКОН-операторов в операторы конкретного языка, это понятно.

Автор:  Ярослав Романченко [ Понедельник, 25 Март, 2013 11:21 ]
Заголовок сообщения:  Re: мысли вслух

Вы наверное далеки от программирования... Вы считаете, что Владимир Паронджанов имел здесь в виду произвольный язык?
Владимир Паронджанов писал(а):
2. Обратное преобразование (из текста в графику) более сложная задача. Я об этом нигде и никогда не писал (как мне кажется).
Вы конечно отчасти правы, в данном случае преобразование в графику и из специального языка и из произвольного будет задачей практически одинаковой, но и одинаково довольно сложной.
Хранить графику чрезвычайно просто, видится нерациональной сложная процедура чтения графики из текстового представления в псевдокоде.
Кроме того в ДРАКОН-технологии исходником, который подвергается редактированию, является именно графика. В текстовое представление лезть вообще запрещено :)

Автор:  Сергей Метелёв [ Понедельник, 25 Март, 2013 12:21 ]
Заголовок сообщения:  Re: мысли вслух

Ярослав Романченко писал(а):
Вы конечно отчасти правы, в данном случае преобразование в графику и из специального языка и из произвольного будет задачей практически одинаковой, но и одинаково довольно сложной.


Наверное. В конце концов Кнут где-то говорил, что ТеХ был проектом, в котором он больше всего недооценил необходимые трудозатраты. Он по-моему лет 10 на него потратил. А казалось бы что там сложного, буквы в слова, слова в строки, строки в страницу и всё. Хотя так, на вскидку, не просматривается где будет затык. Вроде всё прозрачно и более-менее понятно.

Ярослав Романченко писал(а):
Хранить графику чрезвычайно просто, видится нерациональной сложная процедура чтения графики из текстового представления в псевдокоде.


Человек не должен мысленно рисовать графический образ на основе текста, это должна делать машинная обработка. Но когда возникает необходимость что-то куда-то добавить, то вместо того чтобы это делать мышкой, придётся вписывать текст руками, потом вновь генерировать картинку и вновь её созерцать. Может распечатывать, рисовать карандашом, вбивать изменения, создавать картинку и т.д.

Всё же напишу о преимуществах. Например, имя переменной человек решил поменять во всей программе. Как он это будет делать на схеме, возьмём хоть эдитор, хоть ИС? Специальные средства должны быть предусмотрены. Если их нет, то придётся каждый блок открывать, редактировать, закрывать. Работа с текстом это отдельная задача, которой люди занимаются очень давно и очень многого достигли. Если мы теряем текст мы оказываемся отрезаны от всех этих наработок. Я вот, когда мне нужно что-то редактировать, обычно делаю это в vim. Я к нему привык. Если мне придётся его бросить, я потеряю все наработки, пусть даже это просто навыки и привычки.

Ярослав Романченко писал(а):
Кроме того в ДРАКОН-технологии исходником, который подвергается редактированию, является именно графика. В текстовое представление лезть вообще запрещено :)


У Дональда Кнута в его literate programming есть то же самое ограничение. Означает оно, что текст программы, сгенерированный из WEB исходника, не подлежит правке, можно править только исходник. В нашем случае пока представления программы эквивалентны (существует текстовое ДРАКОН-представление эквивалентное графическому), в силу эквивалентности нет разницы что считать исходником, текст или картинку. Но когда из ДРАКОН-представления получен программный текст, он уже не подлежит правке, только компиляции или исполнению.

Автор:  Ярослав Романченко [ Понедельник, 25 Март, 2013 13:38 ]
Заголовок сообщения:  Re: мысли вслух

Сергей Метелёв писал(а):
Например, имя переменной человек решил поменять во всей программе. Как он это будет делать на схеме, возьмём хоть эдитор, хоть ИС? Специальные средства должны быть предусмотрены. Если их нет, то придётся каждый блок открывать, редактировать, закрывать.
Это задача тривиальная! Сам подобный функционал реализовывал в одном из своих проектов. Если этого нет в ИС или в Эдиторе, это вопрос к авторам соответствующих продуктов. Коды ИС закрыты, коды Эдитора открыты но представлены на каком-то недо-говно-языке tcl с которым разбираться у меня нет ни времени ни желания ни сил.
Проблема в том, что по-прежнему нет открытой реализации ДРАКОН среды которую было-бы интересно развивать и поддерживать большому сообществу разроботчиков. Поэтому остаётся довольствоваться теми "наработками" которые есть.
Сергей Метелёв писал(а):
В нашем случае пока представления программы эквивалентны (существует текстовое ДРАКОН-представление эквивалентное графическому), в силу эквивалентности нет разницы что считать исходником
Но такая постановка вопроса по-моему ставит под сомнение необходимость существования и текстового представления ДРАКОНа и самого ДРАКОНа, поскольку редактировать текстовое представление ДРАКОНа это всё-равно, что редактировать программу на любом другом языке программирования - теряется всякая эргономичность и первоначальный замысел ДРАКОНа!

Автор:  Ярослав Романченко [ Понедельник, 25 Март, 2013 13:57 ]
Заголовок сообщения:  Re: мысли вслух

Эдитор Степана Митькина мало того-что на tcl, так ещё и кардинально отходит от технического задания на редактор, данного Паронджановым в его книге "Как улучшить работу ума", и формат данных хоть и в базе данных SQLite но весьма странный! Поддерживать и развивать такое никто пожалуй не захочет!
Единственное преимущество ИС Дракон, что она хоть как-то соответствует тех. заданию Паронджанова. На сколько соответствует, не знаю, это наверное вопрос к Паронджанову и Тышову :)

Автор:  Степан Митькин [ Понедельник, 25 Март, 2013 16:38 ]
Заголовок сообщения:  Re: мысли вслух

Сергей Метелёв писал(а):
По поводу Drakon Editor.
Основное, что вызывает у меня внутреннее напряжение, так это отсутствие исходного текста, поскольку работа сохраняется в бинарный файл.

Задача ДРАКОНа - облегчить внутреннее напряжения. :)
Причина, по которой DRAKON Editor хранит файлы в формате SQLite, - возможность сверхбыстрого
сохранения даже больших файлов.
Это позволяет избавиться от необходимости нажимать кнопку "Сохранить".
Каждое действие сразу записывается на диск. Это надёжно и удобно.
Но, видимо, придётся ввести и сохранение в текстовый формат.

Цитата:
Если по-мелочи, у меня не получилось создать силуэт без ветки "выход" (или как она там называется) и

DRAKON Editor пока не позволяет создавать силуэт без иконы "Конец". Это отклонение от стандарта. Будем исправлять.

Цитата:
я не нашёл как передвигать схему как целое вправо-влево.

1. Драг мышкой с нажатым колёсиком. На макбуке - драг двумя пальцами.
2. Колёсико мышки с шифтом или без.

Цитата:
Например, имя переменной человек решил поменять во всей программе. Как он это будет делать на схеме

Ctrl+F или кнопка "Search".
Можно заменять текст сразу во всех диаграммах внутри файла.
Вложение:
search.png
search.png [ 8.65 КБ | Просмотров: 20872 ]


Сергей, спасибо за замечания!

Страница 1 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/