Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: okalousek 27. 09. 2020, 00:34:21

Název: Programovací jazyk Nim
Přispěvatel: okalousek 27. 09. 2020, 00:34:21
Zdravím. Vcelku nedávno jsem narazil na zajímavý programovací jazyk Nim. Syntax podobná Pythonu, rychlost se blíží k céčku (v porovnání s Pythonem rozhodně). Transpilace do C a JS, popřípadně C++ a ObjC (aby se daly pro ně psát knihovny/použít je?). Zajímavé syntaktické cukry. Problémem je že není moc rozšířený.

Co si o něm myslíte?
Název: Re:Nim
Přispěvatel: fortran1986 27. 09. 2020, 02:50:58
Zdravím. Vcelku nedávno jsem narazil na zajímavý programovací jazyk Nim. Syntax podobná Pythonu, rychlost se blíží k céčku (v porovnání s Pythonem rozhodně). Transpilace do C a JS, popřípadně C++ a ObjC (aby se daly pro ně psát knihovny/použít je?). Zajímavé syntaktické cukry. Problémem je že není moc rozšířený.

Co si o něm myslíte?

Neskúšal som ho ale vyzerázaujímavo (https://nim-lang.org/). Po Boo (https://github.com/boo-lang/boo/wiki/Language-Guide:-Functions) ďalší jazyk inšpirovaný python syntaxou.

Btw ďalší jazyk z tohto súdka je crystal ten je pre zmenu inšpirovazný jazykom Ruby: https://crystal-lang.org/ a tiež sa kompiluje do C.

Tých jazykov je už naozaj veľa, ale vačšina z nich ide len cestou evolúcie. Ich autori sú málo odvážni na to aby priniesli niečo nové nejaké revolučné myšlienky úplne iný nový revolučný spôsob vývoja.
Název: Re:Nim
Přispěvatel: okalousek 27. 09. 2020, 11:23:04
Zdravím. Vcelku nedávno jsem narazil na zajímavý programovací jazyk Nim. Syntax podobná Pythonu, rychlost se blíží k céčku (v porovnání s Pythonem rozhodně). Transpilace do C a JS, popřípadně C++ a ObjC (aby se daly pro ně psát knihovny/použít je?). Zajímavé syntaktické cukry. Problémem je že není moc rozšířený.

Co si o něm myslíte?

Neskúšal som ho ale vyzerázaujímavo (https://nim-lang.org/). Po Boo (https://github.com/boo-lang/boo/wiki/Language-Guide:-Functions) ďalší jazyk inšpirovaný python syntaxou.

Btw ďalší jazyk z tohto súdka je crystal ten je pre zmenu inšpirovazný jazykom Ruby: https://crystal-lang.org/ a tiež sa kompiluje do C.

Tých jazykov je už naozaj veľa, ale vačšina z nich ide len cestou evolúcie. Ich autori sú málo odvážni na to aby priniesli niečo nové nejaké revolučné myšlienky úplne iný nový revolučný spôsob vývoja.
Zajímalo by mě, co si představujete pod Revolučním programovacím jazykem
Název: Re:Programovací jazyk Nim
Přispěvatel: Vykook 27. 09. 2020, 13:50:08
A co haxe.org ? dá se to zkomplikovat snad do úplně všeho a sem tam o tom něco i zaslechnu...
Název: Re:Nim
Přispěvatel: Kit 27. 09. 2020, 15:24:53
Tých jazykov je už naozaj veľa, ale vačšina z nich ide len cestou evolúcie. Ich autori sú málo odvážni na to aby priniesli niečo nové nejaké revolučné myšlienky úplne iný nový revolučný spôsob vývoja.
Zajímalo by mě, co si představujete pod Revolučním programovacím jazykem

Asi Lisp bez závorek :-)
Název: Re:Nim
Přispěvatel: Google CTCCTCGGCGGGCACGTAG 27. 09. 2020, 17:26:58
Zdravím. Vcelku nedávno jsem narazil na zajímavý programovací jazyk Nim. Syntax podobná Pythonu, rychlost se blíží k céčku (v porovnání s Pythonem rozhodně). Transpilace do C a JS, popřípadně C++ a ObjC (aby se daly pro ně psát knihovny/použít je?). Zajímavé syntaktické cukry. Problémem je že není moc rozšířený.

Co si o něm myslíte?

Neskúšal som ho ale vyzerázaujímavo (https://nim-lang.org/). Po Boo (https://github.com/boo-lang/boo/wiki/Language-Guide:-Functions) ďalší jazyk inšpirovaný python syntaxou.

Btw ďalší jazyk z tohto súdka je crystal ten je pre zmenu inšpirovazný jazykom Ruby: https://crystal-lang.org/ a tiež sa kompiluje do C.

Tých jazykov je už naozaj veľa, ale vačšina z nich ide len cestou evolúcie. Ich autori sú málo odvážni na to aby priniesli niečo nové nejaké revolučné myšlienky úplne iný nový revolučný spôsob vývoja.

Crystal je celkem revoluční, vysokoúrovňový kompilovaný jazyk s GC cílící na webové vývojáře, narozdíl od Go bez kompromisů v podobě chybějících featur.
Název: Re:Nim
Přispěvatel: listoper 27. 09. 2020, 17:36:23
Tých jazykov je už naozaj veľa, ale vačšina z nich ide len cestou evolúcie. Ich autori sú málo odvážni na to aby priniesli niečo nové nejaké revolučné myšlienky úplne iný nový revolučný spôsob vývoja.
Zajímalo by mě, co si představujete pod Revolučním programovacím jazykem

Asi Lisp bez závorek :-)

To by byla skoda :-)
https://xkcd.com/297/ (https://xkcd.com/297/)
Název: Re:Nim
Přispěvatel: Google CTCCTCGGCGGGCACGTAG 27. 09. 2020, 17:49:47
Zdravím. Vcelku nedávno jsem narazil na zajímavý programovací jazyk Nim. Syntax podobná Pythonu, rychlost se blíží k céčku (v porovnání s Pythonem rozhodně). Transpilace do C a JS, popřípadně C++ a ObjC (aby se daly pro ně psát knihovny/použít je?). Zajímavé syntaktické cukry. Problémem je že není moc rozšířený.

