2022-06-24 07:50:43
Я считаю, что называть callback признаком функционального программирования - неверно. Но это мнение очень распространенно, мол если есть callback, то это функционально. На самом деле нет и вот почему:
1. Callback можно было использовать еще в Си, там это делалось через передачу указателя на функцию, которую нужно выполнить. Ничего функционального в этом нет, это все та же подпрограмма, которая вызвана косвенно, а не напрямую.
2. Чего не было в Си, так это анонимных функций, т.е. подпрограмм без имени, которые еще называют лямбдами, такие вещи появились в более поздних языках, но сказать что лямбда - это функциональное программирование тоже нельзя, так как функциональное программирование - это парадигма в рамках которой функции рассматриваются в их математическом смысле, т.е. декларативно. Функция в функциональном программировании - это не подпрограмма.
3. В теории программирования есть понятие функция первого порядка, это значит что функция может быть передана как аргумент функции. Этот принцип используется и в ФП, и в структурном программировании, и в ООП. Но вот "чем" является функция определяется в каждой парадигме по разному. Поэтому сказать, что если у нас есть функция и мы можем ее использовать как представителя первого класса, то это ФП - неверно. Обязательно еще нужно рассмотреть как в ЯП реализована работа с функциями, если это декларативный подход, то да, речь о ФП, но если это императивная процедура, то ни о каком ФП речи не идет.
1.7K viewsedited 04:50