2012-05-24 14 views
13

node.js、jqueryなどの今日の通常のウェブテクノロジーを学び、使用するために、 "javascript由来言語"を使用したいと思います。機能的なjavascript?

機能概念と言語、主にF#、Javascriptの世界に似たようなものがあるかどうかを調べています。これまでのところ、私が発見し、考えられてきたものである:

  • Javascriptの機能的な方法:、など広範囲に私はできる限りのjavascriptの機能部品を使用下線または他の機能のライブラリを利用します。このアプローチの賛辞は、「母語」を学ぶことです。私の欠点は、私は本当にその構文が気に入らず、Javascriptで「機能的なもの」をプログラムするのが自然ではないということです。
  • CoffeeScript + Underscore:CoffeScript + Underscoreを使用したいくつかの例を見てきましたが、これは魅力的なようです。例:http://autotelicum.github.com/Smooth-CoffeeScript/SmoothCoffeeScript.html#toc-Chapter-7
    これは、CoffeScriptが広く普及し、javascript VMで使用するために設計された言語のデファクトスタンダードと思われることです。文法は私にとってもっと自然であり、私は簡単な方法でいくつかのものを機能的にプログラミングすることができました。
    コンサルトはジャバスクリプトそのものから離れているだろうが(それは本当に私にとってはあまり問題ではない)、真に機能しない真ん中にいる。
  • Livescript:Coco(それ自体はCoffeScriptから派生した)から派生したもので、私にとってもっと魅力的な構文を持っています(F#の私の最愛のパイプライン '|'演算子もあります)。プロはそれが最も機能的なアプローチのようです。問題はそれほど広がっていない(私はSOで検索し、それに関しては何もしていない)、それが意味すること(コミュニティ、サポート、チュートリアルなどはあまりない)であるということです。このすべてにしばらく考えた後

などのjavascript、CoffeeScriptの、での作業に使用する人々は、この懸念の本当の重要性に私を導くことができれば、それは素晴らしいことと思いますので、私は本当の結論を持っていません。念のために...私は本当にPitを使用して考えられていない(ので、F#を使用し続ける)

それはJavaScriptにコンパイルが、私はそれが上記とdoesnのような任意のJavaScriptライブラリと統合しないと思いますので、同じワークフローに従うか、またはjavascriptエコシステムとリストされたオプションと統合しないでください。

ありがとうございました!

+5

面白いですが、質問にはうってつけです。 –

+1

pstのように言った:おそらくSOにうってつけの質問ではない。しかし、とにかく:私はあなたがJavaScriptを学びたいなら、_JavaScript_をプロトタイプ/ OOP /非機能的なものを含めて学んでください - JSをあなたがすでに知っているものにしたり、開始さえも。私はあなたが少なくともそこから始めることをお勧めします。そうでなければ、抽象化と翻訳のレイヤーに対してコーディングします。後でそれに入ることができます。また、最初から始めることは本当に学ぶところです。 – Flambino

+0

@pst、私はそれ以前に投稿していませんでした...おそらくプログラマーに適しています。スタックエクスチェンジ?もしそうなら、私は誰かがこれを閉じて、私はそこに試してみることを願っています。 –

答えて

2

あなたは基本的に2つのオプションがあります。

  • オプション1の場合はJSコンパイラ

に関数型言語を使用し

  • CoffeeScriptのようにJS-派生言語を使用し、まあ、それはおそらくあなたの最善です他のJSコードとの相互運用性のオプション。 <insert functional language>に精通していない他のJS開発者と実際に仕事をしたい場合は、あなたの最善の選択肢です。

    あなたが実際にJSに精通していないなら、私はオプション1をお勧めします。理解できない言語やツールのバグに遭遇した場合、 JSの基盤。

    オプション2は、おそらくあなたが好きな言語の恩恵をJSに味わうように、使うのが面白いかもしれません。あなたが言及しているPitプロジェクトに加えて、HaskellをJSにコンパイルする試みもいくつかあります。これはオプションでもあります。

    オプション2の欠点は、プロジェクトがまだ非常に進んでいないこと(おそらく、非常に効率的なJSコードにコンパイルされている可能性が高いことでしょう)。

    最後に、CoffeeScriptのようなJSをベースにしたHaskellスタイルの言語がいくつかありましたが、名前を忘れてしまったようです。 D

    +0

    それはあなたが何を参照しているか分かりませんが、[Clojure](http://clojure.org/)はほとんどが関数型言語であり、javascriptにコンパイルされています。 – obmarg

    +0

    @obmarg:ほとんどの場合、ClojureはJava Virtual Machineのバイトコードにコンパイルします。 Java(およびJVM)は、マーケティングの相乗効果のために選択された名前の類似性以外に、JavaScriptとは何の関係もありません。 (人々はJava、特にRhinoでJavascriptインタプリタを書いていますが)。 **編集** :(ありがとう、私はない)しかし、代わりにJavaScriptにコンパイルするClojureScriptというClojureのポートがあります。それがどれほど成熟しているかはわかりません。 –

    +0

    @ MarkReed:同じコメントを残そうとしていましたが、Clojureのホームページでこれを読んでいます。*「ClojureはJava Virtual Machine(およびCLRとJavaScript)をターゲットとする動的プログラミング言語です。 ClojureScriptプロジェクト。 –

    2

    "機能的な" "関数のライブラリについては、+ coffeescript + underscore;)はどうでしょうか?

    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で直接プロジェクトを続けることができます。 CoffeeScriptを続けます。私は時間を失いますが、コードはありません。これは常に良いことです。 F#の並行処理技術を組み込むことについて考えましたか?私は本当にその部門で何をやっているのが好きですが、javascript VMの限界がこのケースにあります...そして、最後には、LSのデフォルトでは値が不変です。 –

    +1

    私は[tag:livescript]をほぼ毎日チェックして質問に答えます。 LiveScriptには、LiveScriptがフォークされている人も含まれます。何らかの理由で私が続行できない場合、私は管理者権限をそれらに渡します。 – gkz