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

CHe

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #60 kdy: 22. 09. 2025, 21:48:21 »
Moje odpověď je rust, ale hodně firem použije na server věci prostě golang
To, na čo sa dá použiť golang, nie je normálne nika pre C/C++/Rust like jazyky, to už sa dá rovnako dobre spáchať aj v Jave (s komfortom a zázemím solídneho konzervatívneho ekosystému tvoreného príčetnými ľuďmi, na rozdiel trebárs od PHP/JS bordelu) alebo inom GC jazyku s tučným runtime. Sila tamtej trojice je práve tam, kde z rôznych dôvodov nie je vhodný fat GC runtime – námatkovo napr. firmvéry, systémový sw., ovládače, meranie a regulácia, signal processing, computer vision, low latency služby a pod.

Ono celá téma vlákna je dosť bizár, prechod z Javy na Rust je niečo ako prechod z C# na C, proste úplne iné svety adresujúce iné okruhy problémov a vyžadujúce do veľkej miery aj iné zručnosti.


Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #61 kdy: 22. 09. 2025, 22:01:00 »
Ono celá téma vlákna je dosť bizár, prechod z Javy na Rust je niečo ako prechod z C# na C, proste úplne iné svety adresujúce iné okruhy problémov a vyžadujúce do veľkej miery aj iné zručnosti.

Rust je vcelku vysokoúrovňový. Hodně se inspiroval ML jazyky a Haskellem. Osobně mi nepřijde o moc jiné psát v Rustu a F#. Moc nízkoúrovňových věcí v Rustu řešit nemusíte, pokud používáte standardní knihovnu. Občas je dokonce jednodušší psát v Rustu než v Javě, protože ta API v Rustu nejde použít špatně díky typovému systému.

Zrovna z C# do C je úplně něco jiného než z Javy do Rustu.

CHe

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #62 kdy: 22. 09. 2025, 22:33:39 »
Je to nízkoúrovňový jazyk už len čisto nutnosťou riešiť explicitne memory management, životnosť a ownership. Čo je niečo, čo v bežnej komplexnejšej biznis aplikácii, na ktorej vývoj nie je k dispozícii celý čas sveta, človek normálne riešiť nechce.

Rovnako ako opačne, nechcem GC runtime, keď píšem regulačnú slučku pre 48 MHz Cortex-M0 s 8k SRAM alebo modul do jadra.

BoneFlute

  • *****
  • 2 058
    • Zobrazit profil
Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #63 kdy: 22. 09. 2025, 22:55:59 »
Je to nízkoúrovňový jazyk už len čisto nutnosťou riešiť explicitne memory management, životnosť a ownership. Čo je niečo, čo v bežnej komplexnejšej biznis aplikácii, na ktorej vývoj nie je k dispozícii celý čas sveta, človek normálne riešiť nechce.

Rovnako ako opačne, nechcem GC runtime, keď píšem regulačnú slučku pre 48 MHz Cortex-M0 s 8k SRAM alebo modul do jadra.

Já bych si dovolil vám oponovat.

GC se píše kvůli pohodlnost vývojářů jazyka, nikoliv kvůli pohodlnosti uživatelů jazyka (zde trochu zjednodušuju).

Rust není nízkoúrovňový jazyk. Je to naopak vysokoúrovňový jazyk, který dokáže dělat aplikace s výkonem na úrovni C. Jazykové konstrukce, které máte v Rustu nemáte ani v C# ani v Javě ani v Pythonu. Prohlásit, že Rust je nízkoúrovňový jazyk může jen někdo, kdo nezkoušel přepínat mezi C#/Java a Rustem.

Ano, musíte řešit explicitně životnost a ownership. Což ale v praxi jednak není tak zlé, a druhak i v Javě musíte řešit paměť a souběhy.

Ostatně v tom je přesně ten problém Rustu, který s ním mají Céčkaři. Doteď všechny vysokoúrovňové jazyky za to platili nějakou cenu. Nejčastěji paměť a rychlost. To se s Rustem změnilo.

CHe

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #64 kdy: 22. 09. 2025, 23:15:49 »
Bežne prepínam medzi Javou a C, nejaké jednoduché počiny mám za sebou aj v Ruste a áno, benefity samozrejme vnímam. No predstava, že by som v ňom mal vyvíjať to, čo denne komerčne vyvíjam v Jave (s porovnateľnou efektivitou), nie je realistická. Tzn. s čiastkovými postrehmi viem súhlasiť, no celkovo sú to podľa mňa stále veľmi odlišné niky.


Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #65 kdy: Dnes v 05:34:42 »
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

