Преимущества и использование языка функционального программирования [дубликат]

11
задан Community 23 May 2017 в 12:00
поделиться

3 ответа

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

Одна из действительно хороших особенностей функциональных языков заключается в том, что их структура позволяет применять вывод типа Хиндли-Милнера. Это система типов, используемая в SML, OCaml и ряде других функциональных языков. Кажется, что это действительно снижает количество ошибок и способно сэкономить вам много времени и энергии, обнаруживая ошибки заранее в виде ошибок компиляции.

Аргумент автоматического распараллеливания используется слишком часто, особенно потому, что обещание просто не выполнено. Я написал явно параллельный код на функциональных языках, и это лучше, IMHO, чем делать что-то подобное на Java или тому подобном.

По крайней мере, анекдотично, я не был бы первым, кто утверждал, что изучение функционального языка делает из вас лучшего императивного программиста! Дискомфорт, который вы испытали, когда ваш «императивный» мыслительный процесс был прерван при использовании OCaml, на самом деле действительно хороший процесс. Это заставляет вас сомневаться в предположениях и мешает вам писать код определенным образом только потому, что вы всегда так делали.

Что касается использования в реальном мире, вы можете ознакомиться с материалами семинаров Коммерческие пользователи функционального программирования .Есть также несколько очень крупных проектов, написанных на различных функциональных языках, хотя большинство из них, вероятно, представляют ограниченный интерес за пределами довольно небольших сообществ. Средства доказательства теорем Coq и Isabelle написаны на языках Ocaml и SML соответственно.

Что бы вы ни делали, я буду настойчивым. Я долго бился головой о ML, прежде чем все наконец щелкнуло. Сейчас я не уверен, что даже помню, как работают Java или C, потому что они мне давно не нужны ... Я просто использую ML!

14
ответ дан 3 December 2019 в 04:30
поделиться
  1. Когда кому-то, наконец, удается заставить замолчать свой императивно (неправильно) тренированный ум, FP становится проще и веселее, чем IP.

  2. FP имеет тенденцию быть более безопасным и менее подверженным ошибкам из-за его декларативного характера.

  3. Мне нравится думать, что распараллеливание императивного кода удваивает его сложность (попробуйте себя с нетривиальным параллельным приложением). IMO, FP значительно сокращает разрыв, во многих случаях из-за отсутствия синхронизации.

  4. Цитируя Джана, изучение FP сделает вас более мудрым императивным программистом ...

7
ответ дан 3 December 2019 в 04:30
поделиться

Вы можете прочитать http://www.paulgraham.com/avg.html

3
ответ дан 3 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: