Найти тему

Программы с высоты птичьего полёта

В университете я узнал что любую линейную динамическую систему можно представить в виде пары векторных уравнений:

Линейная динамическая система в виде пространства состояний
Линейная динамическая система в виде пространства состояний

x — состояние системы
u — ввод в систему
y — вывод из системы

Вы представляете насколько это круто? Не важно насколько велика система, сколько в ней взаимодействующих частей — мы всегда можем с высоты птичьего полёта думать о ней как о всего лишь паре уравнений. Если нас не устраивает как ведёт себя система, мы просто подправляем значения A, B, C, D или u так чтобы она вела себя как надо.

Динамические системы так похожи на программы, у них есть ввод, вывод и детерминированный алгоритм получения следующего состояния. В отличие от инженеров программисты застряли в каменном веке) У нас нет удобного представления больших программ. Нельзя сказать что мы можем думать о программе как о нескольких уравнениях из которых можно выводить решения проблем.

Как я понимаю, проблема в том что состояние программ неудобно выражать с помощью векторов.

Конечно можно сказать что память программы это просто один большой вектор, и через него делать ввод/вывод. Но боже, как же больно описывать даже простейшие программы в таком виде. Должен быть какой-то другой путь.

В коде мы работаем с древовидными структурами со сложными связями. Нужно какое-то другое, невекторное представление. Соответсвенно привычные нам dx/dt понятия о производных тоже не подходят.

Сейчас читаю книгу "Smart spacetime" написанную Mark Burgess, где он приводит примеры ставящие под сомнение привычное понимание времени и пространства. Очень интересно. Надеюсь что эта книга поможет мне понять как могли бы выглядеть уравнения для программ.

Smart spacetime
Smart spacetime