jandoubek / pvs-2020-lectures

Project for PVS lecture in fall 2020
0 stars 0 forks source link

Vybrat programovací jazyk pro prohlížečovou část #2

Closed pakk-minidose closed 3 years ago

pakk-minidose commented 3 years ago

Je potřeba vybrat programovací jazyk pro prohlížečovou část. Návrhy pište níže

hetsko commented 3 years ago

Obecně v prohlížeči JavaScript (a HTML a CSS). K tomu pak můžeme diskutovat nějaké frameworky/knihovny pro stavění GUI, které jsou běžně výrazně pohodlnější, přehlednější a rychlejší než low-level přístup k HTML elementům z nativního JS. Na přístup k datům, nějaké vyhledávací algoritmy a tak podobně pak bude myslím stačit i nativní JS.

Jako GUI knihovnu navrhuji React.js se kterou má @SachCZ praktické zkušenosti a já jsem do ní také lehce zabrousil. Pro zajímavost hezký tutoriál zde: https://www.youtube.com/watch?v=Ke90Tje7VS0.

agehrtenab commented 3 years ago

které jsou běžně výrazně pohodlnější, přehlednější a rychlejší než low-level přístup k HTML elementům z nativního JS

I v roce 2020? Ono se v téhle oblasti od doby, kdy bylo prakticky na jakoukoli manipulaci nutné používat jQuery, docela hodně změnilo. Já se přitom nikdy netajil masivním skepticismem vůči řešením typu React (možná s čestnou výjimkou v podobě IMNSHO velmi pěkného Mithril.js), ale pokud s Reactem tady někdo už umí a pracuje a nevadí mu rvaní se s jeho ekosystémem, prosím, klidně se toho může ujmout v Reactu. :)

Pokud jde o zmíněné "vnitřnosti", pak určitě dává smysl omezit se na JS, jelikož pak se to může snadno testovat a vyvíjet zcela samostatně (což téměř určitě bude zapotřebí) a bez nějaké provozní režie. Extrémní zátež v prohlížeči v dnešní době řeší WebAssembly, ale to u nás téměř s jistotou nenastane vzhledem k malému objemu dat (snad mě jedině napadá, že pokud by ke zpracování vstupu od uživatele bylo zapotřebí něco jako Majka (https://nlp.fi.muni.cz/ma/free.html), tak se z toho dá udělat přijatelně malý modul v Asm.js - výkon je postačující, kompatibilita je větší a nakonec není nutné to celé přepisovat do JS).

hetsko commented 3 years ago

které jsou běžně výrazně pohodlnější, přehlednější a rychlejší než low-level přístup k HTML elementům z nativního JS

Já se přitom nikdy netajil masivním skepticismem vůči řešením typu React (možná s čestnou výjimkou v podobě IMNSHO velmi pěkného Mithril.js), ale pokud s Reactem tady někdo už umí a pracuje a nevadí mu rvaní si s jeho ekosystémem, prosím, klidně se toho může ujmout v Reactu. :)

Nemám nic proti sarkasmu, ale prosím i více tý konstruktivnosti k tomu :D Klidně rozveď myšlenku a doplň svými zkušenostmi, nejsem dlouholetý expert ve web aplikacích. Chceš to celé stavět od píky v čistém jako let results = document.createElement("div");? Nebo existuje nějaký jiný skvělý přístup?

Jinak mi přišlo, že řešení typu React je validní přístup pro náš typ problému (opravte mě někdo) a bylo by trochu neefektivní se tomu zapřísáhle vyhýbat. Přece jenom, nemáme půl roku na vývoj vlastního frameworku, který bude vládnout všem. A klidně bych zkusil ten Mithril, jestli to je jenom osobní konflikt s Reactem. Vypadá hezky.

agehrtenab commented 3 years ago

Tak já jsem zmínil Mithril, který by určitě pro tenhle účel téměř určitě bohatě stačil i s rezervou. Viděli jste někdo prezentaci o Turbolinks, alespoň mezi 3:00 a 8:00? Docela hezky to shrnuje moje myšlenky o téhle oblasti. Samozřejmě tenhle projekt je specifický tím, že nemá serverovou část, takže část komplexity není redundantní mezi dvěma uzly (a zase naopak je zapotřebí řešení čistě na straně klienta) a tato část argumentu (která ale jinak platí v 95+% případů) zde odpadá, ale to, že nejsme firma o 10k zaměstnancích stále platí.

(Jinak jedna zajímavá alternativa ke všemu výše zmíněnému, kterou jsem včera zapomněl zmínit, by byl Blazor WebAssembly, ale teď jsem právě zjistil, že AOT kompilace, která měla původně být v .NET 5, bude až v .NET 6, a aktuální implementace je WASM interpret. Protože téma aplikace je provoz složité logiky v prohlížeči, tohle by mohlo docela vadit. Což je velká škoda, protože pokud by bylo zapotřebí výkonnou logiku dělat v JS přes blazoří interop, zase by z toho byla nějaká ošklivá chiméra.)

SachCZ commented 3 years ago

React