Co si o něm myslíte?

Neskúšal som ho ale vyzerázaujímavo (https://nim-lang.org/). Po Boo (https://github.com/boo-lang/boo/wiki/Language-Guide:-Functions) ďalší jazyk inšpirovaný python syntaxou.

Btw ďalší jazyk z tohto súdka je crystal ten je pre zmenu inšpirovazný jazykom Ruby: https://crystal-lang.org/ a tiež sa kompiluje do C.

Tých jazykov je už naozaj veľa, ale vačšina z nich ide len cestou evolúcie. Ich autori sú málo odvážni na to aby priniesli niečo nové nejaké revolučné myšlienky úplne iný nový revolučný spôsob vývoja.

Crystal je celkem revoluční, vysokoúrovňový kompilovaný jazyk s GC cílící na webové vývojáře, narozdíl od Go bez kompromisů v podobě chybějících featur.

btw včera vyšlo Ruby 3.0.0 Preview 1, některé výhody Crystalu oproti Ruby už nejsou aktuální.
Název: Re:Nim
Přispěvatel: okalousek 27. 09. 2020, 18:55:42
Asi Lisp bez závorek :-)

Ano ano. A také objektové assembly, funkcionální C a kompilovaný bash.
Název: Re:Nim
Přispěvatel: Kit 27. 09. 2020, 19:01:58
Asi Lisp bez závorek :-)

Ano ano. A také objektové assembly, funkcionální C a kompilovaný bash.

To vše je dnes možné, ale asi to moc vývojářů chtít nebude. Ten Lisp bez závorek byl vtipem jen napůl. Zkusil si někdo napsat, jak by Lisp vypadal, kdyby místo závorek měl odsazení jako Python?
Název: Re:Nim
Přispěvatel: okalousek 27. 09. 2020, 19:07:58
Asi Lisp bez závorek :-)

Ano ano. A také objektové assembly, funkcionální C a kompilovaný bash.

To vše je dnes možné, ale asi to moc vývojářů chtít nebude. Ten Lisp bez závorek byl vtipem jen napůl. Zkusil si někdo napsat, jak by Lisp vypadal, kdyby místo závorek měl odsazení jako Python?

Kód: [Vybrat]
print
  fact
    + 1 2
Název: Re:Nim
Přispěvatel: okalousek 27. 09. 2020, 19:28:50
Crystal je celkem revoluční, vysokoúrovňový kompilovaný jazyk s GC cílící na webové vývojáře, narozdíl od Go bez kompromisů v podobě chybějících featur.
No to mě docela přivedlo sem. Go má dost kompromisů v podobě chybějících věci
 Takže hledám a hledám a přivedlo mě to k Nimu, ale ten má zase problém s popularitou.
