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

Язык ДРАКОН. Алгоритм и программа в одном флаконе
https://forum.drakon.su/viewtopic.php?f=177&t=6185
Страница 2 из 2

Автор:  Дмитрий Бардынин [ Воскресенье, 10 Декабрь, 2017 19:07 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Rifat писал(а):
Дмитрий Бардынин писал(а):
Разделяю мнение о необходимости плавного перехода от алгоритма к программе.

Уже 50 лет назад придумали метод пошагового уточнения (stepwise refinement), который является составной частью структурного программирования.

Это исключает возможность его разделять? Или имелось что-то иное ввиду?

Автор:  Rifat [ Воскресенье, 10 Декабрь, 2017 21:48 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Я к тому, что все это уже придумано. И не нужно изобретать велосипед, а достаточно поискать про "пошаговое уточнение" или "stepwise refinement".

Автор:  Дмитрий Бардынин [ Воскресенье, 10 Декабрь, 2017 23:46 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Вы достаточно точны в хронологии. Однако к обсуждаемому вопросу, думается, это мало относится. Предлагаю прекратить уточнять термины, и вернуться к сути начального сообщения. Вы не согласны с описываемым приемом?

Автор:  Rifat [ Понедельник, 11 Декабрь, 2017 12:17 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

По существу, перспектив у данного метода не очень много. Дело в том, что человеческий язык служит для описания более высоких понятий, а язык программирования служит для описания более низкоуровневых понятий. И обычная ситуация, когда одна фраза на естественном языке, будет занимать 10 и более строк на языке программирования.

Соответственно нужно или понижать уровень описания для естественного языка, например, будет говорится "присваиваем 0 переменной count" для выражения "count := 0" или же повышать уровень для языка программирования, чтобы команда была довольно емкой, это в принципе достижимо для высокоуровневых клиентских модулей на языке объектно-ориентированного программирования, например, "door.Open()" можно описать как "открываем дверь" (здесь уровни примерно совпадают), но для более низкоуровненых действий одно предложение может распадаться на десятки - сотни команд, например, "сортируем массив в порядке возрастания" будет распадаться на десятки более примитивных команд на языке программирования.

Автор:  adva [ Вторник, 12 Декабрь, 2017 06:24 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Rifat писал(а):
Соответственно нужно или понижать уровень описания для естественного языка, например, будет говорится "присваиваем 0 переменной count" для выражения "count := 0" или же повышать уровень для языка программирования, чтобы команда была довольно емкой, это в принципе достижимо для высокоуровневых клиентских модулей на языке объектно-ориентированного программирования, например, "door.Open()" можно описать как "открываем дверь" (здесь уровни примерно совпадают), но для более низкоуровненых действий одно предложение может распадаться на десятки - сотни команд, например, "сортируем массив в порядке возрастания" будет распадаться на десятки более примитивных команд на языке программирования.

А что мешает создать Вставку с вызовом "Открываем дверь", с подробностями? Типа: протянули руку, вставили ключ, повернули ключ ...

А ограниченное количество предложений, вполне вписывается в блок. Смысл тут именно в самодокументировании программы. Гораздо легче понять алгоритм по естественному языку, чем по программному, т.к. не всегда идентификаторы имеют названия, проясняющие суть, приходится тратить много усилий, чтобы воссоздать смысл программы, в случае, если ее скажем надо оптимизировать, или просто найти ошибку.

Автор:  Владимир Паронджанов [ Вторник, 12 Декабрь, 2017 08:51 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

adva писал(а):
Гораздо легче понять алгоритм по естественному языку, чем по программному, так как не всегда идентификаторы имеют названия, проясняющие суть.

Приходится тратить много усилий, чтобы воссоздать смысл программы в случае, если ее, скажем, надо оптимизировать,
или просто найти ошибку.

Адва, спасибо. Хорошо сформулировано.

Автор:  Василий Валевич [ Среда, 13 Декабрь, 2017 10:34 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Пиджин (pidgin) - это гибридный язык, например русско-английский, который часто встречается в IT-компаниях. На пиджине нижняя часть, показанная на иконах, называется "сниппет кода" (code snippet, фрагмент кода). Сниппеты с комментариями - вот что здесь обсуждается. Избыточные комментарии в коде - это помеха. Они только засоряют рабочее пространство и отвлекают внимание. Если самодокументирующийся код на 50% состоит из комментариев, то при каждодневной копке в таком коде хочется волком выть ))

Чем хорош DRAKON Editor - так это тем, что сниппеты в нём хорошо организованы и выстроены в систему, из которой генерируется полностью готовый и работающий класс кода. При этом есть возможность добавить минималистичные комментарии - и то при необходимости.

Например, как вам понравится такой исходный код? (с точки зрения разработчика)
Цитата:
// В.Д. Паронджанов поблагодарил пользователя Адва
// Также В.Д. Паронджанов сказал, что формулировка хорошая

Адва, спасибо. Хорошо сформулировано.

И так в миллионах строк кода.

    1) Если сделать подобное детальное комментирование нормой, то скоуп (scope, объём работ) разрастётся, бюджеты и сроки вырастут. Если бюджеты и сроки не увеличить, то увеличатся риски по суммам и срокам. При нынешней скорости изменений и возможностях рефакторинга можно гарантировать, что те или иные части кода будут регулярно чиститься, удаляться или заменяться. Стоит ли ради этого увеличивать бюджеты и сроки?

    2) У кода есть период жизни. Внутри этого периода надо успеть его написать и поэксплуатировать. Полный период жизни кода стремится к сокращению. Период написания и сопровождения, с таким комментированием, скорее всего будет стремиться к увеличению. В итоге - на эксплуатацию кода останется всего-то ничего, с точки зрения времени его существования.

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

Это с одной стороны. С другой стороны - у другой целевой аудитории могут быть другие приоритеты.
Вот как выглядит предыдущий фрагмент кода, но с точки зрения другой целевой аудитории:
Цитата:
// В.Д. Паронджанов поблагодарил пользователя Адва
// Также В.Д. Паронджанов сказал, что формулировка хорошая

d#b+, ULWKzVF. 3b~u8d z5)2Y-;#tR:+j@.

Автор:  Василий Валевич [ Среда, 13 Декабрь, 2017 16:46 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Владимир Паронджанов писал(а):
Поясняю идею.

1. Разрабатываем алгоритм
2. Разрабатываем программу по принципу "Числитель-Знаменатель"
3. С помощью маршрутного транслятора (автор Тышов) автоматически получаем исходный код на языке Си.
4. При необходимости вручную дописываем несколько операторов языка Си.

Улучшаются возможности семантической отладки (Semantic Debug) - это преимущество.
Но улучшится ли реально отладка такого кода на больших системах - это вопрос.
Потому что дъявол, как обычно, кроется в мелочах.

Автор:  Василий Валевич [ Понедельник, 18 Декабрь, 2017 10:58 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Владимир Паронджанов писал(а):
adva писал(а):
Тут еще подумал:
1) если сделать обязательным для заполнения и "числитель" и "знаменатель", то по сути получится "самодокументируемый" код, о чём так долго "мечтали большевики".
Вы правы. Цель именно такая.

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

К примеру, для Visual Studio есть расширение, которое решает эту проблему
NoComments (Hide/Show Comments)
https://marketplace.visualstudio.com/items?itemName=3dGrabber.NoComment

Вложения:
NoComments.jpg
NoComments.jpg [ 509.23 КБ | Просмотров: 9720 ]

Автор:  Владимир Паронджанов [ Понедельник, 18 Декабрь, 2017 12:53 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Василий, спасибо. Ваше предложение надо обязательно реализовать.

Автор:  Владимир Паронджанов [ Понедельник, 18 Декабрь, 2017 15:10 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Василий, по вашей рекомендации выкладываю дракон-программу без комментариев (без числителей).

ДРАКОН-программа без комментариев
Вложение:
Тользо знаменталь Без числителя АКМ_22.png
Тользо знаменталь Без числителя АКМ_22.png [ 27.36 КБ | Просмотров: 9701 ]


Для сравнения:
ДРАКОН-программа с комментариями (с числителями)
Вложение:
Числит Знаменат АКМ_11.png
Числит Знаменат АКМ_11.png [ 40.13 КБ | Просмотров: 9701 ]



Прошу критиковать

Автор:  Владимир Паронджанов [ Вторник, 19 Декабрь, 2017 13:45 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Это очень важная тема и важный вопрос.
Прошу критиковать
viewtopic.php?p=101022#p101022

Автор:  Василий Валевич [ Пятница, 22 Декабрь, 2017 13:17 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Степан Митькин писал(а):
Владимир Паронджанов писал(а):
Поясняю идею.

1. Разрабатываем алгоритм
2. Разрабатываем программу по принципу "Числитель-Знаменатель"
3. С помощью маршрутного транслятора (автор Тышов) автоматически получаем исходный код на языке Си.
4. При необходимости вручную дописываем несколько операторов языка Си.

Выкладываю две дракон-схемы:
— алгоритм
— программу

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

Есть альтернативный способ без покупки дорогостоящего монитора - взять парочку мониторов средних размеров, но с хорошим максимальным разрешением экрана (например, 2560 x 1440 и выше). Обновить драйвера мониторов, купить хорошую оптику себе на нос в качестве очков. В результате - и видимость хорошая, и рабочее пространство большое, и мониторы компактные.

Автор:  Владимир Паронджанов [ Понедельник, 30 Апрель, 2018 19:50 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

Продолжение темы см.
viewtopic.php?f=177&t=6251

Автор:  LKom [ Среда, 25 Июль, 2018 15:24 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Алгоритм и программа в одном флаконе

https://hi-tech.mail.ru/news/lazerniy-akm/

Китайцы изобрели новый вид оружия.
Лазерный «автомат Калашникова» поражает цель с 800 метров


Идея "Лазерный тренажер стрельбы" В.Д. Паронджанова и С. Ефанова реализована китайцами.

https://forum.drakon.su/viewtopic.php?p=100824#p100824
О ходе написания книги, В.Д. Паронджанов давно не рассказывает.

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