13

Я хотел бы использовать «язык, основанный на javascript», чтобы узнать и использовать некоторые из обычных веб-технологий сегодня, например, node.js, jquery и т. Д.Функциональный javascript?

После долгого знакомства с функциональными концепциями и языками , в основном F #, я смотрю, есть ли что-то подобное в мире Javascript. До сих пор, что я нашел и рассмотрен вопрос:

  • Javascript функциональный способ: использовать функциональные части JavaScript, как широко, как я могу, используя Underscore или других функциональных библиотек. Плюсами к этому подходу было бы изучение «родного языка». Недостатки для меня в том, что мне действительно не нравится его синтаксис и не очень естественно программировать «функциональный первый» в Javascript.
  • CoffeeScript + Подчеркнутый: Я видел несколько примеров, используя CoffeScript + Underscore, которые кажутся привлекательными. Например: http://autotelicum.github.com/Smooth-CoffeeScript/SmoothCoffeeScript.html#toc-Chapter-7
    Плюсы к этому будут заключаться в том, что CoffeScript распространяется дико и, по-видимому, является стандартом deacto для языков, предназначенных для использования с виртуальной машиной javascript. Этот синтаксис кажется мне более естественным, и я мог бы легче программировать некоторые функции.
    Противники будут отдаляться от самого javascript (что на самом деле не слишком много для меня проблемы) и быть в середине не совсем функционального.
  • Livescript: Полученный из Coco (который сам был получен из CoffeScript), он имеет более привлекательный синтаксис для меня (у него даже есть мой любимый конвейер '|>' из F #). Плюсы в том, что это самый функциональный подход. Недостатки заключались бы в том, что он не очень распространен (я сделал поиск в SO, и в этом нет НИЧЕГО), и все это подразумевает (не так много сообщества, поддержки, учебников и т. Д.).

Подумав некоторое время на все это, у меня нет никакой реальной ВЫВОД так что было бы здорово, если бы люди привыкли работать с JavaScript, CoffeeScript и т.д. может направить меня на реальное значение этой проблемы.

Только в случае, если ... Я действительно не рассматривал возможность использования Pit (и так продолжать использовать F #), потому что, хотя он компилируется в JavaScript, я думаю, что это не интегрируется с любой библиотекой JavaScript, как выше и Безразлично 'следовать одному и тому же документообороту или интегрироваться с экосистемой javascript, а также перечисленными опциями.

Большое спасибо!

+5

Интересный, но не вопрос, хорошо подходящий для SO. –

+1

Как и pst сказал: Наверное, не вопрос, хорошо подходящий для SO. Но в любом случае: я бы сказал, что если вы хотите изучать JavaScript, изучите _JavaScript_, включая все прототипы/ООП/нефункциональные вещи - не пытайтесь превратить JS в то, что вы уже знаете, или игнорируете нефункциональные функции перед вами даже начинать. Я бы посоветовал вам начать там, по крайней мере - иначе вы будете кодировать против слоев абстракции и перевода. Вы можете понять это позже. Кроме того, начиная с нуля, вы действительно учитесь. – Flambino

+0

@pst, я не опубликовал ранее из-за этого ... может быть, лучше подходит для программистов.stackexchange? Если так, я надеюсь, что кто-то это закроет, и я попробую. –

ответ

2

Вы в основном есть два варианта:

  • Используйте JS-производный язык как CoffeeScript
  • Используйте функциональный язык для JS компилятором

Для варианта 1, ну, это, вероятно, ваш лучший вариант для взаимодействия с другим кодом JS. Это также ваш лучший вариант, если вы действительно хотите работать с другими разработчиками JS, которые, возможно, не знакомы с <insert functional language>.

Если вы на самом деле не очень хорошо знакомы с JS, я бы предложил вариант 1. Может быть сложно понять, как все работает, особенно если вы сталкиваетесь с ошибками в выбранном вами языке/инструменте, если вы не понимаете основы JS.

Вариант 2 может быть более интересным, поскольку вы, вероятно, получите преимущества своего любимого языка в JS. В дополнение к проекту Pit, о котором вы упоминаете, есть некоторые попытки сделать компиляцию Haskell в JS, которая также может быть вариантом.

Недостатки варианта 2, вероятно, являются тем фактом, что проекты не являются (afaik) очень продвинутыми и по сей день, и что они могут скомпилироваться в не очень эффективный JS-код.

Наконец, был язык языка в стиле Хаскел, который был основан на JS, подобно CoffeeScript, но, похоже, я забыл его название. Это может стоить того, если кто-то может понять, что он назвал: D

+0

Не знаю, если это то, о чем вы говорите, но [Clojure] (http://clojure.org/) в основном является функциональным языком и компилируется в javascript. – obmarg

+0

@obmarg: в основном, Clojure компилируется в байт-код Java Virtual Machine. Java (и JVM) не имеют ничего общего с JavaScript, кроме сходства имени, выбранного для синергии маркетинга. (Хотя люди написали Javascript-переводчики на Java, в частности Rhino). ** EDIT **: (спасибо, не я). Однако есть порт Clojure под названием ClojureScript, который теперь компилируется на JavaScript; не уверен, насколько он созрел. –

+0

@MarkReed: Я собирался оставить тот же комментарий, но затем я прочитал это на домашней странице Clojure * «Clojure - это динамический язык программирования, предназначенный для виртуальной машины Java (и CLR и JavaScript)». * Похоже, что есть Проект ClojureScript. –

2

А как насчет только библиотеки функций «ФУНКЦИОНАЛЬНЫЕ», + coffeescript + подчеркивание;)!

http://osteele.com/sources/javascript/functional/

+0

Это была моя первая мысль после предварительного поиска по этой теме, и эта библиотека казалась достаточно хорошей. Эта комбинация, похоже, получает бит обоих «миров»: более функциональный (хотя и не такой, какой я хотел бы), и огромная пользовательская база/сообщество. Я почти решил пойти по этому пути, пока не увидел проект Livescript. Если бы у него было больше людей, которые использовали его, чтобы он стал более популярным (т. Е. «Гарантируя» будущее проекта и больше ресурсов в целом), я бы выбрал Livescript. Поскольку я никогда не касался javascript, я не могу представить все возможные последствия моего решения. –

10

Я, наверное, немного смещена (я являюсь создателем LiveScript), но вы должны попробовать LiveScript! В настоящее время я работаю над стандартной библиотекой, которая будет интегрироваться лучше, чем подчеркивание. Как вы говорите, их не так много, но сообщество должно начинать где-то! Как вы указали, кажется, что лучший вариант при прочих равных условиях - так что погрузитесь и попробуйте!

+0

Привет @gkz! Замечательно слышать от вас. Моя основная забота заключается в том, что вы устали от ее разработки, у вас нет времени для продолжения и т. Д. У меня действительно нет знаний прямо сейчас об общем функциональном программировании и javascript, чтобы иметь возможность вносить какие-либо большие вещи. На стороне поддержки у вас есть какие-то планы? Может быть, по крайней мере, здесь есть тег 'livescript' здесь? Я пытался создать его, но не имел необходимого количества сообщений. Если вы спросите, являетесь создателем LiveScript, я думаю, что никаких проблем не возникнет. Сейчас я склоняюсь к CS + Functional/Underscore или LiveScript. Hmmm ... –

+0

Вещь с LS заключается в том, что в худшем случае, когда она становится незатронутой, я всегда могу использовать переведенный код javascript и продолжать проекты непосредственно в JS или даже использовать любой из JavaScript для переводчиков CoffeeScript, если я хочу продолжить с CoffeeScript. Я бы потерял время, но не код, что всегда хорошо. Вы думали о включении любой из параллельных методов F #? Мне очень нравится, что они делают в этом отделе, хотя в этом случае существуют ограничения javascript-виртуальных машин ... И последнее, но не менее важное: значения неизменяемы по умолчанию в LS? Thx! –

+1

Я буду проверять [tag: livescript] почти каждый день и отвечать на любые вопросы. Есть и другие участники LiveScript, в том числе человек, чей проект LiveScript разветвлен. Если по какой-то причине я не смогу продолжить, я передам им права администратора. – gkz

Смежные вопросы