C++ vs Rust

C++ vs Rust
« kdy: 20. 03. 2020, 10:36:43 »
Jeden programator ma primel k tomu aby som sa pozerl na zubky Rustu. Zatial som ten jazyk pozeral len povrchne (podla tutorialu) takze reagujem na moje prve dojmy. Vyzera to ako jazyk, ktory som vzdy chcel a ktory riesi presne tie problemy, ktore som cakal od dokonaleho jazyka (je to multiparadigmaticky jazyk da sa v tom programovat funkcionalne, je to vhodne na rychly vyvoj aplikacii, zaroven je to ale aj dostatocne low level, generuje to nativny kod, ma to "objektovy model" na styl Go (aspon teda moj prvy dojem je taky) neni to zavisle na ziadnom behovom prostredi) a vybera to najlepsie z imperativnych a funkcionalnych jazykov.

No napriek tomu je ten jazyk velmi sterilny ba az trosku nudny, neponuka nic moc zaujimave, takych jazykov v sa poslednej dobe objavilo viacero (Kotlin, Go, Ceylon, Swift, Scala) a vsetky su ako cez kopirak, vsetky vykradaju z jednej strany C a C++ a z druhej strany stare dobre OCAML, ktore sa snazia priblizit sirokym masam.

Na C++ sa mi paci ze si proste ide vlastnou cestou, ze sa tam da vyhrat s detailami, ze nekopiruje ostatne jazyky, ale ostatne jazyky kopiruju C++. C++ je jazyk ktory ma DUSU a bohaty ekosystem aky vo svete nema paru, v C++ sa da  optimalizovat do aleluja. Tieto nove wannabe dokonale ultimatne jazyky nie su v nicom moc preborne, ani originalne neustale mam z nich pocit dejavu.

Rust si u mna urcite najde uplatennie, no napriek tomu nemam pocit ze by to bol ten jazyk, ktory zosadi z tronu C/C++ ale pripustam ze sa mozem mylit. Aky je vas nazor? Nahradi Rust C++? Alebo tu snami tato nehynuca klasika ostane az do konca vekov?


Re:C++ vs Rust
« Odpověď #1 kdy: 20. 03. 2020, 11:28:57 »
Rust si u mna urcite najde uplatennie, no napriek tomu nemam pocit ze by to bol ten jazyk, ktory zosadi z tronu C/C++ ale pripustam ze sa mozem mylit. Aky je vas nazor? Nahradi Rust C++? Alebo tu snami tato nehynuca klasika ostane az do konca vekov?
C++ tu zůstane stejně jako tu zůstal Cobol a Fortran. Už jen proto, že v něm máme člověko-staletí až člověko-tisíciletí existujícího kódu. Ten kód nikdo přepisovat nebude, protože to nikdo nezaplatí.

Rust si určitě uplatnění najde ale žádné sesazování z trůnu nebude. A něco z něho zpětně probublá i do nových verzí C++, které asi jako jediné mají šanci nahradit to současné C++.

Ink

  • *****
  • 671
    • Zobrazit profil
    • E-mail
Re:C++ vs Rust
« Odpověď #2 kdy: 20. 03. 2020, 11:31:02 »
Jeden programator ma primel k tomu aby som sa pozerl na zubky Rustu. Zatial som ten jazyk pozeral len povrchne (podla tutorialu) takze reagujem na moje prve dojmy. Vyzera to ako jazyk, ktory som vzdy chcel a ktory riesi presne tie problemy, ktore som cakal od dokonaleho jazyka (je to multiparadigmaticky jazyk da sa v tom programovat funkcionalne, je to vhodne na rychly vyvoj aplikacii, zaroven je to ale aj dostatocne low level, generuje to nativny kod, ma to "objektovy model" na styl Go (aspon teda moj prvy dojem je taky) neni to zavisle na ziadnom behovom prostredi) a vybera to najlepsie z imperativnych a funkcionalnych jazykov.

No napriek tomu je ten jazyk velmi sterilny ba az trosku nudny, neponuka nic moc zaujimave, takych jazykov v sa poslednej dobe objavilo viacero (Kotlin, Go, Ceylon, Swift, Scala) a vsetky su ako cez kopirak, vsetky vykradaju z jednej strany C a C++ a z druhej strany stare dobre OCAML, ktore sa snazia priblizit sirokym masam.

Na C++ sa mi paci ze si proste ide vlastnou cestou, ze sa tam da vyhrat s detailami, ze nekopiruje ostatne jazyky, ale ostatne jazyky kopiruju C++. C++ je jazyk ktory ma DUSU a bohaty ekosystem aky vo svete nema paru, v C++ sa da  optimalizovat do aleluja. Tieto nove wannabe dokonale ultimatne jazyky nie su v nicom moc preborne, ani originalne neustale mam z nich pocit dejavu.

Rust si u mna urcite najde uplatennie, no napriek tomu nemam pocit ze by to bol ten jazyk, ktory zosadi z tronu C/C++ ale pripustam ze sa mozem mylit. Aky je vas nazor? Nahradi Rust C++? Alebo tu snami tato nehynuca klasika ostane az do konca vekov?

Zatim jeste zadny vetsi jazyk uplne neumrel, takze ani C++. Ale vsimni si, kdo Rust ted pouziva: Google, Facebook, Amazon, Apple... Asi k tomu bude duvod, ten jazyk nema duveru omylem.

Neni pravda, ze C++ si nebere inspiraci jinde, naopak se do nej dostavaji veci, ktere prisly z jinych jazyku. A zaroven, jakkoliv treba Rust ma nejake principy prevzate z C++ (zero cost abstractions, RAII), nektere veci z C++ zamerne neprebral - nema OOP v tom smyslu, jak se bezne chape, nema templaty, ale ma typy vyssich radu a makra. A podobne to maji i jine jazyky - C++ pro ne neni nedostizny vzor, ale spis (v necem) priklad, jak neco nedelat (subjektivni, jasne).

