Comment Elm comparer à ClojureScript?
J'arrive à un point où le codage GUI avec Backbone.le modèle MVC orienté objet JS devient assez complexe et regarde autour d'autres paradigmes. MDV, PRF, ECS, oh mon.
Comment Elm comparer à ClojureScript? Où ils se chevauchent?
Les deux sont des langages très différents DE JS qui compilent en JS. Je comprends que Elm est un langage de programmation réactive fonctionnelle (FRP). ClojureScript n'est pas nécessairement FRP, mais vous peut faire FRP avec elle. Elm compile avec Haskell et ClojureScript avec la JVM, donc ces deux exigences sont supplémentaires pour un magasin de nœuds.
Peut-être que cela se résume à Clojure vs Haskell.
3 réponses
Les deux vous forcent à utiliser un style de programmation plus déclaratif/fonctionnel que JS pur. ClojureScript est plus comme un remplacement JS, tandis que Elm est plus comme un remplacement pour l'ensemble de la pile de développement web (HTML/CSS / JS).
Autres différences:
- la syntaxe Elm est beaucoup plus Haskell-like
- ClojureScript est beaucoup plus proche de la syntaxe Lisp traditionnelle
- Elm est hautement optimisé pour les valeurs variables dans le temps ("signaux" dans Elm)
- ClojureScript est plus mature et vous pouvez trouver des outils de développement doux pour cela (plug-ins Eclipse, LightTable, etc.)
- Elm est typé statiquement, ClojureScript est typé dynamiquement
J'espère que cela aide. J'apprends encore ces deux langues, donc j'ai peut-être manqué quelque chose.
Juste pour mettre à jour cela pour 2017.
Elm n'est plus FRP, qui est parti il y a quelques versions en faveur de l'Architecture Elm.
La principale victoire D'Elm est qu'il a un système de type statique qui permet au compilateur de faire de nombreuses assertions sur l'exactitude du programme au moment de la compilation. Par exemple, vous savez pertinemment qu'il n'y aura jamais un moment où une déclaration de cas ne couvre pas un cas spécifique. Ou que le HTML de la fonction view produira un événement que la mise à jour ne sais pas comment y faire face.
Autres avantages de L'Orme
- grands messages d'erreur
- Les paquets ont imposé le versionnement sémantique
- Les paquets et les outils ont tendance à avoir des noms vraiment évidents
Ils sont tous deux FRP (Functional Reactive Programming) à leur base - ce qui signifie qu'ils ont un arbre mappé au DOM et ne rendent que ce composant ou les enfants qui doivent être rendus. (comme quelqu'un l'a souligné plus tôt, Elm a abandonné les principes du PRF pour poursuivre sa propre idée d'eux)
Ils compilent tous les deux en JavaScript (bien qu'avec la bibliothèque ClojureScript/Om ou le réactif, vous puissiez obtenir des objets React réels dans votre js) tandis Qu'Elm fait sa propre chose. Je n'aime pas que l'Orme doit être installé via npm bien que czapliki si je comprends bien travaille sur un installateur autonome)
Elm est plus agréable à mon avis car il gère l'état un peu plus convivial pour les codeurs et il a une très belle syntaxe (comme cela a été mentionné -) de type Haskell et vous déplacez les RuntimeErrors dans CompileTimeErrors qui est beaucoup plus agréable en tant que développeur-plus il a une maintenabilité de code plus facile.
D'autre part, cljs a des bibliothèques lotsa - certaines d'entre elles comme je l'ai mentionné return composants React réels (cljs / Om correspond à 1: 1 avec R. js LifeCycle) - d'autres respectent simplement la mentalité de FRP et de cycle de vie sans être encombrés par celle-ci. Pourrait vouloir regarder dans Om / Next avec une façon GraphQL d'appeler des données à partir d'un point de terminaison et a abandonné les chansons asynchrones qui ont été utilisées dans cljs/Om.
C'est une question de goût pour être honnête, mais pour ma part je préférerais L'Orme (ayant écrit dans les deux langues). Si vous faites cependant aller avec cljs assurez vous d'obtenir une belle bibliothèque et ne faites pas de choses dans vanilla cljs ou vous serez désolé quand vous voulez maintenir 5K + LOC.(recherchez Fulcro, réactif, om, OmNext, hoplon, etc.)