2008-10-14 7 views
12

Функциональное программирование, по-видимому, является парадигмой в информатике, которая имеет все больше и больше эха.К какой проблеме подходит функциональное программирование?

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

спасибо.

+1

Решая много проблем подзадачи суб-суб-проблемы ... ;) – willasaywhat 2008-10-17 18:51:52

ответ

7

Функциональное программирование лучше всего подходит для большинства проблем, включая все, что вы обычно используете для объектно-ориентированного программирования, за исключением проблем, требующих хранения большого количества состояний или других побочных эффектов. Помимо этого, FP обрабатывает сложные проблемы гораздо более грациозно, чем ООП, поскольку многие из них исходят из математического фона (начиная с исчисления лямбда). У вас гораздо больше гибкости, чем абстракция и композиция. Объектно-ориентированная программа с большим количеством шаблонов проектирования может быть реорганизована с использованием более функциональных конструкций, которые позволят вам делать то же самое без шаблонных структур, которые создают шаблоны, которые вы пишете. Помимо математики и синтаксического анализа, FP также широко используется в искусственном интеллекте (в частности, Lisp).

6

Функциональное программирование отлично подходит для создания программ, которые могут проходить параллельное выполнение, поскольку они препятствуют использованию глобальных состояний.

4

Функциональные языки используются в математике и статистике.

2

Я согласен с Galwegian -

«Функциональные языки используются много в математике и статистике.»

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

3

Для дальнейшего параллельного выполнения функциональные языки, как правило, хороши для графического моделирования, например, для трассировки лучей.

2

Практически все, что имеет много математики.

1

Если вы пишете шаблоны на C++, вы работаете на чистом функциональном языке.

2

Например, функциональный язык ML хорош для реализации компиляторов и других приложений, манипулируя деревьев.

1

XSLT является примером функционального языка программирования для выполнения преобразований данных или документов, представленных как XML - по общему признанию, очень многословный и очень ограниченный. Если я правильно помню, XQuery также является чисто функциональным. Трюки заключаются в том, что без какой-либо концепции глобального состояния они находятся в главной программе для предоставления данных и потребления их результатов. Это помогает сохранить XSLT-программы (таблицы стилей) чистыми и многоразовыми, но вам нужно добавить какую-то (императивную) структуру, чтобы использовать их как часть системы обработки общего назначения.

1

Основные таблицы можно рассматривать как функциональные программы ... :)

1

структуры данных.Пример: Сравните императивную реализацию кучи Fibonacci (часто используемой в качестве очереди приоритетов) с функциональной реализацией. Часто функциональный код будет составлять менее 100 строк кода, тогда как императивная реализация может быть гораздо больше строк кода.