• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    SPIRALIRust - Programovací jazyk

    A language empowering everyone to build reliable and efficient software.

    The Rust Programming Language - The Rust Programming Language
    The book of Rust
    Idiomatic rust
    GitHub - usagi/rust-memory-container-cs: Rust Memory Container Cheat-sheet
    Memory container cheat sheet
    rozbalit záhlaví
    XCHAOS
    XCHAOS --- ---
    MARASAN: s Rustem :-) nic, už mlčím... :-)
    MARASAN
    MARASAN --- ---
    XCHAOS: zacit s cim? S golang vedle Rustu ?
    XCHAOS
    XCHAOS --- ---
    SHINING_KATE: sice se s Rustem teprve začínám, ale tohle moc dobře znám - to, že abstrakce nějakého pro mě nového jazyka pak ovlivní i to, jak programuju v jiných jazycích. Takže asi o důvod víc s tím fakt konečně začít...
    UETOYO
    UETOYO --- ---
    SHINING_KATE: No jo, jenže tohle je asi právě jen kulturně dané. Kdybys ses učila první OCaml nepřišlo by ti na Rustu nic tak zajímavého. OCaml má vše co Rust jen má GC, ale v takové kvalitě, že dává záruky že nezastaví běh tak, že někde aplikace vytuhne. Mít Rust na web development, to je pro mě už vyřešená záležitost. Pokud to je nějaká část jinak rozsáhlého programu, co řeší jinak nějaké low-level věci budiž, ale jinak overkill. Na validaci REST API třetí strany nepotřebuji ML typový systém.

    Jen pro zajímavost. Rust kompilátor byl původně v OCamlu:
    Remove rustboot from the repository. · rust-lang/rust@6997adf · GitHub
    Remove rustboot from the repository. · rust-lang/rust@6997adf · GitHub
    https://github.com/rust-lang/rust/commit/6997adf76342b7a6fe03c4bc370ce5fc5082a869
    SHINING_KATE
    SHINING_KATE --- ---
    Co se týče čitelného kódu, už samotný borrow checker, důraz na immutability, Optional / Result types... Všechno to dost ovlivnilo i jak přemýšlím nad kódem v jiných jazycích :) Go je fajn, ale rozhodně mi nesedlo tolik - učila jsem se současně oboje.
    UETOYO
    UETOYO --- ---
    SHINING_KATE: "Přijde mi, že Rust z jazyků co znám zatím nejvíc tlačí vývojáře do psaní čitelného kódu." Jak je tlačí, čím?
    UETOYO
    UETOYO --- ---
    SHINING_KATE: No jo ale podobně by psal i programátor v Go. Oproti Pythonu je takový jazyk a tooling prostě paráda s tím, že pokud nejsem opravdu na železe, není Rust nutná volba. Thread safety... no s tím neporadím, os thready radši nechávám spát.
    SHINING_KATE
    SHINING_KATE --- ---
    UETOYO: Ta bezpečnost Rustu pro mě rozhodně není jen v borrow checkeru. Pokud jde o věci mimo logické chyby, pak je pro mě dost podstná záruka thread safety. (Což se občas v C++ debuguje dost špatně)

    A pro prevenci logických chyb imho dost pomáhá i:
    - Skvělá podpora pro automatickou tvorbu dokumentace a doctesty - pomáhá i s prevencí chyb při použití 3rd party knihoven. U JS / TS jsme už řešili pár chyb vzniklých kvůli mizerné dokumentaci i velmi populárních knihoven.
    - Silný typový systém a knihovny které s ním počítají se mi dost osvědčil při tvorbě REST api a api klientů - občas jsem díky tomu našla chyby v implmentaci u protistrany, kdy posílali out of spec data, ale jiné jazyky se s tím nějak popraly, často formou "Silent failure" - což může vést opět k ne snadno debugovatelným problémům
    - Zatím jsem se v žádném jazyce necítila tak bezpečně při nějakém větším refactoringu. Opět, typový systém s tím opravdu dost pomáhá
    - Přijde mi, že Rust z jazyků co znám zatím nejvíc tlačí vývojáře do psaní čitelného kódu.
    - Nemuset myslet na celou kategorii chyb prostě uvolňuje kapacitu pro řešení jiných

    Je fakt že počáteční learning curve je o něco horší, ale naše firemní codebase na backendu je z drtivé většiny Rust, a nikdy mi nepřišel vývoj tak pohodlný jako teď. Předtím jsem profesionálně programovala hlavně C++ a Python.
    UETOYO
    UETOYO --- ---
    MARASAN: Spousta věcí navázaných na paralelní svět -- CUDA, OMP, MPI a grafika (OpenGL, Vulkan). Na spoustu míst se klidně časem může Rust dostat a sotává, ale hrozně to potrvá a někde ani nemá smysl. Třeba moderní Fortran tuhle niku bude obývat nadále, protože oproti C++ nabízí luxus toho, že se skvělě pracuje s n-dimenzionálními poli, nemusíš téměř řešit ukazatele. Tam Rust vůbec nenabízí něco navíc nehledě na to, že přepisovat něco do Rustu je velký risk. Nasekáš chyby v logice ne v dereferencování ukazatele.
    MARASAN
    MARASAN --- ---
    UETOYO: co je takova stale jeste absolutni nika pro C++?
    UETOYO
    UETOYO --- ---
    BONEFLUTE: Až na to že 99% chyb v aplikaci bude v "business" logice a ne kvůli pamětovým problémům. V C/C++ je problém, že nástroje na statickou analýzu sice jsou, ale lidi často ani nezapínají flagy kompilátoru. Rust je v tomhle napřed, ale představa, že vyřeší tu hromadu chyb, který se skrývají v nepochopení a komplexnosti problému tím, že _uspokojíš_ borrow checker je _vlhký_ sen.

    "Já neuvažuju o tom, že by firmy měli hromadně přecházet na Rust a všechno přepisovat. Ale psát _novou_ aplikaci v C++ považuju za nerozum." To záleží v jaké oblasti.
    SPIKE411
    SPIKE411 --- ---
    The Rise of Rust, the ‘Viral’ Secure Programming Language That’s Taking Over Tech | WIRED
    https://www.wired.com/story/rust-secure-programming-language-memory-safe/
    BONEFLUTE
    BONEFLUTE --- ---
    FALL: podepisuju :-)
    FALL
    FALL --- ---
    BONEFLUTE: pro člověka, co se nástroje na danou aplikaci učí od začátku (nebo skoro od začátku) je dobré se zamyslet, co dává moemtálně největší smysl a Rust je u mnoha aplikací velmi dobrá volba. Pokud se chceš tím živit někde s větším týmem, firmou s větším portfóliem, nebo nedej bože v korporátu, tak se bez znalostí těch jazykou pro dynosaury (jako je C, Java a podobný) moc dobře cítit nebudeš.

    A když se ptáš, tak můj osobní názor je, že C++ je naprosto zbytečná věc a mor, který zalezl na místa, na která neměl nikdy být vpuštěn. Takže za mě C++ může klidně zmizet z povrchu této planety a bude nám líp:)
    BONEFLUTE
    BONEFLUTE --- ---
    FALL: Mám projekt, novej, pro který jsem hledal vhodné nástroje. Chtěl jsem něco snadnýho, rychlýho, etc. Po epizodě s dynamickými jazyky (nic proti, jen se to neukázalo jako vhodné) jsem dokonce ze zoufalství zvažoval C++. Oprášil jsem své znalosti a jal se to aplikovat. Po té, co mi to začalo náhodně padat jsem trochu zpanikařil.
    Dospěl jsem k úvaze, že mám-li tomu obětovat čas, chci za to dostat víc, než co mi C++ nabízí.
    Zatím jsem pokaždé, když mi program v Rustu na něčem spadl, zjistil, že to bylo proto, protože jsem se ho pokoušel nějak přečůrat. Až mi to bude magicky zamrzat budu se učit jak to řešit, s tím jsem smířenej.
    Nejde o to, že by snad Rust dal 100%. Jde o to, že Rust je tak dobrej, že C++ přestává být smysluplná alternativa. Nechť ti, co C++ umí dělají v legaci ale nová generace IMHO nemá důvod se ho vůbec učit.


    FALL: Pokud se učíš nový jazyk, tak máš stejné množství času na získání skillu. Co vám přijde racionální volba C++, nebo Rust, a proč?

    Já neuvažuju o tom, že by firmy měli hromadně přecházet na Rust a všechno přepisovat. Ale psát _novou_ aplikaci v C++ považuju za nerozum.

    A to se bavíme o jazyku jako takovém. Ekosystém kolem, v podobě crates + cargo je další téma, které mu IMHO přidávají další body.
    JON
    JON --- ---
    BONEFLUTE: to je ale jen predstava, v praxi to urcite neni 0.1 procenta - videl jsem uz veci co leakujou pamet a zamrzly thready - z vnejsku se appka tvari ok - ma otevrenej port, ale uvnitr je mrtvo.

    Imo negativni efekt rustu je, ze to pak lidi pouzivaj uplne na vsechno, a u nekterych jednoduchych toolu je ten overhead (delsi vyvoj, nebo vyvoj drazdim vyvojarem, nedostatek lidi, ktery to pak muzou udrzovat) treba oproti pythonu neobhajitelnej. Jasne, neni to feature jazyka, ale vlastnost lidi, co s nim delaj.
    FALL
    FALL --- ---
    BONEFLUTE: tohle funguje, pokud máš dost (ideálně nekonečně) času na tu fázi učení a vývoje produktu. Výhoda toho prvního modelu je, že dodáváš věci zákazníkům docela rychle. Ano, jsou tam chyby a dostaneš to víckrát zpátky. Ale upřímně, dokud bude většina věcí na světě běhat s chybama a stejně se svět nezboří (= demonstrováno tím, že žádný email ani telefon od naštvaného zákazníka nepřichází), není jednoduché miliony vývojářů a tisíce firem přesvědčit, že je teď čas investovat do učení se nového jazyka, předělávání build procesů a přepisování starého kódu, knihoven nebo celých produktů...

    Abychom si rozměli, učit se Rust rozhodně za to stojí, je to podle mě budoucnost několika částí tohohle našeho "vývojářského" odvěví (viz. Bryan Cantrill z Oxide Computer: "I'm a C developer for 25 years but after developing 2 years in Rust I know I will never go back to C for embedded SW application..."), jen chápu, proč to bude trvat dlouho, než se překlopí majorita. Protože psaní kódu v C děláme 50 let a díky tomu tu máme většinu všeho softwaru, co na světě běží. A +- funguje.
    BONEFLUTE
    BONEFLUTE --- ---
    VELDRANE: Představuju si to takhle:
    Když píšeš v C, tak splodíš svůj první program, ten funguje, ty odevzdáš klientovi, a on ti ho vrátí, že to padá. A tak postupně získáváš skill, jak napsat v C program tak, aby to nepadalo. Když jsi fakt dobrej, tak jsi schopen to tak napsat, a ten program je třeba z 80% bezchybnej.
    Když píšeš v Rustu, tak týdny a měsíce bojuješ s tím, aby ten kompilátor nedržkoval. Získáváš zkušenosti, a postupně už tomu začínáš trochu rozumět, dokonce už dokážeš napsat HelloWorld... A teď když konečně s velkou slávou to přeložíš, tak to předáš klientovi a funguje to. Riziko, že to spadne je tak kolik, 0.1%?
    V obou případech utrácíš spousta času a námahy, aby si se naučil zvládat jazyk. Ale zatímco v C i když máš skill, tak stejně tam někde vzadu hlodá červík, 20%nejistotu, tak v Rustu jakmile ukecáš kompilátor, tak máš 99% jistotu.
    V ten den pro mě C přestal být zajímavej.
    VELDRANE
    VELDRANE --- ---
    SHINING_KATE: Pro me jako systemaka bude zajimave sledovat, zda se Rust etabluje jako linux kernel language nebo ne. Koukal sem na prvni vlastovku v podobe prepsaneho driveru pro e1000 a vypada to luxusne hlavne co se citelnosti tyka citelnosti kodu a jeho pochopeni:

    GitHub - fujita/rust-e1000
    https://github.com/fujita/rust-e1000

    Na druhou stranu i kdyz ten jazyk je fakt super a vylozene me bavi zkoumat vsechna jeho zakouti (btw Rust book je uplne bozi a nema smysl kupovat predrazeny knizky), obavam se, ze ta komplexita spoustu lidi proste odradi. Prijde mi, ze spousta uz vcelku advanced veci je spis “must have”, aby clovek v Rustu moh vubec nejak pracovat. Mozna je muj pohled zkreslenej tim, ze zkratka nejsem kovanej programator (i kdyz me to vlastne ted zivi a spis se povazuju za sys admina.

    Co mam na mysli konkretne ? Hlavne zaziti typovyho sytemu, generik a traitu, protoze bez toho je imho clovek casto dost ztracenej kdyz chce pouzit nejakou komplexnejsi knihovnu, framework apod. viz:

    How to read complicated Rust types
    https://youtu.be/uh9i3be2wIE
    SHINING_KATE
    SHINING_KATE --- ---
    Ugh, úplně jsem zapomněla zmínit https://eurorust.eu/
    Konference to była fakt dobrá, zvlášť na první ročník. Spousta přednášek byla na mě až trochu moc basic, ale i tam bylo příjemné porovnat best practices s ostatními. Přednáška o governingu Rust projektu byla super, byla tam i panelová debata se zástupci několika firem, mimo jiné Ferrous Systems a Meta.

    Zvlášť to co bylo řečeno od Ferrous Systems bylo celkem zajímavé - Ferrous Systems se zabývají mimo jiné školeními a konzultacemi pro další firmy zvažující adopci Rustu, zejména v embedded. Zmínili že pracovní trh může vypadat v téhle době ještě celkem prázdně, ale opak je pravdou. Jen se firmy zatím moc nehrnou do náboru celých nových Rust teamů, ale přeučují stávající. Znělo to, že do budoucna o práci pro Rust devy nouze nebude :) A kdyby někdo zkušenější hledal už teď, Mainmatter, hlavní pořádající organizace, nabírá :) https://gist.github.com/marcoow/0a1ad1a18462e536e655043687a3e024
    SPIKE411
    SPIKE411 --- ---
    GitHub - smallnest/concurrency-programming-via-rust
    https://github.com/smallnest/concurrency-programming-via-rust

    I have a plan to write a book about conncurrency programming via rust. The below is the contents of it and this repo contains all source codes.
    Kliknutím sem můžete změnit nastavení reklam