Функциональное программирование: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) (Новая страница: «{{Понятие |Description=Функциона́льное программи́рование — парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном прог...») |
Patarakin (обсуждение | вклад) |
||
Строка 2: | Строка 2: | ||
|Description=Функциона́льное программи́рование — парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании). | |Description=Функциона́льное программи́рование — парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании). | ||
|Field_of_knowledge=Информатика | |Field_of_knowledge=Информатика | ||
|similar_concepts=Лямбда-исчисление, Рекурсия | |similar_concepts=Лямбда-исчисление, Рекурсия, Хвостовая рекурсия | ||
|Environment=Lisp, APL, Scheme, Snap!, Wolfram | |Environment=Lisp, APL, Scheme, Snap!, Wolfram | ||
}} | }} |
Версия 15:54, 12 января 2023
Описание | Функциона́льное программи́рование — парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании). |
---|---|
Область знаний | Информатика |
Авторы | |
Поясняющее видео | |
Близкие понятия | Лямбда-исчисление, Рекурсия, Хвостовая рекурсия |
Среды и средства для освоения понятия | Lisp, APL, Scheme, Snap!, Wolfram |
В функциональных языках цикл обычно реализуется в виде рекурсии. Строго говоря, в функциональной парадигме программирования нет такого понятия, как цикл. Рекурсивные функции вызывают сами себя, позволяя операции выполняться снова и снова. Для использования рекурсии может потребоваться большой стек, но этого можно избежать в случае хвостовой рекурсии. Хвостовая рекурсия может быть распознана и оптимизирована компилятором в код, получаемый после компиляции аналогичной итерации в императивном языке программирования.
Стандарты языка Scheme требуют распознавать и оптимизировать хвостовую рекурсию. Оптимизировать хвостовую рекурсию можно путём преобразования программы в стиле использования продолжений при её компиляции, как один из способов.