- Понятия
- Наука
- Социум
- Эксперименты
-
Разное
-
О Портале
Все, что связано с компьютерными программами, интерфейсом и программированием
Императивное vs Функциональное программирование
Профессор » 01.10.2022 12:22
Императивное программирование (от англ. imperative — приказ) — это парадигма программирования, которая описывает процесс вычисления в виде инструкций, изменяющих состояние данных.
Программа — набор инструкций изменяющих состояние (данные). Мы говорим КАК выполнить задачу, описывает алгоритм, даем набор последовательных инструкций.
________________________
Для этой парадигмы характерно использование:
- именованных переменных;
- оператора присваивания;
- составных выражений;
- подпрограмм;
- циклов.
К подвидам императивного программирования относят Процедурное и Объектно-ориентированное программирование (ООП).
Декларативное программирование — это парадигма программирования, в которой задается спецификация решения задачи, то есть описывается, ЧТО представляет собой проблема и ожидаемый результат. Декларативные программы не используют состояния, то есть не содержат переменных и операторов присваивания. Программа — спецификация описывающая решение задачи.
К подвидам декларативного программирования относят Функциональное и Логическое программирование.
_________________________
Функциональное программирование — программирование значениями (не используются присваивания). Предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния.
Для этой парадигмы характерно:
- функции первого класса (можно передавать как аргументы и возвращать из других функций);
- функции высшего порядка (принимают на вход другие функции);
- рекурсии;
-состояние никогда не меняется;
-не используется присваивание.
Функциональное программирование — это программирование значениями. Функциональный подход к программированию отличается от императивного отсутствием внутренних состояний. В функциональном программировании отсутствует присваивание как способ изменения значения.
Вы можете видеть в функциональных языках использование знака =, но в функциональных языках он оно называется “связывание“. Мы не изменяем никаких переменных, мы просто даем имя (алиас) какому-то выражению и потом обращаемся к этому выражению через это имя.
Основой для функционального программирования являются Лямбда-исчисления, многие функциональные языки можно рассматривать как «надстройку» над ними.
Лямбда-функции — это функции, у которой фактически нет имени. Лямда-выражения — анонимные функции. Понятие пришло из математики, где использовалась специальная форма записи функций, ликвидирующая неоднозначности функция/значение функции и пр.
Примеры языков
Императивные: Ruby, PHP, Python, C++, C#, Java, JavaScript, Swift и т.д.
Функциональные: Haksell, Erlang
Логические: Prolog
Мультипарадигменные: Clojure, Ocaml, Scale, F#
Функционально программировать можно практически в любом языке программирования.
Все функциональные языки имеют в своем арсенале инструменты для императивного программирования, потому что абсолютно декларативный язык не имел бы смысла (какой смысл от языка в котором вы не можете получившееся вычисление записать в файл/базу/отправить по сети/или вывести на экран).
Выводы
Еесли кратко: императивная — манипулирование состоянием; декларативная парадигма — отсутствие состояния.
В общем и целом, декларативное программирование идет от человека к машине, тогда как императивное — от машины к человеку.
http://sauron.org.ua/post/1288Поделиться:
Re: Императивное vs Функциональное программирование
Director » 04.10.2022 09:38
Компьютерное программирование в сфере АйТи - это наилучшая аналогия для понимания того, как устроен Дух живого организма, а также как устроена наша Душа.
Давайте попробуем понять - есть ли в программах Духа что-то подобное Императивному и/или Фунциональному программированию.
Лично я, не будучи специалистом в сфере АйТи-программирования, толком не понял разницы между этими двумя парадигмами.Профессор писал(а): ↑01.10.2022 12:22Парадигма — это стиль написания исходного кода компьютерной программы. Существует несколько парадигм.
Императивное программирование (от англ. imperative — приказ) — это парадигма программирования, которая описывает процесс вычисления в виде инструкций, изменяющих состояние данных.
Программа — набор инструкций изменяющих состояние (данные). Мы говорим КАК выполнить задачу, описывает алгоритм, даем набор последовательных инструкций.
Декларативное программирование — это парадигма программирования, в которой задается спецификация решения задачи, то есть описывается, ЧТО представляет собой проблема и ожидаемый результат.
Программа — спецификация описывающая решение задачи. Декларативные программы не используют состояния, то есть не содержат переменных и операторов присваивания.
К подвидам декларативного программирования относят Функциональное и Логическое программирование.
Если кратко: императивная — манипулирование состоянием; декларативная парадигма — отсутствие состояния.
В общем и целом, декларативное программирование идет от человека к машине, тогда как императивное — от машины к человеку.
Интересно отметить, что все слова мне известны (спецификация, состояние, задача, данные, оператор присваивания, пр.), но понятная образная модель не получается. Не хватает практических навыков в этой сфере деятельности.
Я лишь понял, что в АйТи-программировании используются оба подхода: в каких-то случаях первый подход, а в каких-то - второй.
Вполне вероятно, что в живой природе также используются оба подхода.
Присмотримся к подвиду декларативного программирования - к функциональному программированию
Судя по этим сведениям, аналогия функционального программирования пожалуй наиболее близка к способу программирования в живом организме - то есть к способу, которым развивается Дух.Функциональное программирование — программирование значениями (не используются присваивания). Предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния.
...отличается от императивного отсутствием внутренних состояний...
Вы можете видеть в функциональных языках использование знака =, но в функциональных языках он оно называется “связывание“. Мы не изменяем никаких переменных, мы просто даем имя (алиас) какому-то выражению и потом обращаемся к этому выражению через это имя...
Функционально программировать можно практически в любом языке программирования.
Все функциональные языки имеют в своем арсенале инструменты для императивного программирования, потому что абсолютно декларативный язык не имел бы смысла (какой смысл от языка в котором вы не можете получившееся вычисление записать в файл/базу/отправить по сети/или вывести на экран).
Перейти- Понятия
- ↳ Концепция
- ↳ Язык и термины
- ↳ Библиотека
- Наука
- ↳ Физика
- ↳ Вихри
- ↳ Химия
- ↳ Биология
- ↳ Происхождение жизни
- ↳ Медицина
- ↳ Информатика
- ↳ Приборы связи с душами
- ↳ Прочие
- Социум
- ↳ Смысл Жизни
- ↳ Мировоззрения
- ↳ События
- ↳ Коронавирус
- ↳ Психика
- ↳ Религия
- ↳ История
- ↳ Эзотерика
- Эксперименты
- ↳ Ищем исполнителей
- Разное
- О Портале