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

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #120 kdy: 27. 09. 2025, 09:53:53 »
Rust znám jen z přednášek, já jsem přešel na golang. Je jednodušší a má výborné možnosti multithredingu.


Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #121 kdy: 27. 09. 2025, 09:57:50 »
Co se tyce knihoven vs vlastní kod, je tu este vykonovy aspekt.



A ja se obavam, ze moje knihovny hy hyly este horsi, nez ty GOckove.

Na druhé straně vy byste to mohl psát kód přímo pro tu vaši konkrétní situaci.

Já jsem si třeba napsal vlastní parser pro JSON v F# a na určitých vstupech byl výrazně rychlejší než parser ze standardní knihovny System.Text.Json od Microsoftu. Ty vstupy byly JSONy, kde je v řetězci vnořený další JSON.

Dříve to navíc umělo poznat, že vstupní JSON obsahuje fieldy, které program neočekává (to už se System.Text.Json také naučil). Co většina knihoven stále neumí, je číst neomezeně dlouhá čísla - takže stále má výhody mít vlastní parser. Krom toho ten parser už dříve šlo přeložit do WASM a použít, což jiné parsery v C# ani F# neuměly (šlo je přeložit, ale často házely výjimky, protože používali reflexi, což ten můj parser nedělá).

A ještě jedna věc, JSON je dosti vágně specifikované, takže tím, že mám vlastní kód mám i kontrolu nad tím, jak se ošetří třeba slovníky s duplicitními fieldy, nebo s fieldy, co nejsou duplicitní, ale po Unicode normalizaci by byly.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #122 kdy: 28. 09. 2025, 23:21:09 »
Pokud se tím plánuješ živit, tak odpověď je "spíš ne". Full-time jobů v Rustu (ne RUSTu btw) je docela málo. Full-time jobů v Javě je hodně. Rust totiž za rychlost běhu programu platí větší pomalostí při psaní kódu (je fakt hodně přísnej) a to se na většině projektů nevyplatí.

jop ,je tak nevyužitelný ze  rust programatori jsou nejlépe ohodnoceni v oboru zatímco ta jista java se nedostala ani do první sedmičky a to tam najdeš jak go tak python + typescript a kotlin a bonus .. scalu

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #123 kdy: Dnes v 08:48:45 »
Pokud se tím plánuješ živit, tak odpověď je "spíš ne". Full-time jobů v Rustu (ne RUSTu btw) je docela málo. Full-time jobů v Javě je hodně. Rust totiž za rychlost běhu programu platí větší pomalostí při psaní kódu (je fakt hodně přísnej) a to se na většině projektů nevyplatí.

jop ,je tak nevyužitelný ze  rust programatori jsou nejlépe ohodnoceni v oboru zatímco ta jista java se nedostala ani do první sedmičky a to tam najdeš jak go tak python + typescript a kotlin a bonus .. scalu
A to jste vzal kde? Zas nějaký pochybný žebříček, který se vždycky co měsíc totálně zpřehází? C++ a Java jsou z hlediska jobu sázky na jistotu a zároveň dobrého ohodnocení. Ani jeden z těchto jazyků přitom nemusím a nedělám v nich, i když se asi připravuju o peníze (duševní zdraví je mi cennější - správný objektový návrh umí udělat málo lidí, rozhodně mnohem méně, než kolik se jich o to pokouší, resp. se to po nich chce - mně tento design programu také není blízký a evidentně ani autorům většiny učebnic OOP; problém navíc je, že jen málokdo si to dokáže sebekriticky přiznat).

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #124 kdy: Dnes v 11:45:42 »
Pokud se tím plánuješ živit, tak odpověď je "spíš ne". Full-time jobů v Rustu (ne RUSTu btw) je docela málo. Full-time jobů v Javě je hodně. Rust totiž za rychlost běhu programu platí větší pomalostí při psaní kódu (je fakt hodně přísnej) a to se na většině projektů nevyplatí.

