Erlang/Elixir - zkušenosti s vývojem webových aplikací

Re:Erlang/Elixir - zkušenosti s vývojem webových aplikací
« Odpověď #15 kdy: 23. 02. 2017, 21:13:29 »
Třeba protože v HTTP mám spárovanou odpověď s požadavkem zadarmo? Proč používat statefull řešení tam kde není potřeba udržovat stav?
To neni zadarmo. To je za cenu udrzovani dvou ruznych API (ws a http).


gll

Re:Erlang/Elixir - zkušenosti s vývojem webových aplikací
« Odpověď #16 kdy: 24. 02. 2017, 16:16:08 »
Třeba protože v HTTP mám spárovanou odpověď s požadavkem zadarmo? Proč používat statefull řešení tam kde není potřeba udržovat stav?
To neni zadarmo. To je za cenu udrzovani dvou ruznych API (ws a http).

Websockety se dají používat jen pro vyvolání akce načtení dat přes HTTP API. K žádné duplikaci potom nedochází.

gll

Re:Erlang/Elixir - zkušenosti s vývojem webových aplikací
« Odpověď #17 kdy: 24. 02. 2017, 16:31:34 »
Proč FP programátoři prosazují bezestavovost na úrovni jazyka a stavovost na úrovni fungování aplikace?

Pilsner Urquell1842

Re:Erlang/Elixir - zkušenosti s vývojem webových aplikací
« Odpověď #18 kdy: 24. 02. 2017, 17:03:10 »
Proč FP programátoři prosazují bezestavovost na úrovni jazyka a stavovost na úrovni fungování aplikace?


Spis pure (eliminaci side-effektu), stavovosti se neda vyhnout. Uz tady je videt pekne proc. Co je stavove a nestavove ? Pokud to ma neco delat, tak to musi menit stav.  Jde o to, aby zmeny stavu meli urcite vlastnosti a dalo se o nich lepe premyslet.
Prekladac si pak muze udelat vesmes co chce za danych garancych.

A pokud tak zapatram v pameti, tak i v Ruby a Jave neplati ze je to bezstavove. Volani je bud deterministicke, nebo nedeterministice. Nam jde o deterministicke, ktere samozrejme ulehci praci prekladaci, dovoli daleko lepsi cachovani atd.
V Ruby a Jave se programuje, tak ze se drzi stav v databazi.
Naopak v OTP se da takhle programovat taky, ale ... prave diky garancim mas tu databazi o jeden krok bliz.

Prakticky to mame nasazene celosvetove, odezvy v radech stovek micro sekund. Alchemist, VSCode ma taky extension. Naseptavace se moc nepouzivaji, moduly se pisou malinke...

Proste OO udelano spravne a microservice taky.

v

Re:Erlang/Elixir - zkušenosti s vývojem webových aplikací
« Odpověď #19 kdy: 24. 02. 2017, 20:41:01 »
stavovost na úrovni fungování aplikace
co to vlastně znamená?


jpu

Re:Erlang/Elixir - zkušenosti s vývojem webových aplikací
« Odpověď #20 kdy: 24. 02. 2017, 21:13:41 »
By ma velmi zaujimalo, kolki z vas realne pouzivaju funkcionalne jazyky ako profesionalny jazyk, s ktorym pracuju

v

Re:Erlang/Elixir - zkušenosti s vývojem webových aplikací
« Odpověď #21 kdy: 24. 02. 2017, 21:49:16 »
By ma velmi zaujimalo, kolki z vas realne pouzivaju funkcionalne jazyky ako profesionalny jazyk, s ktorym pracuju
haskell na některé nástroje, občas i velké, pro "produkci" ovšem ne

Re:Erlang/Elixir - zkušenosti s vývojem webových aplikací
« Odpověď #22 kdy: 25. 02. 2017, 00:37:12 »
Websockety se dají používat jen pro vyvolání akce načtení dat přes HTTP API. K žádné duplikaci potom nedochází.
Nepsal jsem "duplikace", ale dvě různá API. Typicky si na začátku říkáš, že tyhle data přece načteš jenom jednou, takže na to použiješ HTTP, ok, napíšeš to a za půl roku zjistíš, že bys vlastně chtěl, aby ty data byly živý - a přepisuješ to znovu do ws, s úplně jinou logikou, takže se ten kód nedá moc znovupoužít. Protože jsem si tímhle prošel, dospěl jsem k názoru, že nejjednodušší je prostě všechno posílat přes ws a fertig.

Proč FP programátoři prosazují bezestavovost na úrovni jazyka a stavovost na úrovni fungování aplikace?
Mícháš dvě věci dohromady: vedlejší efekty a stavovost. "Sémanticky", význámově "stavová" může být i čistá funkce, třeba když jí jako první parametr dám stav. Taková funkce je čistá (nemá vedlejší efekty) a přitom pracuje se stavem (ještě líp možná "kontextem").

Stavovost "ná úrovni aplikace", resp. spíš komponenty, je prostě daná povahou toho, co ta komponenta dělá. Pokud servíruju statické stránky, pořád vracím stejnou stránku na stejný dotaz, tak mám nestavovou komponentu. Pokud chci, aby v hlavičce stránky bylo jméno uživatele, tak je to prostě komponenta stavová z principu - s jazykem to nemá nic společnýho.


andy

Re:Erlang/Elixir - zkušenosti s vývojem webových aplikací
« Odpověď #23 kdy: 25. 02. 2017, 08:22:18 »
Docela zajímavá je otázka vytížení serveru - pokud mi víc lidí přistupuje na živé informace, tak když to rozumně navrhnu před REST, tak tam můžu dát HTTP caching reverse proxy; u WS řešení bude výsledkem velké množství simultánních spojení. Nikdy jsem to nedělal (zrovna mám rozdělaný jeden projektík, kde jsem to původně přes WS chtěl řešit), ale nemůže to být trochu problém?

Re:Erlang/Elixir - zkušenosti s vývojem webových aplikací
« Odpověď #24 kdy: 25. 02. 2017, 08:33:45 »
Docela zajímavá je otázka vytížení serveru - pokud mi víc lidí přistupuje na živé informace, tak když to rozumně navrhnu před REST, tak tam můžu dát HTTP caching reverse proxy;
Živá data stejně typicky cachovat nemůžeš, protože neznáš expiraci.

ale nemůže to být trochu problém?
Může. Ale erlang se dá dost snadno clusterovat a websockety v Phoenixu jsou na to od začátku navržené, takže se dá jít i touhle cestou. A přinejhorším kritické části můžeš do toho http vždycky přepsat - ale až to reálně bude výkonnostní problém, ne předem.

Viz https://dockyard.com/blog/2016/01/28/running-elixir-and-phoenix-projects-on-a-cluster-of-nodes
https://groups.google.com/d/msg/phoenix-talk/zjwitSVACUc/7gh8q9hBDgAJ

BoneFlute

  • *****
  • 1 911
    • Zobrazit profil
Re:Erlang/Elixir - zkušenosti s vývojem webových aplikací
« Odpověď #25 kdy: 27. 02. 2017, 01:52:59 »
Pokud to ma neco delat, tak to musi menit stav.  Jde o to, aby zmeny stavu meli urcite vlastnosti a dalo se o nich lepe premyslet.
Prekladac si pak muze udelat vesmes co chce za danych garancych.
Je zajímavě, že si v tom samém příspěvku odporuješ: Překladač nepracuje se stavem, a přesto rozhodně něco dělá :-)