Структуры кода и данных

То что каждый программист должен понимать про структуры кода и данных

Структурное представление кода основано на Теореме Бёма — Якопини, они доказали, что любой исполнимый алгоритм может быть представлен в виде трех структур: - последовательность - ветвление - повторение (циклы)

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

Понимание того, что код - это "структура" позволило абстрагироваться от кода и сосредоточиться на взаимодействии (логике), так появилась архитектура на уровне кода и элементарное разбиение на подпрограммы (функции), а в дальнейшем стало основой развития парадигм программирования.

С точки зрения данных, структуры показывают способы организации и взаимодействия информации. К простым структурам принято относить списки, деревья, массивы и тому подобные вещи.

Интересно, что если структуры отображать абстрактно, например в виде схем, то структуры кода во многом похожи на структуры данных, поэтому можно говорить, что в компьютере все есть данные - и код, и пользовательская информация. Это хорошо видно на моделях организации памяти, там сегменты разделены условно, и данные от кода "на глаз" не отличить.

Грамотный специалист должен понимать, что обсуждение "структуры кода" - это разговор про архитектуру, а обсуждение структуры данных - это про моделирование и хранение информации.