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