Сразу скажу, что я этим никогда не пользовался, не пользуюсь, и не собираюсь пользоваться. Но в литературе это встречается. Также может встретиться на экзаменах или в задачах по программированию. Поэтому решил рассказать.
Начнём с состояний…
Обычный способ записи переменных на бумаге (вряд ли кто сегодня так делает, но раньше, в эпоху дороговизны и малой распространённости компьютеров это бывало) - это написать имя переменной со стрелкой, которая указывает на значение переменной. Такое обозначение называется диаграммой состояний, потому что оно показывает, в каком состоянии находится каждая переменная в данное время. Выглядит это примерно так:
Таким образом, диаграмма состояний - это графическое представление набора переменных и их значений.
Ну а стековая диаграмма - это графическое представление стека функций, их переменных, и значений этих переменных.
Как и диаграмма состояний, стековая диаграмма отображает значение каждой переменной, но кроме этого она ещё показывает функцию, которой принадлежит переменная (ну или переменные).
Каждая функция представлена отдельным фреймом (рамкой, кадром).
Фрейм - это блок, рядом с которым записывается имя функции. А внутри этого блока располагаются параметры и переменные функции.
Фреймы расположены в стеке (в пачке, один за одним в порядке очерёдности вызова), который указывает, какая функция вызвала какую.
Для примера рассмотрим вот такую программку на Python:
Программа никакой особой пользы не представляет, и служит исключительно для того, чтобы показать, какой вид для неё может иметь стековая диаграмма:
Здесь видно, что сначала вызывается главная функция программы, где есть переменная v, которой присваивается значение 15. Затем вызывается функция xyz, куда передаются два параметра. Кроме того, в функции есть ещё и локальные переменные. Ну а затем уже из этой функции вызывается стандартная функция print, куда уже передаётся результат вычислений в функции xyz.
Не знаю, кто это всё придумал. По моему так не сильно понятно и довольно муторно. Имеет смысл разве что в тех случаях, когда вы действительно пишите программу на бумаге. Хотя я бы, наверно, даже для этого придумал что-то другое.
Но, как говорится, что уж есть. Если кого-то вдруг преподаватели мучают этой фигнёй - пользуйтесь.
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.