TAU писал(а):
если программа на Хаскелле обменивается информацией с внешним миром в ходе своего выполнения - она выходит за рамки чистого функционального программирования и "вычислимости по Тьюрингу".
Перечисленные аспекты формальных моделей не имеют практической ценности для разработчиков алгоритмов!
Сами по себе эти модели имеют право на существование, но не являются адекватным инструментом для нас. О чём тогда весь спор?
Цитата:
3. ВРЕМЯ - это СУТЬ изменений. А вовсе не "изменяющийся сигнал". Принципиально невозможно ввести время всего лишь как еще одну из "входных" переменных.
Это именно изменяющийся ВНЕШНИЙ сигнал. Который программа ВСЕГДА получает из внешних источников (таймеры, часы реального времени, счётчик тиков процессора).
Цитата:
Потому что в управляющем алгоритме семантически важно место, в котором находится с точки зрения его логики, "фокус выполнения" в данный момент времени
Нет, не важно. Важно другое:
Цитата:
его выполнение должно быть синхронизировано с внешними для него, протекающими в объекте управления, процессами.
Теперь смотрите, как эта синхронизация достигается.
А именно, в 99,999% случаев она достигается через перечисленные выше внешние источники. То есть, по существу, через ввод/вывод.
Стало быть, время с алгоритмической точки зрения - это именно входной сигнал, ничего более.
Цитата:
ПРОЦЕСС - это НЕ ФУНКЦИЯ.
Конечно, нет. Для чего это тривиальное утверждение?
Функция используется для преобразования процессов.
Цитата:
Функция от набора текущих значений входных параметров и предыдущей истории состояний - это по смыслу совсем не то, что "просто" функция в обычном понимании, вне времени и истории отображающая элементы множества А в элементы множества Б. Вот эта самая предыдущая история состояний - она должна включать предысторию развития процессов в объекте, которым управляем, и выполнения самого управляющего алгоритма - корень различия.
"Вся предыдущая история" объекта управления не просто не важна, она ещё и недоступна - иначе чем через вектор входных сигналов X.
А история самого алгоритма полностью и однозначно формирует его пространство состояний S, и именно из него вычисляется следующее состояние.
Поэтому имеем именно "отображение элементов множества А в элементы множества Б". Причём однозначное. То есть не что иное, как функцию.
Цитата:
Математической основой всего перечисленного, как правило, служат графовые модели - системы переходов (конечные автоматы, сети Петри).
Графы - да, но они отнюдь не сводятся к сетям Петри и даже к конечным автоматам.
Например, графами описываются дифференциальные уравнения, которые в управляющих алгоритмах играют отнюдь не последнюю роль.
Цитата:
управляющие алгоритмы, и во вполне себе серьезных организациях и сейчас массово пишут на вполне себе всем известном языке Си.
Да.
И это именно тот случай, когда особенности организации управляющих алгоритмов важны.
Только что же с того? Раз важны, значит, мы их знаем и пользуемся (в том числе наработанными шаблонами).
Как-то вы всё время проходите мимо основополагающего: в общем случае для программиста всё есть переменные (за которыми стоят сигналы и процессы). Если переменная вдруг оказывается константой, мы можем только порадоваться некоторому упрощению - но называть это упрощение принципиальным язык не поворачивается никак.
adva писал(а):
Может действительно, в упр. алгоритмах важно не само время, а взаимодействие и время, как его какая-то составляющая?
В управляющих алгоритмах важны:
- синхронизация (где время выступает вспомогательным входным сигналом);
- точный интервал времени для расчётов (интерполяция/экстраполяция измерений, вычисление расчётных показателей процессов и т.д. и т.п.). Точные интервалы, разумеется, также получаются из измерений времени как входного сигнала.
Владимир Ситников писал(а):
Есть ли великий смысл в том, чтобы разделять "задачи на движение" и "задачи на проценты"? Вопрос риторический.
Вот-вот!
![Very Happy :D](./images/smilies/icon_biggrin.gif)