DRAKON.SU

Текущее время: Четверг, 28 Март, 2024 16:10

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Вторник, 05 Декабрь, 2017 19:38 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Язык ДРАКОН.
Алгоритм и программа в одном флаконе


Вот пример по принципу Числитель – Знаменатель.
В каждой иконе действует правило:
Цитата:
В числителе алгоритм, в знаменателе программа


Спасибо Геннадию Николаевичу Тышову.

Создано совместно с Сергеем Ефановым.

Вложение:
Числит Знаменат АКМ_11.png
Числит Знаменат АКМ_11.png [ 40.13 КБ | Просмотров: 11871 ]


Уважаемые коллеги!

Прошу критиковать и предлагать другие варианты


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 05 Декабрь, 2017 22:04 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
Код:
50мс
---
delay(50)
Это похоже на тавтологию и трату места впустую.
Просто паузы с цифрой 50мс должно быть достаточно.

Код:
Увеличь счётчик выстрелов на единицу
---
seria++
Тут пояснение не имеет смысла. Ладно бы операция сложная была. А тут операция простейшая, так её ещё и пояснением длиннющим снабжать. Снова трата места впустую, и лишняя когнитивная нагрузка.

Код:
Выключи процессор
---
if (GPIO);
GPWF=0;
asm("sleep");
Тут практически ошибка goto fail. Наверняка точка с запятой после строки IF лишняя. Если она не лишняя, то зачем вообще нужна строка про if?
Да, среда тов. Тышова просто блестяще справилась с задачей и таки позволила написать ахинею.


Если вариант "отображать программу в знаменателе" настраивается галочкой, то, возможно, это шаг в правильном направлении.
Что-нибудь в духе "формат отображения: только описание, описание+программа, только программа"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 08:47 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Поясняю идею.

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

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

Алгоритм
Вложение:
Числит Знам Алгоритм АКМ_10.png
Числит Знам Алгоритм АКМ_10.png [ 28.46 КБ | Просмотров: 11859 ]


Программа
Вложение:
Числит Знаменат АКМ_11.png
Числит Знаменат АКМ_11.png [ 40.13 КБ | Просмотров: 11859 ]


Таким образом, алгоритм превращается в комментарии, расположенные в числителе в иконах программы.

Владимир Ситников писал(а):
Код:
Увеличь счётчик выстрелов на единицу
---
seria++
Тут пояснение не имеет смысла. Ладно бы операция сложная была. А тут операция простейшая, так её ещё и пояснением длиннющим снабжать. Снова трата места впустую, и лишняя когнитивная нагрузка.

Вы правы. Операция простейшая. Но комментарий был создан еще на этапе создания алгоритма. Он сохранился и превратился в числитель в программе.

Мне кажется, принцип "Числитель-Знаменатель" надо соблюдать во всех иконах, а не выборочно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 10:13 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 239
Откуда: Россия, Стерлитамак
Идея понравилась, но все таки надо иметь возможность переключаться между режимами:
только описание (числитель), описание+программа (числитель/знаменатель), только программа (знаменатель)". Или хотя бы между первыми двумя.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 10:23 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
adva писал(а):
Идея понравилась, но все таки надо иметь возможность переключаться между режимами:
1. только описание (числитель),
2. описание+программа (числитель/знаменатель),
3. только программа (знаменатель)".

Или хотя бы между первыми двумя.

Полностью с вами согласен.
Нужны все три указанные вами режима.

Первые два режима (алгоритм и программа) я уже выложил.
Цитата:
1. только описание (числитель),
2. описание+программа (числитель/знаменатель)

Третий ваш режим:
Цитата:
только программа (знаменатель)
будет обязательно выложен.

Переключение между режимами, которое вы предлагаете, мне нравится. Желательно услышать мнение Геннадия Тышова и Степана Митькина
.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 10:26 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Владимир Паронджанов писал(а):
Поясняю идею.

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

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


Пребываю в состоянии смешанных чувств. Не могу сформировать себе мнение.

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

С другой стороны, когда комментарий сидит в той же иконе, это прекрасно!
1. По-русски часто можно гораздо чётче выразить намерение, чем самым красивым кодом. Понятнее в 10 раз.
2. Ясно, к чему именно относится комментарий. К какому именно блоку кода.
3. Визуально приятно. Комментарий запакован вместе с кодом в одну коробочку. Словами объяснить трудно. Ладненько и миленько. Кушели, как говорят норвежцы.

С третьей стороны, это намёк на то, что всё-таки надо вести борьбу за читаемость кода.
1. Одна мысль в одной иконе. Не перегибаем с вложенностью выражений.
2. Понятные и относящиеся к делу имена переменных, методов и прочая.
3. Изобретаем языки программирования, где слова имеют значение. Покамест это имеет только SQL (не к ночи будь помянут). Пока имена являются тупыми идентификаторами, поезд эргономики программирования стоит на платформе.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 11:23 

