Сила функционального программирования?

Функциональное программирование быстро растет. Много советов "Как подготовиться к будущему", которые я прочитал, содержит "Изучение функционального языка программирования".

Я новичок в функциональном программировании. Какова его истинная сила? Является ли он заменой ООП? Какие области программирования для функционального программирования наиболее эффективны? Какой язык функционального программирования подходит для изучения?

Спасибо.

Ответ 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

Очень просто написать модульные тесты для функционально-программирующих фрагментов, потому что побочных эффектов нет.