Název: Re:Nim
Přispěvatel: fortran1986 27. 09. 2020, 22:17:10
Zdravím. Vcelku nedávno jsem narazil na zajímavý programovací jazyk Nim. Syntax podobná Pythonu, rychlost se blíží k céčku (v porovnání s Pythonem rozhodně). Transpilace do C a JS, popřípadně C++ a ObjC (aby se daly pro ně psát knihovny/použít je?). Zajímavé syntaktické cukry. Problémem je že není moc rozšířený.

Co si o něm myslíte?

Neskúšal som ho ale vyzerázaujímavo (https://nim-lang.org/). Po Boo (https://github.com/boo-lang/boo/wiki/Language-Guide:-Functions) ďalší jazyk inšpirovaný python syntaxou.

Btw ďalší jazyk z tohto súdka je crystal ten je pre zmenu inšpirovazný jazykom Ruby: https://crystal-lang.org/ a tiež sa kompiluje do C.

Tých jazykov je už naozaj veľa, ale vačšina z nich ide len cestou evolúcie. Ich autori sú málo odvážni na to aby priniesli niečo nové nejaké revolučné myšlienky úplne iný nový revolučný spôsob vývoja.
Zajímalo by mě, co si představujete pod Revolučním programovacím jazykem

Jazyk alebo technológia, ktoré prinášajú úplnú zmenu v myslení, alebo v prístupe k vývoju softwaru. Príklady:

- Smalltalk, alebo ešte revolučnejšiu Self (vývojové prostredie, image, posielanie správ, prototypové OOP, sloty a reflexia).

- Erlang ktorý priniesol actory

- Veľmi revolučná zmena bolo aj vizuálne a komponentové programovanie, ktoré v sebe skombinovalo Delphi. Delphi je už síce (polo)mŕtve, ale komponentové a aj vizuálne programovanie stále žije. Taký Unreal Engine 4 je celý postavený na jadnej strane na komponentách a na druhej strane na Actoroch a kód sa dá napísať buď v editore, alebo naklikať myškou (Blueprints) vo vizuálnom návrháre (ja som konzervatívny prefereujem to písanie kódu v C++). Rovnako tak aj JS frameworky ako React a VUE sa inšpirovali komponentovým prístupom, ale pridali k tomu ešte reaktivitu a objektovú paradigmu vymenili za funkcionálnu.

- A ďalšia veľká revolačná zmena v programovaní bude podľa mňa živé programovanie - live coding. Nedávno som videl demo video a bolo to úchvatné... Niečo na štýl HMR z webpacku, ale omnoho pokročilejšie. Na jednej obrazovke ste písali kód a na druhej ste pozorovali živé zmeny úpkne bez ukladania. Žiaľ názov tej technológie si už nepamatám.
Název: Re:Programovací jazyk Nim
Přispěvatel: okalousek 27. 09. 2020, 23:03:11
To je pravda. Smalltalk (Self) byly hodně inovátorské. Ale z těchto revolučních věcí si často jiné jazyky berou jen něco. Typický příklad C++ který na sebe nabalil asi všechna paradigmata která kdy kdo vymyslel i nevymyslel.
Nim, na druhou stranu umí toto
Kód: [Vybrat]
stdout.write "Your name: "
stdout.write("Your name: ")
write(stdout, "Your name: ")
write stdout, "Your name: "

sth.sayHello()
sth.say_hello()
say_hello(sth)
say_hello sth
# ...

Takže spíše evoluce.
Název: Re:Programovací jazyk Nim
Přispěvatel: Ink 28. 09. 2020, 13:13:15
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
Název: Re:Programovací jazyk Nim
Přispěvatel: okalousek 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.
Název: Re:Programovací jazyk Nim
Přispěvatel: Ink 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í.
Název: Re:Programovací jazyk Nim
Přispěvatel: Google CTCCTCGGCGGGCACGTAG 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.
Název: Re:Programovací jazyk Nim
Přispěvatel: okalousek 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?
Název: Re:Programovací jazyk Nim
Přispěvatel: okalousek 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é...
Název: Re:Programovací jazyk Nim
Přispěvatel: Ink 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.
Název: Re:Programovací jazyk Nim
Přispěvatel: Ink 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.
Název: Re:Programovací jazyk Nim
Přispěvatel: Google CTCCTCGGCGGGCACGTAG 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.
Název: Re:Programovací jazyk Nim
Přispěvatel: registrovany_ava 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.
Název: Re:Programovací jazyk Nim
Přispěvatel: Ink 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šší.
Název: Re:Programovací jazyk Nim
Přispěvatel: Google CTCCTCGGCGGGCACGTAG 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.
Název: Re:Programovací jazyk Nim
Přispěvatel: Ink 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.
Název: Re:Programovací jazyk Nim
Přispěvatel: Google CTCCTCGGCGGGCACGTAG 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.
Název: Re:Programovací jazyk Nim
Přispěvatel: Ink 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.
Název: Re:Programovací jazyk Nim
Přispěvatel: okalousek 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šší.
Název: Re:Programovací jazyk Nim
Přispěvatel: okalousek 28. 09. 2020, 22:04:43
Oprava faktoriálu:
Kód: [Vybrat]
(1..=3).product(); // 6

Samozřejmě, také vsázím na Rust. Asi hlavně kvůli WASM. Ať se to komu líbí či nelíbí, s webovými aplikacemi si ještě užijeme
Název: Re:Programovací jazyk Nim
Přispěvatel: Google CTCCTCGGCGGGCACGTAG 28. 09. 2020, 22:45:20
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.

ok, asi mas pravdu, nebudu se vic hadat. Jen k tomu prvnimu bodu, v Pythonu 3.10 ma byt https://www.python.org/dev/peps/pep-0622/
Název: Re:Programovací jazyk Nim
Přispěvatel: MiKu 29. 09. 2020, 00:20:15
Tak Nim je to už poměrně dost dlouhou a nedávno došli k 1.0. Takže je to použitelné v produkci. Je to takový mix C, Pythonu, LISPu.
Fajn je kompilace i do JS, ale bohužel nezvládají es moduly, takže bohužel s dnešním moderním js frontendem si to moc neporozumí.
Osobně si myslím že dál už moc neporoste, spíš bude stagnovat. Je to podle mě právě tím, jaký je to mix všeho možného, prostě moc univerzální a tím pádem složité.

Poslední dobou jsou tu zajímavější věci

vlang  - https://vlang.io. Autor nasliboval neskutečné věci jako self hosted kompilátor, který je navíc super rychlý, polezou z něj ultra mini binárky atd. a dostal čočku za výmysly. Nejdřív totiž ani nebyly zdrojáky. Když to vylezlo ven, tak je to spíš takové alfa verze. Nicméně v json serializaci jeho http server vytřel celkem všem zrak - https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=json. Tím začátkem to ale celkem pohnojil a už asi nemá moc šanci.

Co se mi ale poslední dobou nejvíc líbí je zig - https://ziglang.org. Ten se jen snaží udělat prostě lepší Cčko pro systémové programování a jde na to dost dobře. Není tam snaha tahat nic z C++, Rustu ... atd. Žádný GC jako v Go, to prostě do systémového programování nepatří. Dokonce se snaží zbavit maker! Je sám o sobě C kompilátorem a dokonce je oficiálně právě v NIMu podporovaný jako C kompilátor. Využívá moderní LLVM a kompiluje tak i do wasm. Vůbec další zajímavé věci.
Ale cesta k verzi 1.0 bude dost dlouhá, tak uvidíme :-)
Název: Re:Programovací jazyk Nim
Přispěvatel: kozzi11 29. 09. 2020, 13:21:19
Zdravím. Vcelku nedávno jsem narazil na zajímavý programovací jazyk Nim. Syntax podobná Pythonu, rychlost se blíží k céčku (v porovnání s Pythonem rozhodně). Transpilace do C a JS, popřípadně C++ a ObjC (aby se daly pro ně psát knihovny/použít je?). Zajímavé syntaktické cukry. Problémem je že není moc rozšířený.

Co si o něm myslíte?

Tak kdysi jsem ho zkousel a ackolvi me na nem par veci zaujalo tak celkovy dojem nebyl nic extra. Je hodne citit ze neni prilis popularni a ma minimalni komunitu. Me osobne mnohem vice vyhovuje Dlang (jazyk D)
Název: Re:Nim
Přispěvatel: jb101 29. 09. 2020, 14:48:54
- A ďalšia veľká revolačná zmena v programovaní bude podľa mňa živé programovanie - live coding. Nedávno som videl demo video a bolo to úchvatné... Niečo na štýl HMR z webpacku, ale omnoho pokročilejšie. Na jednej obrazovke ste písali kód a na druhej ste pozorovali živé zmeny úpkne bez ukladania. Žiaľ názov tej technológie si už nepamatám.
Lisp, Smalltalk, Erlang.
Název: Re:Programovací jazyk Nim
Přispěvatel: okalousek 29. 09. 2020, 17:04:47
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.

Jedno slovo: Relm