Programovací jazyk Nim

Re:Programovací jazyk Nim
« Odpověď #15 kdy: 28. 09. 2020, 15:33:04 »
Sázím na Rust, o Nimu si nemyslím nic moc, podle mě se nechytí a zůstane na okraji. Kdyby neměl tak silnou konkurenci, dalo by se o něm uvažovat. Ty příklady, které ukazuješ, mě spíš děsí, stejně jako tohle: https://nim-lang.org/docs/manual.html#lexical-analysis-identifier-equality

Já vím že se neprosadí. Jen je zajímavý. V Rustu jsem své projekty dělal už docela dlouho, ale začalo to být únavné, řešit String, &str, Boxy, Arcy, RCy, když v třeba Go které je trošku pomalejší to jde i bez toho.


Ink

  • ***
  • 210
    • Zobrazit profil
    • E-mail
Re:Programovací jazyk Nim
« Odpověď #16 kdy: 28. 09. 2020, 15:52:45 »
Sázím na Rust, o Nimu si nemyslím nic moc, podle mě se nechytí a zůstane na okraji. Kdyby neměl tak silnou konkurenci, dalo by se o něm uvažovat. Ty příklady, které ukazuješ, mě spíš děsí, stejně jako tohle: https://nim-lang.org/docs/manual.html#lexical-analysis-identifier-equality

Já vím že se neprosadí. Jen je zajímavý. V Rustu jsem své projekty dělal už docela dlouho, ale začalo to být únavné, řešit String, &str, Boxy, Arcy, RCy, když v třeba Go které je trošku pomalejší to jde i bez toho.

No právě, je tu Go, je tu Python, je tu Java, je tu JS, nějak postrádám prostor, kde by se měl prosadit Nim.

Zeptám se, děláš ty věci v Rustu skutečně "idiomaticky"? Já si programuju v Rustu spíš menší věci (ať už na doma nebo utilitky do práce), ale přijde mi, že čím víc se tomu věnuju, tím méně klacků pod nohy mi ten jazyk klade. Určitě tam jsou oblasti, kde je problém (typicky cyklické datové struktury) a určitě některé věci navrhuju jinak než v Pythonu, kde je dynamický dispatch základním stavebním kamenem, ale tím se všechno zase často srovná a problém zmizí.

Re:Programovací jazyk Nim
« Odpověď #17 kdy: 28. 09. 2020, 15:58:41 »
Sázím na Rust, o Nimu si nemyslím nic moc, podle mě se nechytí a zůstane na okraji. Kdyby neměl tak silnou konkurenci, dalo by se o něm uvažovat. Ty příklady, které ukazuješ, mě spíš děsí, stejně jako tohle: https://nim-lang.org/docs/manual.html#lexical-analysis-identifier-equality

Rust je oproti Nimu jazyk nižší úrovně, bez GC. Stejně jako v Go, musíte psát kód navíc z důvodu nedostatečné úrovně abstrakce, jen jiného typu.

Re:Programovací jazyk Nim
« Odpověď #18 kdy: 28. 09. 2020, 15:59:56 »
Sázím na Rust, o Nimu si nemyslím nic moc, podle mě se nechytí a zůstane na okraji. Kdyby neměl tak silnou konkurenci, dalo by se o něm uvažovat. Ty příklady, které ukazuješ, mě spíš děsí, stejně jako tohle: https://nim-lang.org/docs/manual.html#lexical-analysis-identifier-equality

Já vím že se neprosadí. Jen je zajímavý. V Rustu jsem své projekty dělal už docela dlouho, ale začalo to být únavné, řešit String, &str, Boxy, Arcy, RCy, když v třeba Go které je trošku pomalejší to jde i bez toho.

No právě, je tu Go, je tu Python, je tu Java, je tu JS, nějak postrádám prostor, kde by se měl prosadit Nim.

Zeptám se, děláš ty věci v Rustu skutečně "idiomaticky"? Já si programuju v Rustu spíš menší věci (ať už na doma nebo utilitky do práce), ale přijde mi, že čím víc se tomu věnuju, tím méně klacků pod nohy mi ten jazyk klade. Určitě tam jsou oblasti, kde je problém (typicky cyklické datové struktury) a určitě některé věci navrhuju jinak než v Pythonu, kde je dynamický dispatch základním stavebním kamenem, ale tím se všechno zase často srovná a problém zmizí.
Snažím se, ale někdy prostě nenajdu/nepřijdu na nic moc hezkého. Zatím jsem to nepotřeboval ale co jsem se podíval na gtk-rs tak jsem celý zbělal... Nechce se mi moc bojovat s jazykem, nedělám tu řízení raketoplánu, ne?

Re:Programovací jazyk Nim
« Odpověď #19 kdy: 28. 09. 2020, 16:00:25 »
Sázím na Rust, o Nimu si nemyslím nic moc, podle mě se nechytí a zůstane na okraji. Kdyby neměl tak silnou konkurenci, dalo by se o něm uvažovat. Ty příklady, které ukazuješ, mě spíš děsí, stejně jako tohle: https://nim-lang.org/docs/manual.html#lexical-analysis-identifier-equality

