ЦБ

Типы программирования (все три типа являются парадигмами программирования)

Функциональное

Процедурное

Процедурное (или операторное) программирование является исторически первым и базовым стилем, основанным на потоке управления.


Процедурный стиль выражается в четком выделении в программе двух составляющих:

  • непроцедурной (описание переменных, функций, процедур)
  • процедурной (описание действий).

Функциональный стиль программирования характеризуется тем, что результат в нем выражается в терминах функций, применяемых к другим функциям, то есть функций, передающих результаты другим функциям. Аппликация - операция применения функции к аргументу. Этот стиль программирования не использует оператор присваивания. Основными средствами функционального программирования являются композиция и рекурсия.

Вычисление трактуется как вычисление значений функций в математическом понимании

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

Императивное

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

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


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

это парадигма программирования (стиль написания исходного кода компьютерной программы), для которой характерно следующее:

  • в исходном коде программы записываются инструкции (команды);
  • инструкции должны выполняться последовательно;
  • при выполнении инструкции данные, полученные при выполнении предыдущих инструкций, могут читаться из памяти;
  • данные, полученные при выполнении инструкции, могут записываться в память.

Императивная программа похожа на приказы (англ. imperative — приказ, повелительное наклонение), выражаемые повелительным наклонением в естественных языках, то есть представляют собой последовательность команд, которые должен выполнить компьютер.

При императивном подходе к составлению кода (в отличие от функционального подхода, относящегося к декларативной парадигме) широко используется присваивание. Наличие операторов присваивания увеличивает сложность модели вычислений и делает императивные программы подверженными специфическим ошибкам, не встречающимся при функциональном подходе[1].

Основные черты императивных языков:

  • использование именованных переменных;
  • использование оператора присваивания;
  • использование составных выражений;
  • использование подпрограмм;

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

Противопоставляется парадигме императивного программирования

Декларативная парадигма

Декларати́вное программи́рование — это парадигма программирования, в которой задаётся спецификация решения задачи, то есть описывается, что представляет собой проблема и ожидаемый результат. Противоположностью декларативного является императивное программирование, описывающее на том или ином уровне детализации, как решить задачу и представить результат. В общем и целом, декларативное программирование идёт от человека к машине, тогда как императивное — от машины к человеку. Как следствие, декларативные программы не используют понятия состояния, то есть не содержат переменных и операторов присваивания (см. также ссылочная прозрачность).

Matlab, Pascal

ООП