Ответ 1
JavaScript поддерживает функции первого класса. См. Используйте методы функционального программирования для написания элегантного JavaScript.
Я смотрю, чтобы понять концепции функционального программирования.
Я много лет использовал Javascript для написания клиентских сценариев в веб-приложениях, и помимо использования прототипов это было простое манипулирование DOM, проверка ввода и т.д.
В последнее время я часто читает, что Javascript является одним из языков, поддерживающих функциональное программирование.
Благодаря моему знакомству и опыту работы с Javascript, я предпочитаю использовать его для изучения функционального программирования. Я ожидаю, что смогу больше сосредоточиться на основных функциональных концепциях и не увязнуть или отвлечься от совершенно нового синтаксиса.
Итак, в целом, является ли Javascript хорошим выбором для изучения концепций функционального программирования? Какие возможности в Javascript актуальны/поддерживают функциональное программирование?
JavaScript поддерживает функции первого класса. См. Используйте методы функционального программирования для написания элегантного JavaScript.
Более высокий порядок Javascript - отличный способ познакомиться с функциональными аспектами javascript. Это также относительно короткое чтение, если вы хотите, чтобы ваши ноги были мокрыми без погружения в большую книгу.
Хотя javascript поддерживает FP в некоторой степени, он не поощряет его напрямую. Для этого существуют проекты, такие как Oliver Steele Functional, чтобы заполнить пробелы. Поэтому я бы не рекомендовал его для изучения FP. Проверьте F # вместо этого.
Я бы сказал, что, хотя вы можете быстро понять некоторые функциональные концепции программирования с помощью JavaScript, использование JavaScript, как функциональный язык программирования, не является обычной практикой. По крайней мере, не совсем очевидно. Большинство людей не публикуют обучающие материалы, которые указывают, как выполнять функциональное программирование с помощью JavaScript, - отметил один марксидад, на самом деле довольно приличный пример, но вы не найдете этого много. Функциональные аспекты не так очевидны, как когда люди используют закрытие в JavaScript, но не знают, что они это делают.
Идея о том, что вы передадите две функции через аргументы третьей функции, а затем иметь возвращаемое значение, будет некоторым исполнением, связанным с первыми двумя функциями, - это передовая техника, которая почти всегда появляется только в ядре полномасштабного библиотеки, такие как jQuery. Самопроизводство анонимных функций и т.п. Набирало силу, но по-прежнему не используется последовательно. Большинство учебников часто фокусируются на возможностях JavaScript OO, например, как создавать свойства и методы, область действия, контроль доступа, а также как использовать свойство prototype конструкторов. Честно говоря, если функциональное программирование - это то, что вы хотите, тогда я бы выбрал язык, известный строго для этой возможности.
Я не помню, кто это сказал, но javascript называется "Схема с синтаксисом Algol". Итак, для обучения Scheme/ Lisp, Javascript - неплохое начало. Обратите внимание, что функциональные языки, такие как Lisp, сильно отличаются от чистых функциональных языков, таких как Haskell.
Помимо "функций первого класса" (означает, что функции - это значения, которые могут быть назначены переменным), лексическая область также является неотъемлемой частью того, что делает функциональный язык.
Более высокий порядок Javascript и Маленький Javascripter был уже упоминалось. Они оба отличные тексты. Кроме того, Программирование более высокого порядка в Javascript может быть проще начать.
Я бы рекомендовал прочитать The Little Schemer, который является довольно тонкой книгой о рекурсии и является хорошим введением в функциональный стиль. Хотя он сфокусирован на Схеме, его можно легко применить к JavaScript, см. http://javascript.crockford.com/little.html. Я нашел его действительно полезным в моей разработке javascript, хотя он становится довольно сложным в конце.
Javascript - это язык с несколькими парадигмами. Если ваша цель - изучить концепции функционального языка, попробуйте начать с чистого функционального языка, например OCaml или Haskell.
Кроме того, Гладкий JavaScript: глава функционального программирования.