Владимир Паронджанов писал(а):
2. Сегодня ситуация изменилась. Возникла настоятельная необходимость четко разграничить два понятия: 1) алгоритм, 2) программа.
Поскольку по существу это есть одно и то же, то постановка вопроса бессмысленна, и даже вредна.
ДРАКОН, как язык, более всего подходит для исполнителя "человек", как выше справедливо отметил
Валерий Лаптев.
С одной стороны, по отношению к программе для конкретного компьютера то, что можно записать на ДРАКОНе (или любом аналогичном стандартном языке диаграмм), выступает как своего рода метаинформация, детализированное техническое задание. Которое затем должно
компилироваться в конкретную программу.
Таким образом, можно говорить об алгоритмическом слое проекта (точно так же, как мы говорим о схеме базы данных, напримре).
С другой же стороны, этот алгоритмический слой, на мой взгляд, не может претендовать на монополию названия "алгоритм". Потому что:
1) Не любая программа есть алгоритм (не забываем о существовании других парадигм, кроме императивной!).
2) В императивной парадигме любая программа представляет собой алгоритм.
3) В большинстве проектов алгоритмический слой далеко не единственный. Предлагаю отметить лишь тождество программы и алгоритма (в императивной парадигме), не забывая о том, что это всего лишь одна из частей реальных программных проектов.
Промежуточный вывод из сказанного: Программа есть более общее понятие, а
алгоритм есть частный случай представления программы.
4) Любой алгоритм (программу) можно показать в РАЗНЫХ представлениях, и с разной степенью детализации.
5) Выбор наилучшего представления программы определяется задачей. Так, для прикладника вообще может иметь смысл только чертёж (например, FBD), для системного администратора - схема интерфейсов и спецификация требований, и т.д. и т.п.
6) Отвлекаясь от программирования, заметим, что функциональная деятельность ЧЕЛОВЕКА алгоритмизуется достаточно хорошо, и это прекрасная ниша для упражнений с ДРАКОНом. Тем не менее, программой этот алгоритм быть не перестаёт (ибо есть одно из возможных представлений, скажем, должностных инструкций - для исполнителя "человек").
Выводы:
- искусственное разделение понятий "программа" и "алгоритм" нецелесообразно ни со стороны программной инженерии, ни со стороны "инженерии социальной";
- естественнонаучное различе их заключается в том, что алгоритм есть частный случай, одно из возможных представлений программы;
- целесообразно осваивать подходящие ниши (деятельность человека, например), но никоим образом не делая это "силовым методом" через искусственное внедрение специальной терминологии и терминологических различий.