a6b

  • ***
  • 144
    • Zobrazit profil
    • E-mail
Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #66 kdy: Dnes v 07:56:16 »
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

clovek musi mit syntaxi jazyka v krvi a musi uz mit neco za sebou v tom programovani, aby mohl fungovat v danem jazyce rychle t.j. za 1 jednotku casu :-)

to je zvyk, kterou syntaxi a ekosystem se clovek nejlepe nauci.
pouzivam copilota a dalsi ai na pomoc pri programovani, nemusim nejake veci vymyslet od zacatku, ale ai mi napise kostru a tu pak muzu upravovat, opravovat, ale zase musim vedet o co jde.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #67 kdy: Dnes v 12:31:11 »
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.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #68 kdy: Dnes v 12:32:49 »
Nemám čas, tak stručnejšie...

Jenže o vytlačování, ve smyslu že se C++ úplně přestane používat, tu pořád píšete jenom vy. Všichni ostatní píšou „Rust (částečně) nahazuje C++“ a myslí tím, že některé aplikace, které by se při neexistenci Rustu psaly v C++, se dnes píšou v Rustu.

Tak si to zrekapitulujme.

napríklad:

Na druhou stranu dobrá zpráva je, že pro nové aplikace není důvod již C++ používat.

alebo:

C++ jde nevyhnutelně ve špatné trajektorii a dnes už není moc důvod použít C++ na nový projekt - jsou mnohem lepší jazyky.

alebo:

Drbat se dnes s C++ prostě nestojí za to. U legacy kódu to chápu, ale u nového kódu ne.

To už je vyslovene neúctivé. K ľuďom, ktorí nové projekty v C++ začínajú. Keď ich začínajú a C++ je taký šmejd ako o ňom roztlieskávači Rustu píšu, tak predsa tí ľudia, ktorí si C++ vybrali, nemôžu byť normálni...

Podobne ako toto:

Lidi co říkají, že rust nenahradí C++ žijou ve vlastním omezeném světě.

Pritom je to úplne naopak. Svet C++ je oveľa rozsiahlejší ako svet Rustu. A stále sa rozširuje. Čo sa týka počtu programátorov, počtu projektov, počtu noviniek v jazyku, atď.

Takže moja odpoveď do toho celkom zapadá:

Teda vytlačenie C++ z nových, čiže odborne aj obchodne zaujímavých, projektov. Čo je samozrejme nemysel.

Rust a C++ sa v rámci svojej kategórie a toho, čo poskytujú, čiastočne prekrývajú. Takže je jasné, že sú do istej miery zastupiteľné. To predsa nikto nespochybňuje. Ale každý z nich má niečo, čo ten druhý nemá a situácia, že by jeden z nich získal všetko, čo má ten druhý a vytlačil ho, nikdy nenastane.

Dokážem si ale predstaviť, že ste prehliadli tú prvú vetu, kde je jasne definovaný rozsah.

Ďalej, čo sa toho "částečně" týka, tak v prvej zmienke o nahradení C++ Rustom žiadne "částečně" nebolo.

Že vy význam těch slov chápete jinak je sice hezké, ale když tu všichni ostatní používají význam odlišný od toho vašeho, mohl byste se přizpůsobit. Jinak se nedomluvíme. Nebo alespoň přestat pořád dokola opakovat, že ta cizí vyjádření s vaším významem slov nedávají smysl.

Možno je to tak, že skutočný význam slov nechápete vy. Keď sú bez prívlastku. Takže sa môžeme začať nekonečne dohadovať o tom, či keď sa povie nahradenie, myslí sa tým úplné alebo čiastočné. Z nejakého dôvodu ale prívlastok "čiastočne" existuje. A rozhodne nie je nadbytočný.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #69 kdy: Dnes v 12:44:25 »
Safety profiles a C++, dovolil by si sdílet tento link:

https://www.circle-lang.org/draft-profiles.html

Je to od člověka, který chtěl fakt C++ pomoct a udělal toho víc než všichni ti diskutující tady dohromady. Problém ale je, že C++ committee prostě nikdy nechce nic dobrého, a vždycky se jde cestou zmetků a věcí, které vývojáři nechcou.

To bol v podstate návrh nového jazyka, či skôr možno viacerých nových jazykov a o to nikto z tých, ktorí v tom majú peniaze, naozaj nestojí.

