Структуры кода и данных
То что каждый программист должен понимать про структуры кода и данных
Структурное представление кода основано на Теореме Бёма — Якопини, они доказали, что любой исполнимый алгоритм может быть представлен в виде трех структур: - последовательность - ветвление - повторение (циклы)
структурный подход упростил доказательство корректности кода, и позже Дейкстра очень сильно критиковал подходы, которые включали в себя безусловные переходы с использованием goto, одна из причин - это разрушает структуру кода и усложняет доказательство корректности.
Понимание того, что код - это "структура" позволило абстрагироваться от кода и сосредоточиться на взаимодействии (логике), так появилась архитектура на уровне кода и элементарное разбиение на подпрограммы (функции), а в дальнейшем стало основой развития парадигм программирования.
С точки зрения данных, структуры показывают способы организации и взаимодействия информации. К простым структурам принято относить списки, деревья, массивы и тому подобные вещи.
Интересно, что если структуры отображать абстрактно, например в виде схем, то структуры кода во многом похожи на структуры данных, поэтому можно говорить, что в компьютере все есть данные - и код, и пользовательская информация. Это хорошо видно на моделях организации памяти, там сегменты разделены условно, и данные от кода "на глаз" не отличить.
Грамотный специалист должен понимать, что обсуждение "структуры кода" - это разговор про архитектуру, а обсуждение структуры данных - это про моделирование и хранение информации.