Rust editions nestačí? Mně přijde, že zrovna Rust je v tomhle už dost v pohodě.
Zde odkaz pro neznalé: https://doc.rust-lang.org/edition-guide/editions/index.html
29. 10. 2021, 11:49 editováno autorem komentáře
Jo, rozbily se např. optimalizace (restrict), protože byl bug v LLVM, pak si mysleli, že to opravili, tak je v Rustu povolili, aby je následně zase zakázali. Takovéto detaily, které se navíc obtížně sledují, nejsou úplná vzácnost.
Časem si to snad sedne, jako u Swiftu, tam taky trvalo dlouho, než jej stabilizovali.
Jedna regrese v kompileru nám teď prakticky znemožnila sestavit rozsáhlejší projekt používající Axum framework :)
Rust je super, ale občas trochu divočina a zvolit ho jako primární jazyk pro komponenty ve firmě vede kromě nesporných výhod i k nutnosti přispívat do upstream knihoven víc než jinde, a mít v teamu někoho kdo se vyzná v kódu rustc je celkem dobrý nápad.
Ten problém v rustc existoval od začátku existence Axum (a projevoval se v menší mířé i v jiných knihovnách s komplexními typy)
Celou dobu se na to používaly workaroundy, ale 1.56 to rozbil úplně.
Jasně, není to zas až takový problém, ale ve chvíli kdy to nastane, je docela otrava řešit to, hledat jestli je chyba v kódu… V o něco dospělejších jazycích bych tolik nezvažovala výhodu mít v teamu vývojáře co se umí vrtat v kompileru :)
A nijak tím nehaním Rust, jen je prostě potřeba počítat s občasným výskytem trochu otravnějších regresí než jinde. I tak si za svou volbou jazyka na celý backend stojíme :)
Go má jednoduchou a pragmatickou syntax. Z Rustu bolí oči (což ovšem nijak nesnižuje výhody a sofistikovanost jeho překladače). Lepší hnusná syntax a zajímavá implementace pod kapotou než naopak (looking at you, Java). Druhá věc je, že Rust nemá runtime (a jeho autoři se tím dokonce chlubí), jejich přístup “it’s a feature” není úplně přesvědčivý. Ovšem Rust se živelně vyvíjí, co není, může záhy být.
Jenže proč má Go jednoduchou syntax? Protože ten jazyk nic moc neřeší, je to o malý kousek vylepšené C (a v něčem IMO horší, viz ta někým zde zmiňovaná velká písmena pro public jména, to je fakt bizár). Proč má Rust složitou syntax? Protože toho ve skutečnosti řeší hodně. Já nevím, jestli by se dala vymyslet hezčí, ale mám za to, že se někdo fakt hodně snažil (a to je u Rustu myslím pravidlo) to navrhnout nejlíp, jak to vůbec jde.
Ale za mě toho flame waru bylo fakt dost. Rust a Go nejsou přímí konkurenti a že je každý z těch jazyků jiný, beru jako fakt.
30. 10. 2021, 11:13 editováno autorem komentáře
Go nic neřeší syntaxí, ale runtimem, ten je dost komplexní (a sofistikovaný). Syntax Rustu není složitá, jen hnusná. Rust je celkově jednoduchý a jediná zajímavá věc, se kterou přišel, je borrow checker (a ten je natolik výrazný, že zastiňuje vše ostatní). Rust je super všude, kde není potřeba (nebo by překážel) tracing GC, ale má pár zádrhelů, o kterých je nutné při jeho používání vědět (taky pár vyhod, o kterých se na rozdíl od bezpečné správy paměti nemluví). BTW až bude gRPC v Rustu aspoň stejně rychle jako v Go, dejte mi vědět :)
Vedle zmiňuješ makra a že se mají jazyky navzájem inspirovat. No tak se vývojáři Rustu inspirovali všude možně, akorát si z jazyka udělali další Swift, Scalu nebo D nebo nějaký další jazyk, který má "všechno". Já jsem spokojený a Ty ne, to se stane. Navrhuju udělat téma ve fóru a Rust tam můžeš vesele hejtovat, jsem zvědav.
gRPC? Třeba tady: https://www.reddit.com/r/grpc/comments/hv7h6i/grpc_bench_a_clear_objective_grpc_benchmark/
Tady další: https://www.nexthink.com/blog/comparing-grpc-performance/
30. 10. 2021, 13:55 editováno autorem komentáře
Já nevím, ale Fortran (moderní) je mnohem čitelnější, má spoustu featur přímo zabudovaných a kompilátory vyladěné. Spousta lidí v tom dělá, právě proto, že stejně napsané výkonné C++ vyžaduje spoustu hnusných věcí v kódu (direktivy) a ruční práci. Komunita v poslední době hodně maká: https://lfortran.org/; https://github.com/fortran-lang/fpm; https://en.wikipedia.org/wiki/Coarray_Fortran
:) No asi lepší než MATLAB, ten do studentů rvou ještě víc. Ale zase z těch komerčních věcí mě mile překvapila Mathematica. Jinak jsem nedávno "sjížděl" APL, a člověk si říká kolik zajímavých jazyků se drží sice v šedé zóně, ale stále se používají. Na práci s poli ideální: https://problems.tryapl.org/ Na první pohled bordel, ale po chvíli cviku do dává smysl. Problém C++ je podle mě, jiného druhu. Tam se dají z historických důvodů psát věci různě a pořád se to nabaluje (decltype, enable_if, concepts...). Je težký držet jeden styl i napříč jedním projektem.
HAL jsem neznal, dík.
31. 10. 2021, 10:38 editováno autorem komentáře
Mně jednou Ruda Kryl říkal, že APL navrhli Američané schválně šíleně, aby ho podstrčili Sovětům (kteří Západu kradli technologie a vše možné kopírovali, vlastní výzkum byl zabrzděný ideologickým postojem, že kybernetika je buržoazní pavěda) za účelem způsobení chaosu ve vesmírném programu. Ale Iverson byl Kanaďan, tak nevím. Sověti se pak údajně pomstili vytvořením ještě šílenějšího jazyka, ale už si nevzpomenu na jméno.
To je asi o osobních preferencích, syntax Rustu mi přijde jako jedna z velkých výhod :D A stabilita a spolehlivost - porád platí že pokud se to zkompiluje, tak to prostě funguje.
To že to občas hapruje při kompilaci nám sice třeba v případě Axum ukradlo nějaký čas vývoje, ale zase nemusíme řešit spoustu jiných problémů, které Rust prostě nemá.