Javascript как функциональный язык - PullRequest
61 голосов
/ 28 сентября 2008

Я хочу разобраться с концепциями функционального программирования.

Я уже много лет использую Javascript для написания сценариев на стороне клиента в веб-приложениях, и кроме использования прототипов все это было простым манипулированием DOM, проверкой ввода и т. Д.

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

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

Итак, в целом, является ли Javascript хорошим выбором для изучения концепций функционального программирования? Какие возможности в Javascript актуальны / поддерживают функциональное программирование?

Ответы [ 8 ]

43 голосов
/ 28 сентября 2008
9 голосов
/ 29 сентября 2008

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

6 голосов
/ 29 сентября 2008

Я не помню, кто это сказал, но javascript был назван "Схема с синтаксисом Алгола". Так что для изучения Scheme / Lisp, Javascript неплохое начало. Обратите внимание, что функциональные языки, такие как Lisp, сильно отличаются от чисто функциональных языков, таких как Haskell.

Помимо «первоклассных функций» (имеется в виду, что функции являются значениями, которые можно назначать переменным), лексическая область видимости также является неотъемлемой частью того, что делает функциональный язык.

Javascript высшего порядка и Маленький Javascriptpter уже упоминался. Они оба отличные тексты. Кроме того, Программирование высшего порядка в Javascript может быть более легким началом.

6 голосов
/ 28 сентября 2008

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

Идея о том, что вы передадите две функции в качестве аргументов третьей функции, а затем получите возвращаемое значение в виде некоторого выполнения, связанного с первыми двумя функциями, является продвинутой техникой, которая почти всегда появляется только в ядре полномасштабного библиотеки, такие как jQuery. Самоисполняющиеся анонимные функции и тому подобное получили распространение, но все еще не используются последовательно. Большинство учебных пособий часто сосредотачиваются вместо этого на ОО-возможностях JavaScript, таких как, как создавать свойства и методы, область видимости, контроль доступа, а также как использовать свойство prototype конструкторов. Честно говоря, если вам нужно функциональное программирование, я бы выбрал язык, строго известный этой возможностью.

6 голосов
/ 28 сентября 2008

Хотя javascript в некоторой степени поддерживает FP, он не поощряет это напрямую. Вот почему существуют такие проекты, как Функционал Оливера Стила , чтобы заполнить пробелы. Поэтому я бы не рекомендовал его для изучения ФП. Проверьте F # вместо.

3 голосов
/ 29 сентября 2008

Я бы порекомендовал прочитать Маленькую интригу , которая является довольно тонкой книгой о рекурсии и хорошим введением в функциональный стиль. Хотя он сфокусирован на Scheme, его можно легко применить к JavaScript, см. http://javascript.crockford.com/little.html.. Мне показалось, что он действительно полезен в моей разработке javascript, хотя к концу это довольно сложно.

2 голосов
/ 29 сентября 2008
2 голосов
/ 28 сентября 2008

Javascript - это мультипарадигмальный язык. Если ваша цель - изучить концепции функционального языка, попробуйте начать с чистого функционального языка, например OCaml или Haskell .

...