DRAKON.SU https://forum.drakon.su/ |
|
Алгоритм Луна https://forum.drakon.su/viewtopic.php?f=176&t=5968 |
Страница 1 из 1 |
Автор: | Степан Митькин [ Пятница, 30 Декабрь, 2016 00:57 ] |
Заголовок сообщения: | Алгоритм Луна |
Алгоритм Луна на языке ДРАКОН-JavaScript. Работает. https://ru.wikipedia.org/wiki/%D0%90%D0 ... 0%BD%D0%B0 Вложение:
|
Автор: | LKom [ Четверг, 12 Январь, 2017 17:58 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
В Дракон-схеме "Алгортм Луна" Степана Митькина нет: 1. ни назначения алгоритма, 2. ни описания области применения алгоритма, 3. ни описания алгоритма в терминах прикладной области. Алгоритм не является наглядным и понятным. Проблемная область алгоритма вытеснена программным кодом. Для рассмотрения Дракон-схемы алгоритма требуется знание языка программирования. Программный код алгоритма в википедии более понятный и наглядный. Непонятно, что Степан Митькин хочет продемонстрировать и получилось ли? Для кого предназначена Дракон-схема алгоритма? Здесь применение нотации В.Д. Паронджанова не оправдано. |
Автор: | Владимир Паронджанов [ Четверг, 12 Январь, 2017 20:50 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Частично соглашусь с LKom. Как выйти из положения? Мне кажется, надо иметь две дракон-схемы: 1. дракон-схему алгоритма (для понимания сути дела), 2. дракон-схему программы (для точного отображения кода). |
Автор: | adva [ Пятница, 13 Январь, 2017 07:33 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Замечание Lcom помогло мне понять, для чего очень удобен дракон, ну и Эванса DDD начал читать. По сути он нужен, чтобы быстро вникнуть в алгоритм и его предназначение. И он должен быть понятен как программисту, так и специалисту предметной области. А для этого он должен использовать язык понятный им обоим. А следовательно это не язык программирования, а терминов из предметной области, хотя возможно дополнен какими-то терминами непосредственно из ИТ. И язык не должен выходить за рамки этого языка. Этот язык должен быть где-то закреплен, например пусть в той же схеме Гном. С другой стороны код должен 100% соответствовать алгоритму. Предложенный вариант со второй схемой явно неправильный, т.к. в этом случае это соответствие рано или поздно будет нарушено при развитии системы. Нужен какой-то другой механизм. Прятать код, как это сделано в другом известном редакторе, с другой стороны, тоже неправильно, это тоже может привести к расхождениям, хотя и показывать его непосредственно на схеме тоже лишнее. Может быть тут должен быть "интерфейсный / компонентный" подход. Скажем при проектировании языка, закрепляем не только определение термина, но и соответствующий код, по сути получается некая компонента с интерфейсом. Если решили изменить термин, то не переделывать имеющийся, а всегда создавать новый код, а предыдущий возможно как-то помечать. Но тут опять наверное упираемся в представление данных в драконе, хотя если попробовать при "закреплении" языка использовать ERIL, то может быть это решится. Соответственно, при таком подходе, "нет термина, нет кода", придется сначала согласовывать между программистами и специалистами предметной области, термины, и только затем их "воплощать" в коде. Как я понимаю, для разработки в буране использовали именно какой-то жестко закрепленный язык предметной области, который и использовался в драконе, именно поэтому, код могли составлять не программисты. |
Автор: | Владимир Паронджанов [ Суббота, 14 Январь, 2017 08:19 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
adva писал(а): код должен 100% соответствовать алгоритму. Предложенный вариант со второй схемой явно неправильный, т.к. в этом случае это соответствие рано или поздно будет нарушено при развитии системы. Вторая схема вносит ясность как пример кода. Почему вы считаете ее "явно неправильной"? Владимир Паронджанов писал(а): надо иметь две дракон-схемы:
1. дракон-схему алгоритма (для понимания сути дела), 2. дракон-схему программы (для точного отображения кода). |
Автор: | LKom [ Суббота, 14 Январь, 2017 08:34 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Степану Митькину надо использовать ИС Дракон. В ИС Дракон проблемное описание алгоритма и программная реализация всегда присутствуют, соответствую друг другу и неразделимы. Две Дракон-схемы не требуются, достаточно одной созданной в ИС Дракон. |
Автор: | LKom [ Суббота, 14 Январь, 2017 09:49 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Игорь Мазница пишет (машинный перевод) в http://www.igormaznitsa.com/netbeans-mmd-plugin/ Цитата: Основная часть проекта программного обеспечения не код, а знание, полученные в ходе реализации проекта. Я предполагаю, что знание является основной частью любого бизнеса сегодня, и это очень важно, чтобы переместить сгенерированное знание из неформальному уровне до формального уровня, чтобы избежать его потери. Есть много подходов, чтобы сохранить знание и диаграмму, карта ума является одним из них. Кроме того, очень важно, чтобы держать «расстояние» между проектом и его знания как можно более коротким и идеальный вариант, чтобы сохранить знания только в рамках проекта в качестве набора документов. Если вы используете какие-либо внешних инженерных знаний инструмент, то расстояние уже не так коротка и для дела, я решил разработать некоторые плагин, который позволит создавать и редактировать график знания только в среде NetBeans на основе проектов. В ИС Дракон знания, т.е. проблемное описание, являются визуализированным и главным содержанием Дракон-схемы и Дракон-листа. Программный код является вторичным в алгоритме. При этом для программного кода обеспечивается минимальное расстояние от проблемного описания, обеспечивается его декомпозиция в соответствии с декомпозицией проблемного описания алгоритма и неотрывность от проблемного описания. В ИС Дракон обеспечивается верификация соответствия проблемного описания и программного кода. При дублировании в различных иконах Дракон-схемы текста программного кода или текста иконы выставляется требование обеспечить дублирование в этих иконах соответствующих текстов. |
Автор: | Владимир Паронджанов [ Суббота, 14 Январь, 2017 12:45 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Мы должны быть благодарны Геннадию Тышову и Степану Митькину. Они предложили две существенно разные философии визуализации. Тышов предложил философию алгоритмической визуализации, а Митькин — философию программной визуализации. У Тышова дракон-схема — это алгоритм, у Митькина дракон-схема — это программа. Мне кажется нужно и то, и другое. |
Автор: | Игорь Мазница [ Суббота, 14 Январь, 2017 14:56 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Цитата: Игорь Мазница пишет (машинный перевод) в я сейчас все думаю как встраивать дракон схемы в mind map, формат хранения разработал,сейчас работаю над автоматической визуализацией |
Автор: | Владимир Паронджанов [ Воскресенье, 15 Январь, 2017 09:12 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Игорь Мазница писал(а): я сейчас все думаю как встраивать дракон схемы в mind map, формат хранения разработал,сейчас работаю над автоматической визуализацией Игорь, посмотрите на труды Николая Сенюгина viewtopic.php?f=62&t=4060&hilit=intelograf
|
Автор: | Игорь Мазница [ Воскресенье, 15 Январь, 2017 10:33 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
щтука интересная, но у меня задача попроще - я просто хочу встроить диаграммы дракона в узлы минд мапа что бы пользователи могли описывать какие то алгоритмы и хранить их в одном месте, так как майнд мап описывает знания, но не позволяет толком описать алгоритм рещения так как у меня майнд мапы хранятся в текстовом формате, то большой вопрос стоял как представлять дракон схему в хранилище что бы если что человек мог декодиовать и без едактора, вроде удалось сделать, вот как представляется алгоритм Луна в моем случае в хранилище Код: # Luhn algorithm
# https://en.wikipedia.org/wiki/Luhn_algorithm + | * start,luhn { * action,digits . * action,var sum = 0\nvar length = digits.length\nvar i * loop.start,i = 0; i < length; i++ * action,var index = length - i - 1\nvar digit = digit[index] * action,var d3 > i% 2 == 1 * action,var d2 = digit * 2 > d2 > 9 * action,d3 = d2 - 9 $label000 . * action,d3 = d2 $label000 . * action,d3 = digit :label000 * action,sum += d3 * loop.end * action,return (sum % 10 == 0) * end,End . |
Автор: | Степан Митькин [ Воскресенье, 15 Январь, 2017 23:49 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
LKom писал(а): Алгоритм не является наглядным и понятным. Проблемная область алгоритма вытеснена программным кодом. Сию минуту исправим-с. https://drakon-editor.com/ide/doc/examples/39 Вложение:
|
Автор: | Arhat109 [ Понедельник, 16 Январь, 2017 07:56 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Ув. Степан, мне кажется или алгоритм не содержит связки между результатом, получаемым внутри цикла и первым оператором после него? В цикле: перебирается входная последовательность из цифр (ясно из комментария к алгоритму), при этом (видимо) происходит изменение входной последовательности внутри цикла (ясно из "умножить цифру на 2" и т.д.), а вот далее, после цикла указано "рассчитать сумму..", но мне вот показалось непонятным какую: ИЗМЕНЕННОЙ последовательности или таки ИСХОДНОЙ? Непонятно, потому что расчет суммы накоплением можно делать внутри того же цикла по вычислению цифр, однако раз оно вынесено в отдельный цикл (сумма всегда цикл), то видимо "не факт", что речь идет о новой последовательности .. может надо рассчитать сумму исходной и измененной и поэтому суммирование вынесено отдельно? |
Автор: | Степан Митькин [ Понедельник, 16 Январь, 2017 11:29 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Arhat109 писал(а): Ув. Степан, мне кажется или алгоритм не содержит связки между результатом, получаемым внутри цикла и первым оператором после него? Есть такое. Исправил. Это общая проблема спецификаций на естественном языке: отсутствие переменных порождает неоднозначность. Присутствие же переменных и формул убивает читаемость. Цитата: потому что расчет суммы накоплением можно делать внутри того же цикла Это программистский трюк. Он также снижает читаемость. Вложение:
|
Автор: | Arhat109 [ Понедельник, 16 Январь, 2017 20:07 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Да, спасибо. Так - значительно нагляднее. P.S. Видимо я слишком сильно "привык" к программистским трюкам .. их отсутсвие режет глаз. |
Автор: | Владимир Паронджанов [ Вторник, 26 Сентябрь, 2017 10:30 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Спасибо всем участникам обсуждения. Дело новое. Различные точки зрения очень важны. |
Автор: | Владимир Паронджанов [ Четверг, 24 Сентябрь, 2020 16:41 ] |
Заголовок сообщения: | Re: Алгоритм Луна |
Моя позиция изложена в разделе viewforum.php?f=177 |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |