Мне действительно трудно понять разницу между процедурной и функциональной парадигмами программирования.
Вот первые два абзаца из статьи Википедии о функциональном программировании:
В информатике функциональные программирование - это парадигма программирования который рассматривает вычисления как оценка математических функций и избегает состояния и изменяемых данных. Это подчеркивает применение функций, в отличие от императивный стиль программирования, который подчеркивает изменения в состоянии. Функциональное программирование имеет свои корни в лямбда-исчислении, формальная система разработанный в 1930-х годах для изучения определение функции, функция приложения и рекурсии. Многие функциональные языки программирования могут следует рассматривать в качестве лямбда-исчисления.
На практике разница между математическая функция и понятие "функции", используемой в императивном программирование является обязательным функции могут иметь побочные эффекты, изменение значения состояния программы. Из-за этого им не хватает ссылочных прозрачность, то есть тот же язык выражение может привести к значения в разное время в зависимости от состояние исполняющей программы. И наоборот, в функциональном коде выходное значение функции зависит от только на входные аргументы к функции, поэтому вызов функции
f
дважды с тем же значением для аргументx
приведет к тому же результатf(x)
в оба раза. уничтожение побочные эффекты могут сделать это намного проще понимать и прогнозировать поведение программы, которая является одним из ключевых мотивации для разработки функциональное программирование.
В пункте 2, где говорится
И наоборот, в функциональном коде выходное значение функции зависит только от аргументов, которые вводятся в функцию, поэтому вызов функции
f
дважды с тем же значением для аргументаx
приведет к такому же результатуf(x)
оба раза.
Разве это не тот самый точный случай для процедурного программирования?
Что нужно искать в процедурных и функциональных, которые выделяются?