jop ,je tak nevyužitelný ze  rust programatori jsou nejlépe ohodnoceni v oboru zatímco ta jista java se nedostala ani do první sedmičky a to tam najdeš jak go tak python + typescript a kotlin a bonus .. scalu
A to jste vzal kde? Zas nějaký pochybný žebříček, který se vždycky co měsíc totálně zpřehází? C++ a Java jsou z hlediska jobu sázky na jistotu a zároveň dobrého ohodnocení. Ani jeden z těchto jazyků přitom nemusím a nedělám v nich, i když se asi připravuju o peníze (duševní zdraví je mi cennější - správný objektový návrh umí udělat málo lidí, rozhodně mnohem méně, než kolik se jich o to pokouší, resp. se to po nich chce - mně tento design programu také není blízký a evidentně ani autorům většiny učebnic OOP; problém navíc je, že jen málokdo si to dokáže sebekriticky přiznat).

A pritom je OOP tak strasne jednoduchy koncept.
Staci znat par pravidel a selsky rozum, objektovy je cely svet vukol.

Staci vedet, ze kdyz ten jazyk nejake moznosti nabizi, ze je veru neni potreba nasrat vsude.
Ze napr. dedeni se pouziva, kdyz potrebuju ROZSIRIT funkcionalitu existujiciho objektu, pokud potrebuju jenom polymorfismus, na 99% bude vhodnejsi prosty interface.

Ze je potreba selsky rozum, abych dovedl poznat, ktery objekt je v danem kontextu aktorem, ktery je prosty objekt, se kterym aktor manipuje.
Vidle.naberHnuj(hnuj) je spravny pristup
Hnuj.naskocNaVidle(vidle) je magorina.

Pak je potreba v ramci mozkoveho mysleni este urcit, ze v danem kontextu objet User zrejme nebude clovek, alebrz vstupni karticka, co se strka do pichacky a kterou se oteviraji dvere, ze je treba lepsi ten objekt pojmenovat AuthToken a  tedy ze neni potreba do toho nasrat i cislo bot realneho Usera, to se klido strci do jineho objektu, co upravdu reprezentuje cloveka.

A ano, knizky o OOP jsou vetsinou blbe, tam prave dedi trojuhelniky a ctverce z obecneho polygonu, aby ve zdedenem objektu vymenili sakuprask vsecko, tady je lepsi prosty interface.

Chapu, ze treba Spring Boot potrebuje vsecky ficury javy vcetne introspekce a apod. Prave proto Spring vznikl, aby bezny programator business logiky se s tim prdolit nemusel.
Ja pri psani ve Springu z celeho OOP pouzivam interfacy (popr anotace, tedy interfacy v jinem formatu), encapsulaci a konec.




Kit

  • *****
  • 882
    • Zobrazit profil
    • E-mail
Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #125 kdy: Dnes v 11:58:40 »
A pritom je OOP tak strasne jednoduchy koncept.
Staci znat par pravidel a selsky rozum, objektovy je cely svet vukol.

Staci vedet, ze kdyz ten jazyk nejake moznosti nabizi, ze je veru neni potreba nasrat vsude.
Ze napr. dedeni se pouziva, kdyz potrebuju ROZSIRIT funkcionalitu existujiciho objektu, pokud potrebuju jenom polymorfismus, na 99% bude vhodnejsi prosty interface.

Slovo ROZŠÍŘIT je ošemetné, protože se do toho vejde zbytečně moc vztahů. Potom vznikají nesmysly typu BaseController jako rodič apod. Místo toho používám slovo JE, které je pro pochopení vztahu mnohem lepší a hlavně psychologicky zamezí vzniku dědictví tam, kde být nemá.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #126 kdy: Dnes v 13:24:56 »
A pritom je OOP tak strasne jednoduchy koncept.
Staci znat par pravidel a selsky rozum, objektovy je cely svet vukol.

