DRAKON.SU

Текущее время: Воскресенье, 27 Май, 2018 20:45

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




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

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 9
Откуда: Астрахань
Rifat писал(а):
Дмитрий Бардынин писал(а):
Разделяю мнение о необходимости плавного перехода от алгоритма к программе.

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

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


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

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 208
Откуда: Казань
Я к тому, что все это уже придумано. И не нужно изобретать велосипед, а достаточно поискать про "пошаговое уточнение" или "stepwise refinement".


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

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


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

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 208
Откуда: Казань
По существу, перспектив у данного метода не очень много. Дело в том, что человеческий язык служит для описания более высоких понятий, а язык программирования служит для описания более низкоуровневых понятий. И обычная ситуация, когда одна фраза на естественном языке, будет занимать 10 и более строк на языке программирования.

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


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

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

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

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


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3658
Откуда: Москва
adva писал(а):
Гораздо легче понять алгоритм по естественному языку, чем по программному, так как не всегда идентификаторы имеют названия, проясняющие суть.

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

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


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

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

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

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

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

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

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

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

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

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

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


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

Зарегистрирован: Пятница, 10 Март, 2017 08:05
Сообщения: 46
Владимир Паронджанов писал(а):
Поясняю идею.

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

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


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

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

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

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


Вложения:
NoComments.jpg
NoComments.jpg [ 509.23 КБ | Просмотров: 718 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Декабрь, 2017 12:53 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3658
Откуда: Москва
Василий, спасибо. Ваше предложение надо обязательно реализовать.


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3658
Откуда: Москва
Василий, по вашей рекомендации выкладываю дракон-программу без комментариев (без числителей).

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


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



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


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3658
Откуда: Москва
Это очень важная тема и важный вопрос.
Прошу критиковать
viewtopic.php?p=101022#p101022


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 22 Декабрь, 2017 13:17 
Аватара пользователя

Зарегистрирован: Пятница, 10 Март, 2017 08:05
Сообщения: 46
Степан Митькин писал(а):
Владимир Паронджанов писал(а):
Поясняю идею.

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Апрель, 2018 19:50 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3658
Откуда: Москва
Продолжение темы см.
viewtopic.php?f=177&t=6251


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

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


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

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


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

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