Rust je oproti Nimu jazyk nižší úrovně, bez GC. Stejně jako v Go, musíte psát kód navíc z důvodu nedostatečné úrovně abstrakce, jen jiného typu.
U toho Go to zase není tak hrozné...


Ink

  • ***
  • 210
    • Zobrazit profil
    • E-mail
Re:Programovací jazyk Nim
« Odpověď #20 kdy: 28. 09. 2020, 16:10:32 »
Sázím na Rust, o Nimu si nemyslím nic moc, podle mě se nechytí a zůstane na okraji. Kdyby neměl tak silnou konkurenci, dalo by se o něm uvažovat. Ty příklady, které ukazuješ, mě spíš děsí, stejně jako tohle: https://nim-lang.org/docs/manual.html#lexical-analysis-identifier-equality

Rust je oproti Nimu jazyk nižší úrovně, bez GC. Stejně jako v Go, musíte psát kód navíc z důvodu nedostatečné úrovně abstrakce, jen jiného typu.

Neřekl bych, že jde o nedostatečnou úroveň abstrakce, důvodem u Rustu je přísná analýza za účelem maximálního zaručení správnosti běhu finální aplikace. Pokud chci jazyk s GC, použiju Python. Pokud budu chtít o něco rychlejší Python, zkusím PyPy. Když budu chtít dále optimalizovat, použiju třeba PyO3. Pro Nim u mě není místo, neříkám, že nemá žádné dílčí výhody, ale za mě ne, nesáhno po něm.

Ink

  • ***
  • 210
    • Zobrazit profil
    • E-mail
Re:Programovací jazyk Nim
« Odpověď #21 kdy: 28. 09. 2020, 16:11:01 »
Zeptám se, děláš ty věci v Rustu skutečně "idiomaticky"? Já si programuju v Rustu spíš menší věci (ať už na doma nebo utilitky do práce), ale přijde mi, že čím víc se tomu věnuju, tím méně klacků pod nohy mi ten jazyk klade. Určitě tam jsou oblasti, kde je problém (typicky cyklické datové struktury) a určitě některé věci navrhuju jinak než v Pythonu, kde je dynamický dispatch základním stavebním kamenem, ale tím se všechno zase často srovná a problém zmizí.
Snažím se, ale někdy prostě nenajdu/nepřijdu na nic moc hezkého. Zatím jsem to nepotřeboval ale co jsem se podíval na gtk-rs tak jsem celý zbělal... Nechce se mi moc bojovat s jazykem, nedělám tu řízení raketoplánu, ne?

Mně přišlo, že to už není tak hrozné, když ta makra původně pro nightly jsou použitelná i ve stable kanále. Ale jo, GUI je téma a slabina v použitelnosti Rustu.

Re:Programovací jazyk Nim
« Odpověď #22 kdy: 28. 09. 2020, 17:50:08 »
Neřekl bych, že jde o nedostatečnou úroveň abstrakce, důvodem u Rustu je přísná analýza za účelem maximálního zaručení správnosti běhu finální aplikace.

což často nepotřebujete a jen to komplikuje práci.

Re:Programovací jazyk Nim
« Odpověď #23 kdy: 28. 09. 2020, 18:11:10 »
Neřekl bych, že jde o nedostatečnou úroveň abstrakce, důvodem u Rustu je přísná analýza za účelem maximálního zaručení správnosti běhu finální aplikace.

což často nepotřebujete a jen to komplikuje práci.

Já osobně správnost běhu finální aplikace docela potřebuju, a Rust mi těmi zárukami tedy práci dost zjednodušuje.
Samozřejmě se to nedá zobecnit na všechny.

Ink

  • ***
  • 210
    • Zobrazit profil
    • E-mail
Re:Programovací jazyk Nim
« Odpověď #24 kdy: 28. 09. 2020, 18:44:42 »
Neřekl bych, že jde o nedostatečnou úroveň abstrakce, důvodem u Rustu je přísná analýza za účelem maximálního zaručení správnosti běhu finální aplikace.

což často nepotřebujete a jen to komplikuje práci.

Ano, když chci "prasit", použiju Python. A pak se člověk v průběhu životnosti větší aplikace kolikrát chytá za hlavu a říká si, že mít ji napsanou v Rustu, leccos by bylo jednodušší.

Re:Programovací jazyk Nim
« Odpověď #25 kdy: 28. 09. 2020, 19:08:20 »
Já osobně správnost běhu finální aplikace docela potřebuju, a Rust mi těmi zárukami tedy práci dost zjednodušuje.
Samozřejmě se to nedá zobecnit na všechny.

Rust brani chybam, ktere v jazyku s GC, pri pouziti vhodneho modelu pararelismu, nemohou nastat. Namisto boje s jazykem je lepe usetreny cas investovat do prevence chyb, ktere jsou bezne.

Rust cili na urcitou domenu, stejne jako treba vyse zmineny Crystal. Psat v Rustu webove aplikace je plytvani usilim.

odpoved i pro Ink.
« Poslední změna: 28. 09. 2020, 19:13:48 od A.P.Hacker »

Ink

  • ***
  • 210
    • Zobrazit profil
    • E-mail
