web-dev-qa-db-ja.com

ElmはClojureScriptとどのように比較されますか?

Backbone.jsオブジェクト指向MVCパターンを使用したGUIコーディングが非常に複雑になり、他のパラダイムを見回しているところまで来ています。 [〜#〜] mdv [〜#〜][〜#〜] frp [〜#〜][〜#〜] ecs [〜 #〜] 、ああ、私の。

ElmClojureScript とどのように比較されますか?それらはどこで重複していますか?

どちらもJSにコンパイルされるJSとは非常に異なる言語です。 Elmが関数型リアクティブプログラミング(FRP)言語であることを理解しています。 ClojureScriptは必ずしもFRPである必要はありませんが、FRPを使用して実行できます。 ElmはHaskellでコンパイルし、ClojureScriptはJVMでコンパイルするため、どちらもNode shopの追加要件です。

たぶんそれは Clojure vs Haskell に要約されます。

40
forresto

どちらも、純粋なJSよりも宣言型/関数型プログラミングスタイルを使用する必要があります。 ClojureScriptはJSの代替品に似ていますが、ElmはWeb開発スタック全体(HTML/CSS/JS)の代替品に似ています。

その他の違い:

  • Elm構文ははるかにHaskellに似ています
  • ClojureScriptは従来のLISP構文にはるかに近い
  • Elmは、時変値(Elmの「シグナル」)に対して高度に最適化されています。
  • ClojureScriptはより成熟しており、そのための優れた開発ツール(Eclipseプラグイン、LightTableなど)を見つけることができます。
  • Elmは静的に型付けされ、ClojureScriptは動的に型付けされます

お役に立てれば。私はまだこれらの言語の両方を学んでいるので、何かを逃したかもしれません。

39
hoosierEE

2017年にこれを更新するだけです。

ElmはもはやFRPではなく、Elmアーキテクチャを支持して数リリース前に廃止されました。

Elmの主な利点は、コンパイラがコンパイル時にプログラムの正当性について多くのアサーションを作成できる静的型システムを備えていることです。たとえば、caseステートメントが特定のケースをカバーしないことは決してないという事実を知っています。または、ビュー関数からのHTMLが、更新が処理方法を知らないイベントを生成すること。

その他のエルムの利点

  • 大きなエラーメッセージ
  • パッケージはセマンティックバージョニングを実施しました
  • パッケージとツールは本当に明白な名前を持つ傾向があります
14
Zachary K

これらは両方ともコアがFRP(関数型リアクティブプログラミング)です。つまり、DOMにマップされたツリーがあり、レンダリングが必要なコンポーネントまたは子のみをレンダリングします。 (誰かが以前に指摘したように、エルムはFRPの原則を放棄して独自のアイデアを追求しました)

どちらもJavaScriptでコンパイルされます(ただし、ClojureScript/OmライブラリまたはReagentを使用すると、実際のReactオブジェクトをjsで取得できます)が、Elmが独自の処理を実行します。Elmがそうである必要はありません。私が理解しているようにczaplikiはスタンドアロンインストーラーで動作していますが、npmを介してインストールされます)

Elmは、状態をもう少しコーダーフレンドリーに管理し、非常に優れた(前述のように-)Haskellのような構文を持ち、RuntimeErrorsをCompileTimeErrorsに移動するため、開発者としてはるかに快適であるため、私の意見ではより優れています-さらに、コードの保守性が容易になります。

一方、cljsにはlotsaライブラリがあります-私が述べたように、それらのいくつかは実際のReactコンポーネント(cljs/OmはR.jsライフサイクルと1:1に一致します)を返します)-他は単にFRPを尊重し、ライフサイクルのメンタリティに煩わされることはありません。エンドポイントからデータを呼び出すGraphQLの方法があり、プレーンなcljs/Omで使用されていた非同期チャネルを削除したOm/Nextを調べたい場合があります。

正直に言うと好みの問題ですが、私はエルム(両方の言語で書かれている)を好みます。ただし、cljsを使用する場合は、Niceライブラリを取得し、Vanilla cljsで何もしないようにしてください。そうしないと、5k以上のLOCを維持したいときに申し訳ありません(Fulcro、Reagent、om、OmNext、hoplon、等。)

5
andy