A co se tyce optimalizaci, Rust ma s C++ myslim dost vyrovnane vysledky, kompilator v release buildech dela hodne drsne optimalizace, jazyk je dost blizko zelezu, takze muzes spoustu veci ovlivnit (pro lepsi praci s cache apod.).

Zaverem by me zajimalo, proc Ti prijde Rust nudny a sterilni. Tam je spousta veci jednak pomerne originalnich, jednak hodne pokrocilych a narocnych na pochopeni. Musis vyhovet borrow checkeru a nebojovat s nim, kdyz se to naucis, spousta veci jde sama. A nektere veci musis strukturovat vyrazne jinak, nez treba v C++ prave proto, ze Rust ma v necem tvrdou palici. Ale sterilni a nudny? To ani omylem! Zkus si poradne pohrat s makry, traity apod., je to dobrodruzstvi a ma to stavu.

Re:C++ vs Rust
« Odpověď #3 kdy: 20. 03. 2020, 19:05:01 »
Promiň, ale kdo nekóduje jako prase Rust nepotřebuje.

Ink

  • *****
  • 671
    • Zobrazit profil
    • E-mail
Re:C++ vs Rust
« Odpověď #4 kdy: 20. 03. 2020, 19:52:03 »
Promiň, ale kdo nekóduje jako prase Rust nepotřebuje.

Doporucuju treba tuhle cetbu: https://dropbox.tech/infrastructure/rewriting-the-heart-of-our-sync-engine


Re:C++ vs Rust
« Odpověď #5 kdy: 21. 03. 2020, 11:44:23 »
Jemně skočím do diskuse. V C/C++ jsem před drahnou dobou dělal, snad až na výjimky používá většina jazyků "C-based syntaxi". Nevím, jaký je stav dnes, ale tenkrát to bylo "kdo pochopí pointery, tak pochopil C".
Co mě od C/C++ zcela odradilo je potřeba používat dalších x "jazyků" (autotools), kvůli knihovnám, respektive, aby bylo možné dynamicky vygenerovat makefile, a rozumně distribuovatelným zdrojákům. Rust jsem uvítal, protože Cargo je úžasně triviální. V Go je to stejné. Jasně, můžeme nadávat na staticky slinkovaný velký blob, ale nemyslím si, že velikost disků je dnes problém a nemusí se jeden bát, že se program rozpadne, protože autor třeba pozměnil API knihovny.

Ink

  • *****
  • 671
    • Zobrazit profil
    • E-mail
Re:C++ vs Rust
« Odpověď #6 kdy: 21. 03. 2020, 12:31:12 »
Jemně skočím do diskuse. V C/C++ jsem před drahnou dobou dělal, snad až na výjimky používá většina jazyků "C-based syntaxi". Nevím, jaký je stav dnes, ale tenkrát to bylo "kdo pochopí pointery, tak pochopil C".
Co mě od C/C++ zcela odradilo je potřeba používat dalších x "jazyků" (autotools), kvůli knihovnám, respektive, aby bylo možné dynamicky vygenerovat makefile, a rozumně distribuovatelným zdrojákům. Rust jsem uvítal, protože Cargo je úžasně triviální. V Go je to stejné. Jasně, můžeme nadávat na staticky slinkovaný velký blob, ale nemyslím si, že velikost disků je dnes problém a nemusí se jeden bát, že se program rozpadne, protože autor třeba pozměnil API knihovny.

Souhlas, řešení závislostí a tooling obecně, to je dnes základ. A souhlasím i s tím blobem - v mnoha situacích je to jedno; Gitea stáhnu a jede a víc mě nezajímá. Velikost binárek Rustu se dá zčásti řešit, pracuje se na tom, ale obyčejně to fakt není problém. Co mi trochu vadí je skutečnost, že všechny závislosti pro každý Rust projekt se kompilují zvlášť, ale v reálné praxi to nepřekáží.

Re:C++ vs Rust
« Odpověď #7 kdy: 21. 03. 2020, 12:36:51 »
C/C++ Vás žádné další jazyky používat nenutí, naopak máte volnou ruku vybrat si takový systém, jaký Vám (a projektu) vyhovuje. Jsou k dispozici i build systémy s balíčky (ve stylu Cargo, Npm, ...), například Bake je výborný.

Vaše poznámka o velikosti disků ignoruje realitu, že drtivá většina instalací Linuxu a softwaru kolem není na desktopu, ale v embedded zařízeních, kde ano, každý zbytečný MB hodně bolí.

Ink

  • *****
  • 671
    • Zobrazit profil
    • E-mail
Re:C++ vs Rust
« Odpověď #8 kdy: 21. 03. 2020, 12:42:32 »
C/C++ Vás žádné další jazyky používat nenutí, naopak máte volnou ruku vybrat si takový systém, jaký Vám (a projektu) vyhovuje. Jsou k dispozici i build systémy s balíčky (ve stylu Cargo, Npm, ...), například Bake je výborný.

Vaše poznámka o velikosti disků ignoruje realitu, že drtivá většina instalací Linuxu a softwaru kolem není na desktopu, ale v embedded zařízeních, kde ano, každý zbytečný MB hodně bolí.

No jo, ale tady nejde o MB:

Have you used cargo-strip from cargo-binutils ? When compiling my binaries where 500k in size for debug mode and 25-26k in release. When using cargo-strip, it got reduced down to 5-6k.

Zdroj: https://www.reddit.com/r/rust/comments/be5460/embedded_executable_size_when_using_no_std_alloc/