Javascript заслуживает того, чтобы его называли функциональным языком программирования только потому, что функции являются объектами первого класса, существуют замыкания и функции более высокого порядка? Я думаю, что главное, чего ему не хватает, - это Pure Functions, и он не «чувствует» себя как другие функциональные языки, такие как lisp (хотя на самом деле это не веская причина, чтобы не быть функциональным языком ...)
javascript
functional-programming
terminology
hvgotcodes
источник
источник
Ответы:
Повторяя мой собственный ответ на аналогичный вопрос,
источник
Я бы сказал, что это мультипарадигмальный язык.
РЕДАКТИРОВАТЬ: это мульти-парадигма и включает в себя функциональные конструкции.
источник
если вы растянете и перевернете термин «функциональное программирование» до точки философских дискуссий, этот вопрос может снова оказаться открытым. Тем не менее, вы попадаете на уровень полезных вопросов, таких как «Является ли C ++ действительно языком программирования»?
Ответ на ваш вопрос на более повседневном уровне - «нет» .
Функциональное программирование означает, что программа концептуализируется как оценка функции, а не как поток управления. Код представляет собой описание функций и не имеет внутренней концепции потока управления.
JavaScript имеет поток управления и концептуализируется как императивный язык. С точки зрения дизайна это явно не функциональный язык.
источник
Термин «язык функционального программирования» настолько перегружен в наши дни, что почти бесполезен. Есть два доминирующих значения:
Укажите свое значение, и тогда вопрос ответит.
источник
Я не думаю, что есть конкретное определение функционального программирования, однако многие вещи, которые люди считают «функциональным программированием», можно сделать с помощью JavaScript. Вот хороший краткий пример в этой статье.
источник
Для меня Javascript является и императивным языком, и функциональным языком, и вы можете использовать его в любом случае и даже ( например, в обоих случаях). Или вы можете использовать одну парадигму и никогда не трогать другую. Тебе решать. Я, как и вы, не думаю, что Javascript следует называть функциональным языком, потому что он позволяет вам входить и выходить из парадигмы функционального программирования. Возможно, если бы у него была какая-то прагма, ограничивающая вас использованием только парадигм функционального программирования, то это было бы полезно, я думаю. Но, в заключение, я говорю, что это скорее императивный / процедурный язык с некоторыми функциональными возможностями программирования.
источник
Я склонен не думать о языках программирования как об одной конкретной парадигме, а о том, что они поддаются определенным парадигмам. Однако только то, что они поддаются определенной парадигме, не означает, что вы должны использовать эту парадигму. Вполне возможно писать объектно-ориентированные программы на C и писать императивные программы на ML. Не использовать определенную парадигму для решения проблемы, потому что язык не предназначен для этого, просто искусственно ограничивает себя (конечно, вы все равно должны учитывать ограничения языка при принятии решения, будет ли конкретное решение хорошим решением).
источник
Ну, я бы не сказал, что это функциональное программирование, но тогда я бы сказал, что оно является объектно-ориентированным, и только сегодня один из друзей сказал, что он тоже не поместит его на эту полку.
Так что, хотя я бы не сказал, что это так, я думаю, есть место для мнений. У него есть классические особенности функционального программирования, у него нет других.
источник
Javascript это в точку. Это действительно зависит от того, как вы будете программировать. Если бы я кодировал OO, разве это не было бы OO? Так что, если вы просто кодируете вещи «функционально», это будет функционально. Я полагаю, что это мультипарадигмальный язык, поэтому назвать его одной вещью не совсем точно.
источник
@petraszd Я немного переписал твой код, чтобы получить «новый» для оператора:
Но я знаю, что этот способ имеет недостатки для больших циклов ...
Связанный вопрос об оптимизации хвостовой рекурсии в JS
PS Опубликовано здесь, потому что есть проблемы с форматированием кода при публикации в качестве комментария
источник
В Javascript вы можете сделать что-то вроде этого!
Я сделал страницу GitHub для демонстрации этой концепции, и вы можете клонировать / просмотреть мою реализацию
источник
Как мы знаем, функциональный язык программирования не позволяет изменять или изменять элементы (состояние) функций, но в javascript допускается в этом смысле то, что он не является функциональным языком программирования, хотя он рассматривает функцию как граждан первого класса.
источник
Что я действительно ненавижу в javascript (если вы пытаетесь рассматривать его как язык FP), так это:
Вы должны понимать среду стека JS (я не знаю, если это правильный термин), чтобы понять такое поведение.
В схеме, например, Вы просто не можете произвести такую вещь (хорошо, хорошо - с помощью ссылок на базовые языки Вы можете сделать это):
источник