Staci vedet, ze kdyz ten jazyk nejake moznosti nabizi, ze je veru neni potreba nasrat vsude.
Ze napr. dedeni se pouziva, kdyz potrebuju ROZSIRIT funkcionalitu existujiciho objektu, pokud potrebuju jenom polymorfismus, na 99% bude vhodnejsi prosty interface.
Až na to, že to tak jednoduchý koncept není.

Ony jsou vlastně 2-3 různá paradigmata, která se sice nazývají stejně, ale znamenají něco jiného podle jazyka. Např. OOP v Javě vs Javascriptu. A ani jedno nemá moc společného s tím, co nazýváme objekt v běžném životě. viz. ten příklad s vidlema a hnojem.

Reálný svět není moc objektový. Hlavně hierarchiím se dost urputně brání a lezou z toho chuťovky jako diamantová dědičnost. A po tom, co jsem vyslechl rozhovor jednoho biologa a učitelky vím, že to není jen moje pozorování. Příroda se škatulkuje dost blbě.

BTW, subtypový polymorfismus není z matematického hlediska rozšíření ale naopak spíš zůžení. Odvozená třída nerozšiřuje  schopnosti báze. Ona umí podmnožinu z toho všeho, co by ta báze mohla dělat.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #127 kdy: Dnes v 13:26:14 »
A pritom je OOP tak strasne jednoduchy koncept.
Staci znat par pravidel a selsky rozum, objektovy je cely svet vukol.
A to je právě ta největší zrada - ono se to tváří, že je to strašně jednoduché, protože objektový je celý svět vůkol. Jenže je objektový jinak, než jak je to potřeba k vytvoření objektového modelu programu. Právě ta podvědomá snaha o 1:1 korespondenci reálných objektů a objektů programových je velice zákeřná past, do níž se chytí většina lidí. Reálný svět má mnohem komplikovanější vazby než IS a HAS a vzájemnou výměnu zpráv mezi blackboxy. Jedna a tatáž věc se dá klasifikovat z různých úhlů pohledu, podle různých kritérií. Například obyčejné číslo - přirozené, racionální, reálné, sudé/liché, transcendentní... Ale v počítači mě spíš zajímá, kolik místa potřebuji na jeho uložení a jak s ním budu algoritmicky zacházet, což je klasifikace, která zrovna moc neodpovídá "světu vůkol", ale odpovídá světu uvnitř počítače.

Ze je potreba selsky rozum, abych dovedl poznat, ktery objekt je v danem kontextu aktorem, ktery je prosty objekt, se kterym aktor manipuje.
Vidle.naberHnuj(hnuj) je spravny pristup
Hnuj.naskocNaVidle(vidle) je magorina.
V reálném světě je to nesmysl, ale v počítači je to rovnocenné a zvolit se musí varianta, která je přímočařejší z hlediska návrhu programu - pen.draw(canvas) vs. canvas.draw(pen) vs. canvas.pen(draw) vs. ... Zákon schválnosti říká, že si člověk vybere nevhodnou variantu, což se projeví v okamžiku, kdy bude chtít rozšířit svůj model o nějakou prkotinu, která mu do toho vůbec, ale vůbec nebude zapadat, ale kdyby býval zvolil jiný model na začátku, krásně by to do sebe zapadlo. A blbé je, že v tom smolném případě OOP poslouží úplně stejně jako v tom šťastném - jako zesilovač: když to na začátku vymyslíte dobře, OOP vám ušetří spoustu práce; a naopak, bohužel.