Kto si myslíte, že v tom "comittee" vlastne sedí? Že sú to ľudia z ulice bez akéhokoľvek vplyvu a bez zodpovednosti? Alebo iba akademici, ktorí nemajú v zdrojovom kóde investície za niekoľko dekád?

Takže bolo rozhodnuté, že sa pôjde cestou evolúcie a nie cestou vymazania histórie a začatia na zelenej lúke.

Pretože za to by niekto musel zaplatiť. A to si začali uvedomovať aj regulačné orgány, ktoré už nepožadujú, aby bolo všetko prepísané do Rustu.

V podstate to znamená, že cena za prechod na iný jazyk v takom veľkom rozsahu, či sa bavíme o prepísaní alebo iba pokračovaní v novom jazyku, je vyššia ako cena za prípadné problémy spôsobené bezpečnosťou, ktorá je iba dosť dobrá a nie perfektná. A k tomu, aby bola bezpečnosť dosť dobrá, C++ smeruje.

Ostatné záležitosti riešia certifikované procesy, kde mimochodom Rust stále zaostáva.

Čo sa jednotlivých programátorov týka, tak každý si môže vybrať jazyk ktorý mu vyhovuje. Pokiaľ v ňom samozrejme nájde prácu.

Je inak pozoruhodné, že ste sem vlepili rozhodnutie z minulého roku a nie rozhodnutia z tohto roku, ktoré veci značne posúvajú v prospech C++. A nemyslím si, že je málo pravdepodobné, že o nich neviete.

Na záver, ja sa nesnažím pomôcť C++. Ale tým, ktorí sa snažia zorientovať a dostávajú jednostranné informácie o tom ako je jeden jazyk úžasný a ako venovať sa jazyku s dlhšou históriou a 5 až 10-krát väčším zastúpením v priemysle nemá zmysel. Aby mali možnosť vidieť aj druhú stranu mince.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #70 kdy: Dnes v 12:57:17 »
Toto ma zaujalo:

Proti C/C++ bohužel nemohu sloužit, je to už dlouho.

V kombinácii s o deň starším:

Na druhou stranu dobrá zpráva je, že pro nové aplikace není důvod již C++ používat.

... sa musím zamýšľať:

Na základe čoho vlastne vyslovujete takéto závery?

Keď s aktuálnym C++ nemáte dostatok skúseností, tak by možno stálo za zamyslenie, či by ste sa k nemu vôbec mali vyjadrovať.

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

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

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #72 kdy: Dnes v 13:52:31 »
Je to zatím jediný jazyk, který umožňuje napsat to co v C++, ale naprosto safe

S tím safe to není pravda. Na mnoho věcí potřebujete unsafe Rust, který je v určitém smyslu víc unsafe než C nebo C++ a navíc ani neexistují přesná aliasing pravidla, takže vlastně nikdo nemůže přesně říct, jaké programy obsahují nedefinované chování a jaké jsou v pořádku - to se určí časem a může se stát, že nějaké programy, co doposud fungovaly, spadnou do kategorie "má nedefinované chování".

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #73 kdy: Dnes v 14:50:36 »
Safe API můžeš udělat nad unsafe API a je to naprosto běžná věc. Otázka jen je, kolik toho unsafe kódu musíš napsat. V rustu je zvykem ho izolovat, v ale C++ může být kdekoliv, protože unsafe je úplně všechno a pointer aliasing je tak nějak všude (např. iterátory).

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #74 kdy: Dnes v 15:02:12 »
Safe API můžeš udělat nad unsafe API a je to naprosto běžná věc. Otázka jen je, kolik toho unsafe kódu musíš napsat. V rustu je zvykem ho izolovat, v ale C++ může být kdekoliv, protože unsafe je úplně všechno a pointer aliasing je tak nějak všude (např. iterátory).

Izolovat unsafe v Rustu můžu, stejně jako můžu v C++ psát bezchybný kód. Problém je, že v ani jednom jazyce mi s tím kompilátor nepomůže (snadno v Rustu napíši vadný safe obal nějakého unsafe kódu). Aliasing v C/C++ je specifikovaný (sice vágně), ale je. V Rustu je situace

Citace
Breaking the pointer aliasing rules. The exact aliasing rules are not determined yet, but here is an outline of the general principles:

Zdroj: Rust Reference

Takže, abyste v Rustu psal program, který nemá nedefinované chování, tak se máte řidit pravidly, která zatím nikdo nenapsal a nikdo je nezná.