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

Перейти к навигацииПерейти к поиску
Парадигмы программирования

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

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

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

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

Примечания

Литература

  • Джозеф Джарратано, Гари Райли. Глава 10. Процедурное программирование // Экспертные системы: принципы разработки и программирование. — М.: Вильямс, 2006. — С. 779—851.
  • Хювёнен Э., Сеппянен Й. Мир Лиспа. В 2-х т. / Пер. с финск.. — М.: Мир, 1990. — ISBN 5-03-001935-9 (русск.). — ISBN 5-03-001336-9. — ISBN 951-26-2787-6 (финск.).