Процедурное программирование

Процеду́рное программи́рование — программирование на императивном языке, при котором последовательно выполняемые операторы можно собрать в подпрограммы, то есть более крупные целостные единицы кода, с помощью механизмов самого языка[1].

Процедурное программирование является отражением архитектуры традиционных ЭВМ, которая была предложена Фон Нейманом в 1940-х годах. Теоретической моделью процедурного программирования служит машина Тьюринга. Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причём первая последовательно обновляет содержимое последней.

Процедурный язык программирования предоставляет возможность программисту определять каждый шаг в процессе решения задачи. Особенность таких языков программирования состоит в том, что задачи разбиваются на шаги и решаются шаг за шагом. Используя процедурный язык, программист определяет языковые конструкции для выполнения последовательности алгоритмических шагов. Важным шагом в развитии процедурного программирования стал переход к структурной парадигме, возникшей благодаря открытию возможности создавать тьюринг-полные программы без оператора безусловного перехода (теорема Бёма — Якопини).

Большинство ранних императивных языков программирования, в том числе Фортран, Кобол, Алгол, Бейсик, Си, ПЛ/1, Паскаль, Форт — процедурные; более поздние императивные языки, в частности, реализующие объектную парадигму (Smalltalk, C++, Java), как правило, не относят к категории процедурных, поскольку принцип организации блоков выполнения в подпрограммы в них реализуется на другом уровне абстракции. Определённое возрождение процедурного подхода наблюдается в ряде сценарных языков (Tcl, Perl, Lua, языки командных оболочек), однако большинство из них являются мультипарадигменными — на них можно создавать программы и в непроцедурных стилях (объектно-ориентированном, функциональном).

ПримечанияПравить

ЛитератураПравить