Зарегистрирован: Четверг, 06 Январь, 2011 15:45
Сообщения: 54
Владимир Ситников писал(а):
Код:
Выключи процессор
---
if (GPIO);
GPWF=0;
asm("sleep");
Тут практически ошибка goto fail. Наверняка точка с запятой после строки IF лишняя. Если она не лишняя, то зачем вообще нужна строка про if?
Тут нет ошибки, точка с запятой - не лишняя. Эта инструкция компилируется в команду чтения GPIO. Полезный результат в данном случае - сброс бита изменения порта.
С.Д. Ефанов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 11:30 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
efanov писал(а):
Тут нет ошибки, точка с запятой - не лишняя. Эта инструкция компилируется в команду чтения GPIO. Полезный результат в данном случае - сброс бита изменения порта.
С.Д. Ефанов.

Если так, то в той строке обязательно нужен поясняющий комментарий. Ещё лучше фигурные скобки вместо точки с запятой. Ну либо #define.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 12:56 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Владимир Ситников писал(а):
Иначе получился странный код, который и удалить по ошибке могут. Или точку с запятой убрать.

Это обязательно надо исправить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 13:05 

Зарегистрирован: Четверг, 06 Январь, 2011 15:45
Сообщения: 54
Владимир Ситников писал(а):
Если так, то в той строке обязательно нужен поясняющий комментарий. Ещё лучше фигурные скобки вместо точки с запятой.
Насчёт фигурных скобок - полностью согласен. А насчёт комментария - это уже к Паронджанову...
Ефанов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 13:38 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 239
Откуда: Россия, Стерлитамак
Тут еще подумал:
1) если сделать обязательным для заполнения и "числитель" и "знаменатель", то по сути получится "самодокументируемый" код, о чём так долго "мечтали большевики".
2) надо как-то отделить алгоритм от программы, чтобы можно было программу заполнить на любом языке программирования. Таким образом, можно будет использовать алгоритм для построения программ на любом языке.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Декабрь, 2017 13:48 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
adva писал(а):
Тут еще подумал:
1) если сделать обязательным для заполнения и "числитель" и "знаменатель", то по сути получится "самодокументируемый" код, о чём так долго "мечтали большевики".
Вы правы. Цель именно такая.

adva писал(а):
2) надо как-то отделить алгоритм от программы, чтобы можно было программу заполнить на любом языке программирования. Таким образом, можно будет использовать алгоритм для построения программ на любом языке.
Простите, я не понял. Что значит "отделить"?
Выше я показал ОТДЕЛЬНО
— дракон-схему алгоритма,
— дракон-схему программы на языке Си.

Для другого языка, например, для питона,
надо написать дракон-схему программы на языке питон.

Так что они уже отделены.
Вопрос. Что еще нужно отделить?
Просьба пояснить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Декабрь, 2017 09:34 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 239
Откуда: Россия, Стерлитамак
Владимир Паронджанов писал(а):
Так что они уже отделены.
Вопрос. Что еще нужно отделить?
Просьба пояснить.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Декабрь, 2017 20:35 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Уважаемые коллеги!

Я придаю большое значение этой теме.

Здесь описана важная новая идея.

Прошу критиковать и высказывать предложения

viewtopic.php?p=100931#p100931


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Декабрь, 2017 11:44 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Разделяю мнение о необходимости плавного перехода от алгоритма к программе. У нас есть скромный опыт такого перехода, который опишу позже в отдельной теме.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Декабрь, 2017 20:40 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Дмитрий, спасибо. Что такое ТС?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Декабрь, 2017 20:43 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Уточненная программа Сергея Ефанова, формирующая паузу 50 миллисекунд.

Вложение:
цикл фор АКМ_19.png
цикл фор АКМ_19.png [ 5.71 КБ | Просмотров: 11727 ]


Для удобства сравнения тут же выкладываю исправленную дракон-программу
"Лазерный тренажер стрельбы"

Вложение:
Программа Лазерный Тренажер АКМ_20.png
Программа Лазерный Тренажер АКМ_20.png [ 39.87 КБ | Просмотров: 11727 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Декабрь, 2017 22:34 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Владимир Паронджанов писал(а):
Дмитрий, спасибо. Что такое ТС?
ТС - топикстартер, инициатор темы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Декабрь, 2017 17:52 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
viewtopic.php?p=100968#p100968

Приглашаю специалистов высказать свое мнение и критические замечания.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 10 Декабрь, 2017 18:39 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 219
Откуда: Казань
Дмитрий Бардынин писал(а):
Разделяю мнение о необходимости плавного перехода от алгоритма к программе.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB