Přechod z Javy na Rust. Ano či ne?

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #75 kdy: 23. 09. 2025, 15:06:47 »
v ale C++ může být kdekoliv

I když v Rustu máte unsafe blok, tak nedefinované chování může vzniknout mimo něj, dokonce ten unsafe kód může být i v pořádku (bug bude potřeba opravit v safe části).


Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #76 kdy: 23. 09. 2025, 15:48:17 »
To je ale logické, že bug v unsafe kódu má vliv i na safe kód a platí to pro jakýkoliv programovací jazyk.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #77 kdy: 23. 09. 2025, 15:52:32 »
To je ale logické, že bug v unsafe kódu má vliv i na safe kód a platí to pro jakýkoliv programovací jazyk.

Ale je to i naopak. Bug v safe kódu způsobí nedefinované chování programu, i když unsafe kód je v pořádku (stačí, aby jen věřil, že safe kód dodrží nějaký invariant).

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #78 kdy: 23. 09. 2025, 16:15:39 »
Rád bych se zeptal, co Vás nejvíce zdržuje při porovnání programování v Java/C#/PHP oproti Rustu? Je to čtení kódu, odlišná syntaxe Rustu, odlišnost přístupu k přísným datovým typům (im/mutability) Rustu, neexistující knihovny, automatické doplňování kódu v IDE (jaké nástroje používáte? VS Code nebo JetBrains RustRover etc.) nebo ještě něco jiného? Rád bych totiž našel řešení, jak zrychlit vývoj v Rustu oproti Java/C#/PHP a hlavně oproti C++ tak, aby to bylo obráceně: přinejmenším Java/C#/PHP = 2 jednotky času oproti Rust = 1 jednotka času. Ale rád bych dosáhl poměr 1:10 ve prospěch Rustu. Bylo by to reálné? Třeba i s popmocí A.I.?

Předem díky za odpověď,
nm
A proč by to mělo jít? Proč by ty vylepšení měly jít použít jenom v Rustu a ne i v těch ostatních jazycích?
V Rustu za absenci GC platíš složitější architekturou kódu.
Pokud by šlo v Rustu psát všechno rychlejí než v Javě/C# a zároveň by to pak běželo rychleji a žralo míň paměti, nebyl by (skoro) žádný důvod je použít.

To je pravda. Pokud by to šlo i v ostatních jazycích, byla by to naprostá bomba. Možná se toho dočkáme s pomocí AI, kdo ví? Také je jasné, že o volbě jazyka většinou rozhoduje vývojář na základě zadání projektu.

Důvod, který mě táhne k Rustu je, že se jedná o poměrně nový jazyk, jež není ještě tak probádaný, jako je Java nebo C++. Zatím se zajímám především o programovací techniky. Hledám jazyk, který splňuje právě citované vlastnosti, tedy: rychlost a jednoduchost vývoje, rychlý běh výsledného programu, malá paměťová náročnost.

BoneFlute

  • *****
  • 2 065
    • Zobrazit profil
Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #79 kdy: 23. 09. 2025, 16:56:03 »
v ale C++ může být kdekoliv

I když v Rustu máte unsafe blok, tak nedefinované chování může vzniknout mimo něj, dokonce ten unsafe kód může být i v pořádku (bug bude potřeba opravit v safe části).

Jde o to utahování šroubů.

Když mi v Rustu spadne aplikace na panic, tak jdu hledat konkrétní věci: přiznané panic, a unsafe.
V C++ když mi spadne aplikace na panic, tak musím hledat úplně všude.
Já to považuji za výrazné zlepšení situace.


BoneFlute

  • *****
  • 2 065
    • Zobrazit profil
Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #80 kdy: 23. 09. 2025, 17:04:00 »
Jaká je rychlost kódování v Rustu oproti C/C++. Máte někdo již dlouhodobější zkušenost? A co generování částí kódu Rustu pomocí AI?
Tu samou věc, kterou bych napsal v Java/C#/PHP za jednotku času, napíšu v Rustu za dvě jednotky času. (Proti C/C++ bohužel nemohu sloužit, je to už dlouho.)
LLM pomáhá hodně, používám. Ne celé aplikace, ale části a hledání problému ano. (Ale tam je to asi nepřenosné, vzhledem k tomu, jak kdo používá LLM jakým způsobem.)

Rád bych se zeptal, co Vás nejvíce zdržuje při porovnání programování v Java/C#/PHP oproti Rustu? Je to čtení kódu, odlišná syntaxe Rustu, odlišnost přístupu k přísným datovým typům (im/mutability) Rustu, neexistující knihovny, automatické doplňování kódu v IDE (jaké nástroje používáte? VS Code nebo JetBrains RustRover etc.) nebo ještě něco jiného? Rád bych totiž našel řešení, jak zrychlit vývoj v Rustu oproti Java/C#/PHP a hlavně oproti C++ tak, aby to bylo obráceně: přinejmenším Java/C#/PHP = 2 jednotky času oproti Rust = 1 jednotka času. Ale rád bych dosáhl poměr 1:10 ve prospěch Rustu. Bylo by to reálné? Třeba i s popmocí A.I.?

Předem díky za odpověď,
nm

Ne, není to reálné.

Java/C#/PHP používá GC. Což z principu znamená, že i když je Rust naprosto famózní v usnadňování věcí, tak některé situace prostě musíte explicitně rozhodnout. Takže vždycky to bude Java/C#/PHP 1jednotka, Rust 2jednotky, C/C++ cca 20jednotek.

Ano, je sice pravda, že je řada věcí, které musíte rozhodnout v Rustu i v Javě, či v C, ale to ve výsledné rovnici ničemu nepomůže. (Pokud se bavíme o rychlosti vývoje.)

Stojí za zmínku, že Rust díky své filozofii funguje tak, že většinu chyb odchytíte v compile-time, což přináší trochu ceny, zatímco u Java/C++ většinu chyb odchytě v client-time, což znamená, že tu cenu zaplatíte později. Je to podobný efekt jako psaní automatických testů.

LLM tomu moc nepomůže, protože ta dokáže poradit jak v Rustu tak v Javě. Ačkoliv, jak nad tím přemýšlím, mohlo by mít efekt, že Rust je one-way, takže třeba jo. Neodvažuji se posoudít.

BoneFlute

  • *****
  • 2 065
    • Zobrazit profil
Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #81 kdy: 23. 09. 2025, 17:11:25 »
Pokud by šlo v Rustu psát všechno rychlejí než v Javě/C# a zároveň by to pak běželo rychleji a žralo míň paměti, nebyl by (skoro) žádný důvod je použít.

No, v Rustu ti to poběží levněji a rychleji než v Javě a C#.
Aby si něco napsal v Javě/C#, tak ti stačí levnější vývojář.
Psát desktopové aplikace v Javě byla vždycky bolest. V C# je to snesitelnější ale stejně je to vždycky obluda.

BoneFlute

  • *****
  • 2 065
    • Zobrazit profil
Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #82 kdy: 23. 09. 2025, 17:17:11 »
Hledám jazyk, který splňuje právě citované vlastnosti, tedy: rychlost a jednoduchost vývoje, rychlý běh výsledného programu, malá paměťová náročnost.

To by mohlo odpovídat.

Mí favoriti byl Haskell a Rust.

Haskell má lepší vyjadřovací schopnosti. Ale vývoj je přeci jen pomalejší, a člověk tomu musí přeci jenom trochu rozumět.
Rust má stále nadprůměrné vyjadřovací schopnosti a přitom je ještě dostatečně jednoduchej. A navíc svižnej a subtilní.
Citované vlastnosti by splňoval i golang. Ale ten nemá záruky, což mě už přišlo hodně líto.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #83 kdy: 23. 09. 2025, 22:39:51 »
Psát desktopové aplikace v Javě byla vždycky bolest. V C# je to snesitelnější ale stejně je to vždycky obluda.

V takom Swingu v Jave ide písať desktopové aplikácie dosť komfortne. Horšie je sa však na ne pozerať. Ešte som skúšal QT, aj to išlo fajn. (S patričnými obmedzeniami na jeden OS)

CHe

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #84 kdy: 23. 09. 2025, 23:08:35 »
Čo sa týka desktopových aplikácií napísaných v Jave, dlhoročne používam Netbeans a JOSM, obe fungujú bez zásadnejších problémov a nemám problém sa na ne pozerať.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #85 kdy: 23. 09. 2025, 23:50:14 »
Psát desktopové aplikace v Javě byla vždycky bolest. V C# je to snesitelnější ale stejně je to vždycky obluda.

V takom Swingu v Jave ide písať desktopové aplikácie dosť komfortne. Horšie je sa však na ne pozerať. Ešte som skúšal QT, aj to išlo fajn. (S patričnými obmedzeniami na jeden OS)

Současný UI toolkit pro javu je JavaFX. Programuje se v tom krásně a aplikace vypadají dobře. Škoda jen, že přišlo JavaFX dost pozdě a že se dnes dělá vše spíš pomocí webových technologií. I ty ale dokonvergovaly do rozumné svaté trojice většiny moderních UI knihoven - tj. 1. markup pro popis UI + 2. stylovací engine pro definici vzhledu + 3. objektový jazyk pro popis funkčnosti a obsluhu událostí.

Jinak souhlas předřečníky, že prog. jazyky je potřeba přidávat do portfolia svých dovedností nikoli je nahrazovat. Typicky dnes ovládá vývojář několik jazyků a celou škálu technologií.

BoneFlute

  • *****
  • 2 065
    • Zobrazit profil
Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #86 kdy: Dnes v 00:10:53 »
Čo sa týka desktopových aplikácií napísaných v Jave, dlhoročne používam Netbeans a JOSM, obe fungujú bez zásadnejších problémov a nemám problém sa na ne pozerať.

Tak v tomto se rozhodně neshodnem.


Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #87 kdy: Dnes v 08:12:58 »
Pokud by šlo v Rustu psát všechno rychlejí než v Javě/C# a zároveň by to pak běželo rychleji a žralo míň paměti, nebyl by (skoro) žádný důvod je použít.

No, v Rustu ti to poběží levněji a rychleji než v Javě a C#.
Aby si něco napsal v Javě/C#, tak ti stačí levnější vývojář.
Psát desktopové aplikace v Javě byla vždycky bolest. V C# je to snesitelnější ale stejně je to vždycky obluda.

Ja by som povedal, že na rýchlosť 95% aplikácií nemá absolútne žiaden vplyv použitý jazyk, ale či sú vhodne zvolené algoritmy a rýchlosť siete / databázy. Aj v C# sa dajú písať rýchle programy (predpokladám, že aj v jave, ale tou sa nezaoberám tak neviem), podľa mňa človek musí byť expert a musí ísť o nejaký špecifický problém, aby bolo potrebné kvôli výkonu napísať to v inom jazyku, ako c#. Aj tam existuje kompilácia vopred, aj kompilácia do binárky s odstránením nepotrebného kódu (aj keď pri tom treba istú disciplínu - nepoužívať reflexiu).

Ak sa vrátim k téme diskusie, tak pre hobby programátora, čo si doma programuje pre radosť je to úplne zbytočná debata (zdá sa, že je aj tak rozhodnutý), je jedno ako bude výsledok rýchly a koľko potrvá programovanie, tam stačí, že sa mu nejaký jazyk jedoducho páči a je to v poriadku. Je to na ňom, či sa mu príjemnejšie trávi čas nad krížovkami, alebo sudoku.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #88 kdy: Dnes v 08:20:30 »
Současný UI toolkit pro javu je JavaFX.
Ono je to složitější. JavaFX je modernější než Swing a původně ho měl nahradit. Pak ale Oracle JavaFX opustil (protože si Oracle obecně s desktopovou Javou neví rady, resp. s desktopovými aplikacemi vůbec…) a nyní JavaFX stojí na nepříliš velké komunitě. Takže jeho budoucnost není moc jistá. Naproti tomu Swing je stále součástí Javy a komunita kolem něj (včetně velkých a obřích firem) je tak velká, že o jeho budoucnost není potřeba se bát.

Pro nějaký hobby projekt je JavaFX dobrá volba, pokud by ale měla vzniknout nová desktopová aplikace psaná v Javě, u které by se očekávalo dlouhodobé použití, volil bych Swing.

Typicky dnes ovládá vývojář několik jazyků a celou škálu technologií.
No, typicky dnes vývojář píše v několika jazycích. Do jaké míry je doopravdy ovládá už je různé.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #89 kdy: Dnes v 12:51:26 »
Rust ale vytvořili právě lidi, co už měli C++ plné zuby, že jo :)

Neštudoval som to, je to možné. Čo je ale isté, z komunity programátorov v C++ tí ľudia tvorili iba mizivé percento. Vlastne skôr asi mizivé promile.

A po desiatich rokoch Rust používa stále 5 až 10-krát menej programátorov ako C++ a hlavne, počet programátorov v C++ sa nezmenšuje. Naopak.

Nebol by som vôbec prekvapený, keby to bolo tak, že každý, kto chcel z C++ prejsť na Rust, už na Rust prešiel. S C++26 a ďalšími na to bude stále menej a menej dôvodov.

Je to zatím jediný jazyk, který umožňuje napsat to co v C++, ale naprosto safe, a jazyk, který se dostává do různých projektů, právě kvůli jeho kvalitám. To zatím žádný jiný jazyk nenabídl.

Keby to s tým safe aj bola pravda, je zrejmé, že absolútna bezpečnosť nie je najdôležitejšia priorita. A to ani pre regulátorov.

A navíc rust má i built-in package management, takže žádné ohavnosti typu vcpkg nebo conan. A žádný cmake!

Mať všetko integrované v jednom jazyku tiež očividne nie je priorita. Veci dosť dobre fungujú aj bez toho.

Mne vôbec neprekáža, keď funkcie clang-tidy nie sú integrované v jazyku. Nie je žiadna veľká práca spustiť ďalší program na zistenie ako kód vyzerá z hľadiska bezpečnosti. To sa týka všetkých nástrojov. O jedno automatizované spustenie viac alebo menej, koho to vo svete vývoja softvéru zaujíma? Inak, už minimálne dekádu vlastne ani nie je nutné niektoré tieto nástroje spúšťať samostatne, veď analýza prebieha už počas písania kódu a výsledky sú zobrazené priamov editore.

Čo sa týka toho ostatného, je zaujímavé, že vo svete Linuxu sa hovorí, že mať na výber niekoľko možností je veľká výhoda. Ale ako náhle sa jedná o Rust a C++, tak všetko musí byť integrované a to, že si v C++ človek môže vybrať niekoľko systémov na zostavenie alebo na správu balíčkov je neprekonateľná prekážka. Našťastie iba pre určitú sortu ľudí.