Сила функционального программирования?
Функциональное программирование быстро растет. Много советов "Как подготовиться к будущему", которые я прочитал, содержит "Изучение функционального языка программирования".
Я новичок в функциональном программировании. Какова его истинная сила? Является ли он заменой ООП? Какие области программирования для функционального программирования наиболее эффективны? Какой язык функционального программирования подходит для изучения?
Спасибо.
Ответы
Ответ 1
Функциональное программирование очень хорошо подходит для параллельной обработки, поскольку в идеале глобальное состояние не является проблемой. Традиционно функциональное программирование было в основном для людей с искусственным интеллектом, но это действительно хорошо для любого огромного приложения, которое вы хотите создать и запустить на ферме машин.
Он не заменяет ООП, и я бы предложил изучить LISP или Haskell, если вы заинтересованы.
Ответ 2
Функциональное программирование и объектно-ориентированное программирование ортогональны; вы можете использовать обе вещи вместе на некоторых языках, например ruby.
например: у вас есть массив объектов сотрудников, и вы хотите получить список имен сотрудников и зарплаты для сотрудников, зарабатывающих более 50 тыс.
employees.select { |employee| employee.salary > 50000 }.map { |employee| [employee.name, employee.salary] }
will give you an array like
[ ['John', 52000], ['Peter', 60000]]
Ответ 3
Функциональное программирование в основном мощное, поскольку оно предлагает сжатые способы написания алгоритмов, более естественных для людей и более простых для компиляторов. Это в значительной степени достигается путем абстрагирования процессов в общие функции более высокого порядка над функциями и обеспечения полезного синтаксиса для этого с готовностью и быстро.
Поскольку результаты часто проще и свободны от трудно управляемых побочных эффектов, они часто более читабельны и менее ошибочны, чем более процедурные альтернативы, и их также часто легче распараллеливать (явно или автоматически), что источник многих недавних интересов.
Ответ 4
Я только что присутствовал на лекции по этой теме пару дней назад, и выясняется, что Haskell - это путь, если вы решите пойти по этой дороге. F # также является сильным выбором. Но я просто не вижу, как функциональное программирование что-то заменит. Это будет отличное дополнение к "инструментам" наших хакеров:)
Ответ 5
Хм. Я не думаю, что функциональное программирование заменяет ООП. Кроме того, функциональное программирование не нова, оно возвращается к 70 и более ранним.
В настоящее время хорошо знать разные (программирующие) языки. Итак, Java, C/++/#, по крайней мере, знать. Вам не обязательно становиться экспертом... но знайте их. Эти языки не являются просто функциональными языками программирования. Для них см. Erlang или Haskell. Посмотрите на них и поиграйте, чтобы узнать, что они могут сделать для вас...
Cheers, T.
Ответ 6
В дополнение к преимуществам параллельной обработки, о которых говорит Стюарт Б, очень мощная функция функциональных языков - это способность рассматривать функции как объекты первого класса. Это означает, что код можно построить "на лету" и пройти. Это особенно удобно для некоторых типов алгоритмов (в частности, эволюционных алгоритмов), что, вероятно, является настолько популярным в информатике, но оно также имеет практические последствия. Например, С# 3.0 берет эту функцию, чтобы реализовать множество функций LINQ (например, динамически создавать код для обработки результатов запроса).
Ответ 7
Очень просто написать модульные тесты для функционально-программирующих фрагментов, потому что побочных эффектов нет.