Re:Programovací jazyk Nim
« Odpověď #26 kdy: 28. 09. 2020, 19:33:29 »
Rust brani chybam, ktere v jazyku s GC, pri pouziti vhodneho modelu pararelismu, nemohou nastat. Namisto boje s jazykem je lepe usetreny cas investovat do prevence chyb, ktere jsou bezne.

Rust cili na urcitou domenu, stejne jako treba vyse zmineny Crystal. Psat v Rustu webove aplikace je plytvani usilim.

odpoved i pro Ink.

To je dost zjednodušený pohled. Pokud Ti funguje, co používáš, užij si to.

Re:Programovací jazyk Nim
« Odpověď #27 kdy: 28. 09. 2020, 19:48:40 »
Rust brani chybam, ktere v jazyku s GC, pri pouziti vhodneho modelu pararelismu, nemohou nastat. Namisto boje s jazykem je lepe usetreny cas investovat do prevence chyb, ktere jsou bezne.

Rust cili na urcitou domenu, stejne jako treba vyse zmineny Crystal. Psat v Rustu webove aplikace je plytvani usilim.

odpoved i pro Ink.

To je dost zjednodušený pohled. Pokud Ti funguje, co používáš, užij si to.

ukaz mi konkretni chybu, kterou Rust detekuje a bezne pouzivane lintery/kompilery nedetekuji. Podle me se vsechny takove chyby tykaji spravy pameti a soubezneho pristupu do pameti v paralelnich programech. Takove chyby hrozi jen v urcitem typu aplikaci. Kdyz pouzivas model pararelismu zalozeny na posilani zprav/komunikaci pomoci front a jazyk s GC, nic takoveho nemuze nastat.
« Poslední změna: 28. 09. 2020, 19:50:56 od A.P.Hacker »

Ink

  • ***
  • 210
    • Zobrazit profil
    • E-mail
Re:Programovací jazyk Nim
« Odpověď #28 kdy: 28. 09. 2020, 20:25:47 »
ukaz mi konkretni chybu, kterou Rust detekuje a bezne pouzivane lintery/kompilery nedetekuji. Podle me se vsechny takove chyby tykaji spravy pameti a soubezneho pristupu do pameti v paralelnich programech. Takove chyby hrozi jen v urcitem typu aplikaci. Kdyz pouzivas model pararelismu zalozeny na posilani zprav/komunikaci pomoci front a jazyk s GC, nic takoveho nemuze nastat.

Několik příkladů, které typový systém a další prostředky Rustu řeší:

1. Pattern matching a úplnost vyhodnocení možností a tím pádem:
2. Řádné ošetření nullable typů (Option rulez)
3. Řádné ošetření chybových výsledků (Result rulez)
4. Statická kontrola formátování řetězce (hygienic macro rulez)
5. Skvělá podpora pro serializaci pomocí maker (serde rulez)
6. Úžasná podpora pro budování parseru argumentů, opět pomocí maker a pomocí vyspělých složených typů (Enum atd.) (structopt rulez)
7. Oproti GC zcela deterministické uvolňování VŠECH možných prostředků, nejenom paměti, ale i třeba zámků nebo otevřených souborů a nevím čeho ještě. Na rozdíl od různých GC jazyků NEEXISTUJE, že by se volal nebo nevolal "destruktor" v závislosti na tom, jak se runtime zrovna rozmyslí (RAII rulez)

Rust není "jenom" hlídač paměti, ale autoři si dali hodně práce s tím, aby jazyk měl pokročilé vlastnosti známé z FP jazyků při zachování efektivity srovnatelné s C++ (protože zero cost abstractions) a v ideálním případě ne za cenu zhoršené ergonomie. Člověk často zjistí, že co mu chybělo oproti jiným jazykům, má Rust implementováno podobně nebo malinko jinými prostředky, ale se srovnatelným pohodlím.

Platí za to hlavně tím, že se musí dost věcí učit a že nad svým programem musí přemýšlet dopředu, případně vychytat fígle, které mu umožní část rozhodnutí přesunout do pozdějších fází vývoje. A pokud už do jazyka investoval, otevřou se mu další domény a věř tomu, že komunita kolem Rustu je hodně vitální a činí se, takže jeho využitelnost je od high performance web serverů přes embedded systémy a výpočetně náročné paralelní výpočty (Rayon rulez) k CLI utilitám a klidně i webovému frontendu s využitím WASM (Yew).

Už jsme na hraně flamewaru, takže za sebe tímto končím.

Re:Programovací jazyk Nim
« Odpověď #29 kdy: 28. 09. 2020, 21:01:48 »
Neřekl bych, že jde o nedostatečnou úroveň abstrakce, důvodem u Rustu je přísná analýza za účelem maximálního zaručení správnosti běhu finální aplikace.

což často nepotřebujete a jen to komplikuje práci.

Kód: [Vybrat]
(0..=3).product(); // 6

Ano, když chci "prasit", použiju Python. A pak se člověk v průběhu životnosti větší aplikace kolikrát chytá za hlavu a říká si, že mít ji napsanou v Rustu, leccos by bylo jednodušší.