Elm at Rakuten | Rakuten Engineering Blog

Discutia HN
https://news.ycombinator.com/item?id=28222060

Folositi Elm?

Nu, dar nu prea imi place forma limbajului

1 Like

E prea complex pentru majoritatea lumii, React e mult mai simplu și poate fi ușor.

Elm e mult mai strict.

Toate limbajele astea compilate/transpilate/*pilate în JS mi se par o greșeală ce ne va mușca rău de fund pe viitor.

Typescript este o excepție, că nu se duce prea departe de JS, dar restul? Ce faci dacă moștenești un proiect peste +cinci ani, când Elm va fi demult uitat? Trei sferturi din timp va fi pierdut în a înțelege codul în raport cu structura limbajului

Își mai aduce aminte cineva de CoffeeScript?

3 Likes

Evident ca toata complexitatea asta va pasa factura la un moment dat. Si nu va fi deloc de neglijat.
Bariera de intrare ca dezvoltator web a crescut imens in ultimii ani si nu e normal.

Oarecum in antiteza:

1 Like

Elm are avantaje clare, nu doar sintaxa, garantează că îți compileaza cod funcțional.

Se inspira din OCaml/ML, care sunt limbaje foarte vechi.

E iarăși un compilator care aduce feature-uri cu limbajul.

Sunt foarte utile la rule engine-uri sau unde ai nevoie de un DSL.

Dar e mai complicat tocmai din acest motiv și greu găsești pe cineva care l-a folosit. De exemplu dacă ai backend pe Scala/F# atunci o să fie frumos Elm pe front-end. Dar e ciudat, în special cu html în Elm.

Nu e doar un CoffeeScript.

Si totul pentru ca JS este cel mai super limbaj. Astept cu nerabdare https://www.cloudsavvyit.com/13696/why-webassembly-frameworks-are-the-future-of-the-web/

2 Likes

Nu ai acces la DOM din webassembly, e asincron tot ce rulează în VM de WASM (nu poți bloca) și cu JS poți comunica doar cu string-uri.

1 Like

Hmm, WASM e doar un concept aparent frumos dar complicat de pus in practic. Incercasem la un moment dat ceva prin Go dar codul iesea foarte alambicat, cred ca mai bine scrii direct in JS :man_shrugging:

Nu am spus ca este gata, ci ca astept + ca mi se pare ca evolueaza foarte repede. Si prefer asta + folosirea unui limbaj mai bun (rust sau go) fata de alternativa folosirii unui alt “iled” to JS.

masina de marketing Microsoft si-a facut datoria

1 Like

Văd că ești pornită pe toată lumea azi.

JS este într-un punct al vieții sale în care strict typing este un lucru util (la fel și în PHP). Nu m-ar mira dacă în ES cât-naiba-o-fi-în-2-3-ani o să vedem propuneri în direcția asta. Nu zic că nu se poate fără typing, dar nu e mai simplu cu?

Apoi, sunt situații în care TS ajută la productivitate. De exemplu, în React specifici ce tip de prop acceptă o componentă, apoi ai autocomplete la toate proprietățile venite din acel prop.

Apoi este ușurința de adopție. Cu Elm trebuie să fii all-in pe sintaxa aia. La fel și Coffeescript. TS te ia cu binișorul.

Întâmplător, Microsoft - care presupun că știe un lucru sau două despre enterprise, dar îl așteptăm pe @Cosmin_Popescu să ne confirme - a venit cu o chestie care rezolvă o problemă reală[1]. Pentru Elm însă putem copia metafora OOP: vrei o banană, dar primești și o gorilă care ține banana dar și întreaga jungă.

Oi fi idiot eu că am picat pe fenta Microsoft? TS chiar aduce valoare? Presupun că nu vom afla niciodată…


  1. evident, în anumite situații; un carusel și un lightbox le pot face în continuare și cu jQuery :smiley: ↩︎

1 Like

O metoda mult mai eleganta (si demonstrata ca eficienta de php) era sa aduca o versiune noua de sintaxa js care te lasa sa enforce tipurile daca doreai sa scrii cod in acest mod. Si apoi gradual comunitatea sa ceara eliminare modalitatii vechi, pt ca nu e ok.
Dar asta e greu, implica munca in comunitatea open-source, discutii si alte cele.
A fost mult mai simplu sa iti vinzi modul de lucru in enterprise si sa aduci discutia de acolo, fortand multi dezvoltatori sa foloseasca solutia asa cum iese ea din bucataria Microsoft.

In schimb au introdus noi dependinte pt proiecte care sunt greu de implementat si introduc multa frustrare in partea de setup.

Dar da, concluzia ta e ca eu sunt pornita pe toata lumea, desi am argumente.

1 Like

Păi dacă Ecma zice nu, e nu, ce o să faci? Nu o să mai folosești browserul?

La fel a fost și PHP 10 ani; până nu a apărut un concurent serios și real al PHP, au dormit în păpușoi. Diferența aici este că nu ai alternativă la JS decât prin transpilare[1].

Și cauți un limbaj pe care să-l transpilezi. Moment în care ai de ales: folosești ceva cât-de-cât asemănător cu limbajul tău, de preferat susținut de organizații mari? Sau te arunci la ceva jumătate esoteric, jumătate obscur?

O alternativă ar fi Dart, dar să vezi chestie, e susținut de Google…


  1. de dragul simplității, presupunem că „transpilare” este un cuvânt care există în română. ↩︎

Asta e ideea, sa convingi ecma sa se modernizeze. sa ajungi la o chestie sustenabila.

Daca ai backend in F# poti sa folosesti direct Elmish, care e o clona a arhitecturii Elm in F#, unde ai avantajul ca este scris in F# si nu in Elm.

1 Like