Pak je potreba v ramci mozkoveho mysleni este urcit, ze v danem kontextu objet User zrejme nebude clovek, alebrz vstupni karticka, co se strka do pichacky a kterou se oteviraji dvere, ze je treba lepsi ten objekt pojmenovat AuthToken a  tedy ze neni potreba do toho nasrat i cislo bot realneho Usera, to se klido strci do jineho objektu, co upravdu reprezentuje cloveka.
A nebo je třeba posoudit, zda ta kartička je zásadním objektem, nebo je to jen nějaký prostředek k autorizaci, či dokonce jeden z mnoha možných, pro daný program ne zcela podstatný, protože až někdo přijde s autorizací přes sítnici, začne se řešit, jak to napasovat na objekt kartička. Tedy zda jde o nějaký vrátný systém, pro nějž je badge/token to podstatné, a koho/co reprezentuje už není jeho starost, nebo naopak jde o nějaký systém zaměstnanců, kde zas není až tak podstatné jak se autorizoval, ale kdo se autorizoval.

A ano, knizky o OOP jsou vetsinou blbe, tam prave dedi trojuhelniky a ctverce z obecneho polygonu, aby ve zdedenem objektu vymenili sakuprask vsecko, tady je lepsi prosty interface.
Tohle bych nazval prvoplánové návrhové chyby. Který učební text je má, takový můžete rovnou zahodit. Jenže pak tu jsou ty "vyšší" chyby, které se dají jen těžko demonstrovat na malých příkladech, protože se začnou projevovat až později. Tím jsem nechtěl říci, že ty vaše příklady jsou špatně nebo dobře. Problém je, že bez znalosti kontextu se to nedá jednoznačně rozhodnout.

Marketingová hesla OOP byla přehlednost, znovupoužitelnost, úspora psaní. Realita, na niž jsem celý život narážel, byla přesně opačná.

Re:Přechod z Javy na Rust. Ano či ne?
« Odpověď #128 kdy: Dnes v 21:23:48 »
A pritom je OOP tak strasne jednoduchy koncept.
Staci znat par pravidel a selsky rozum, objektovy je cely svet vukol.

Staci vedet, ze kdyz ten jazyk nejake moznosti nabizi, ze je veru neni potreba nasrat vsude.
Ze napr. dedeni se pouziva, kdyz potrebuju ROZSIRIT funkcionalitu existujiciho objektu, pokud potrebuju jenom polymorfismus, na 99% bude vhodnejsi prosty interface.

Slovo ROZŠÍŘIT je ošemetné, protože se do toho vejde zbytečně moc vztahů. Potom vznikají nesmysly typu BaseController jako rodič apod. Místo toho používám slovo JE, které je pro pochopení vztahu mnohem lepší a hlavně psychologicky zamezí vzniku dědictví tam, kde být nemá.

Jaký máš názor třeba na MouseAdapter nebo jiné *Adapter třídy? Případně Default* implementace různých rozhraní? V principu jde o to, že rozhraní má více metod, ale ty chceš implementovat specifické chování třeba jen jedné z nich. Když podědíš ten adaptér, tak implementuješ jen tu jednu metodu, která tě zajímá. Pokud adaptér nebude, tak co s tím?

a) implementuješ všechny metody a necháš je prázdné
b) těch rozhraní bude mnohem víc a každé bude mít jen jednu metodu
c) řešení na úrovni programovacího jazyka (v některých to jde, ale za cenu vyšší komplexity jazyka oproti Javě)
d) něco jiného?

Ono to sice jde udělat „čistě“ a podle všech dobrých rad, pravidel a doporučení, ale to ještě neznamená, že se to bude dobře používat.

Něco jiného jsou zvěrstva, o kterých píše Standa:

Citace
Ze je potreba selsky rozum, abych dovedl poznat, ktery objekt je v danem kontextu aktorem, ktery je prosty objekt, se kterym aktor manipuje.
Vidle.naberHnuj(hnuj) je spravny pristup
Hnuj.naskocNaVidle(vidle) je magorina.

Když vidím, co jsou někteří schopní vyrobit a prezentovat jako OOP, tak se pak nedivím, že hodně lidí na druhé straně OOP nesnáší a utíkají od něj pryč. Ale nemyslím si, že by problém byl ve společném předkovi typu MouseAdapter.