Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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?
-
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.
-
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
-
A co haxe.org ? dá se to zkomplikovat snad do úplně všeho a sem tam o tom něco i zaslechnu...
-
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 :-)
-
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.
-
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/)
-
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í.
-
Asi Lisp bez závorek :-)
Ano ano. A také objektové assembly, funkcionální C a kompilovaný bash.
-
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?
-
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?
print
fact
+ 1 2
-
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.
-
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.
-
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
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.
-
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
-
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.
-
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í.
-
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.
-
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?
-
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é...
-
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.
-
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.
-
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.
-
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.
-
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šší.
-
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.
-
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.
-
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.
-
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.
-
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.
(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šší.
-
Oprava faktoriálu:
(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
-
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/
-
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 :-)
-
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)
-
- 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.
-
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