Rust (programovací jazyk) - Biblioteka.sk

Upozornenie: Prezeranie týchto stránok je určené len pre návštevníkov nad 18 rokov!
Zásady ochrany osobných údajov.
Používaním tohto webu súhlasíte s uchovávaním cookies, ktoré slúžia na poskytovanie služieb, nastavenie reklám a analýzu návštevnosti. OK, súhlasím


Panta Rhei Doprava Zadarmo
...
...


A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Rust (programovací jazyk)
Rust
Rust programming language black logo.svg
Druhviacparadigmový
Dátum vzniku2010
Použitiesystémové programovanie
Typová kontrolastatická, nominálna, odvoditeľná, silná
TvorcaGraydon Hoare
Používané prípony.rs, .rslib

Rust je slobodný viacúčelový, multiparadigmatický, kompilovaný programovací jazyk, vyvinutý organizáciou Mozilla Research. Je navrhnutý ako programovací jazyk so zameraním na výkon, spoľahlivosť a produktivitu[1], podporujúci čisto funkcionálne, imperatívno-procedurálne, štrukturované a objektovo orientované programovacie štýly.

Vysoký výkon je umožnený absenciou behového prostredia a garbage kolektora.[1] Spoľahlivosť zabezpečuje model vlastníctva, ktorý garantuje bezpečnosť pri práci s pamäťou a s viacerými vláknami.[1] Produktivitu zabezpečuje rozsiahla dokumentácia, priateľský kompilátor, integrovaný manažér externých balíčkov a podpora moderných vývojových prostredí.[1]

História

Rust vznikol v roku 2006 ako bočný projekt Graydona Hoarea, zamestnanca firmy Mozilla. Mozilla si uvedomila potenciál nového jazyka a začala ho sponzorovať od roku 2009. Jazyk bol predstavený verejnosti roku 2010.[2]

Ten istý rok sa práce posunuli z počiatočného prekladača (naprogramovaného v OCaml) do seba-hostujúceho prekladača napísaného v Ruste.[3] Tento, známy ako rustc, úspešne preložil sám seba v roku 2011.[4] rustc používa LLVM ako svoj backend.[5]

Graydon viedol projekt po technickej stránke do roku 2013, kedy vystúpil z Rust tímu kvôli osobným dôvodom.[6]

Prvé pred-alfa vydanie Rust kompilátora sa uskutočnilo v januári 2012.[7] Rust 1.0, prvá stabilná verzia bolo vydaná 15. mája 2015.[8] Nasledujúc verziu 1.0, ďalšie stabilné verzie sa vydávajú každých 6 týždňov, rozšírenia sú k dispozícií v nočných verziách a následne testované v beta verziách.

V auguste 2020 Mozilla prepustila 250 zamestnancov z dôvodu reštrukturalizácie. Medzi týmito zamestnancami bola aj väčšina Rust tímu.[9] Týždeň potom Rust Core tím oznámil plán vytvorenia Rust nadácie, ktorej primárnou úlohou je prevziať plné vlastníctvo ochrannej známky Rust jazyka.[10] V novembri 2020 Amazon Web Services oznámili, že sa zaväzujú podporiť pokračovanie jazyka a že sami plánujú zvýšené nasadenie Rust jazyka v ich vlastných produktoch.[11]

Momentálne je Rust spravovaný jeho komunitou, ktorá sa organizuje do tímov a pracovných skupín, ktoré sa zameriavajú na jednotlivé aspekty jazyka (napr. jadro, kompilátor, vývojové nástroje atď.).[12] Menšie úpravy alebo opravy chýb sú implementované bežnou formou GitHub pull žiadosti. Závažnejšie zmeny sa uvádzajú do jazyka procesom RFC.[13]

Dizajn[14]14">upraviť | upraviť zdroj

Cieľom Rust je byť dobrým jazykom pre vytváranie vysoko paralelných a vysoko bezpečných systémov.[15] Toto bol základ pre súbor vlastností s dôrazom na bezpečnosť, kontrolu rozvrhnutia pamäte, a paralelizmu. Výkon Rustu je porovnateľný s výkonom C++.[16]

Syntax Rustu je podobná syntaxi C a C++, s blokmi kódu ohraničenými zloženými zátvorkami, a riadiace kľúčové slová ako if, else, while a for. Nie všetky kľúčové slova jazykov C a C++ sú prítomné, zatiaľ čo niektoré ďalšie (ako napríklad match pre viacnásobné skoky, podobné príkazu switch v iných jazykoch) boli zamenené alebo pridané. I cez syntaktickú podobnosť je Rust sémantický veľmi odlišný od C a C++.

Hello, World!upraviť | upraviť zdroj

Príklad "Hello, World!" programu v jazyku Rust vyzerá následovne:

fn main() {
    println!("Hello, World!");
}

Funkcia fn main() je spustená prvá. Telo funkcie je uzavrete v zložených zátvorkách. Výkričník v príkaze println! je špeciálnym označením volania makra. Reťazec "Hello, World! je argument makra. Príkaz je ukončený bodkočiarkou.

Dátové typyupraviť | upraviť zdroj

Dátové typy sú rozdelene medzi skalárne a zložené. Skalárne typy reprezentujú jedinú hodnotu a patria sem integer/float bytové variácie (napr. 32 bitové číslo so znamienkom i32 alebo bez znamienka u32), pravdivostný typ bool a znakový typ char. Medzi zložené typy patria n-tice tuple a polia array.

Premennéupraviť | upraviť zdroj

Rust umožňuje odvodenie typu (po anglicky „type-interference“) deklaróvaných premenných použitím kľúčového slova let. Premenné sú v predvolenej forme nemenné. Premennú ktorej hodnota sa počas vykonávania mutuje musí programátor explicitne označiť kľúčovým slovom mut. Týmto spôsobom sa Rust snaží preferovať koncept nemennosti, ktorý vedie ku zvýšenej bezpečnosti, hlavne v paralelnom programovaní. Rust taktiež disponuje konštantami, ktoré sú taktiež nemenné ale rozlišujú sa od nemutovateľných premenných.

Funkcieupraviť | upraviť zdroj

Funkcie, ktoré vracajú hodnotu v Rust musia mať explicitne deklarovaný typ návratovej hodnoty. Návratová hodnota je automaticky prevzatá z posledného výrazu (pozn: príkaz je ukončený bodkočiarkou, výraz nie). Funkcie môžu používať generické parametre, ale tie musia byť viazané traity. Neexistuje spôsob ako obísť signatúry typov, a pritom vo funkciách a operátoroch využívať generické premenné.

Traityupraviť | upraviť zdroj

Typový systém podporuje typ trait, ktorý je podobný typu trieda. Trait je priamo inšpirovaný jazykom Haskell. Jedná sa o nastroj pre ad-hoc polymorfizmus, čo bolo dosiahnuté zákazom písania deklarácii premenných. Ďalšie vlastnosti z jazyka Haskell, ako higher-kinded polymorfizmus, zatiaľ nie sú pridané.

trait MaObsah {
    fn obsah(&self) -> f64;
}

struct Kruh {
    x: f64,
    y: f64,
    polomer: f64,
}

impl MaObsah for Kruh {
    fn obsah(&self) -> f64 {
        std::f64::consts::PI * (self.polomer * self.polomer)
    }
}

struct Stvorec {
    x: f64,
    y: f64,
    strana: f64,
}

impl MaObsah for Stvorec {
    fn obsah(&self) -> f64 {
        self.strana * self.strana
    }
}

fn vypis_obsah(tvar: impl MaObsah) {
    println!("Tento utvar ma obsah {}", tvar.obsah());
}

fn main() {
    let c = Kruh {
        x: 0.0f64,
        y: 0.0f64,
        polomer: 1.0f64,
    };

    let s = Stvorec {
        x: 0.0f64,
        y: 0.0f64,
        strana: 1.0f64,
    };

    vypis_obsah(c);
    vypis_obsah(s);
}

Objektový systém v Ruste je založený okolo implementácií traitov a štruktúr. Ich použitie nahrádza role tried v iných (objektovo-orientovaných) jazykoch a je definované kľúčovým slovom impl. Dedičnosť a polymorfizmus sú poskytované traitmi; umožňujú ich metódy, ktoré sú definované v mixinoch k implementácií. Štrukturované typy sú použité pre definíciu členských premenných. Implementácia a traity nemôžu samé definovať členské premenné a iba traity môžu poskytovať dedičnosť. Tým sa predchádza diamantovému problému jazyka C++.

Správa pamäteupraviť | upraviť zdroj

Model vlastníctva zabezpečuje bezpečné používanie pamäte a tým preberá úlohu garbage kolektora. Program je skontrolovaný súborom pravidiel počas kompilácie, takže tento systém nemá žiadne negatívne následky na výkon počas behu programu.

Pravidlá:

  • každá hodnota má premennú, ktorá je vlastníkom
  • vlastníci sa môžu striedať ale v jednom čase môže byť len jeden vlastník
  • ak premenná – vlastník sa dostane mimo oblasť pôsobnosti, hodnota je zahodená

Príklad:

let s1 = String::from("hello");
let s2 = s1;
println!("{}, world!", s1);

Daný program nie je možné skompilovať pretože v makre println! sa snažíme čítať hodnotu premennej s1, ktorá už nie je vlastníkom. Táto operácia sa nazýva „presun“ (po anglicky „move“).

Kód by bol správny ak by sme najprv naklonovali hodnotu a tú priradili premennej s2:

let s1 = String::from("hello");
let s2 = s1.clone();
println!("{}, world!", s1);

Klonovanie je však drahšie a menej efektívne, pretože rovnaká hodnota je uložená v heap pamäti dvakrát.

Na rozdiel od dynamických hodnôt, statické hodnoty sa kopírujú. Takže ak sa numerická hodnota jednej premennej priradí druhej, tak na pozadí sa integer byty skopírujú na stack pamäti.

Volanie funkcie s argumentom tiež presúva hodnotu do premennej v oblasti pôsobenia tela funkcie. Podobne, navrátenie hodnoty mení vlastníka z premennej funkcie na premennú, do ktorej sa číta návratová hodnota. Na obídenie ťažkopádnych presunov do a z funkcií je možné poslať ako argument smerník na hodnotu. Táto operácia sa v Rust nazýva „zapožičanie“ (po anglicky „borrowing“). Pravidlá nie sú porušené, pretože premenná vo funkcií nie je vlastníkom ozajstnej hodnoty ale vlastníkom adresy. Adresy sú statické hodnoty, takže tie sa v pamäti kopírujú.

Smerník v predvolenej forme neumožňuje meniť referovanú hodnotu. Rust disponuje mutovateľnými smerníkmi, ale na tie sa vzťahujú ďalšie pravidla, ktoré zabraňujú komplikáciám spôsobených „pretekmi o dáta“ (po anglicky „data race“). Na zamedzenie „voľne visiacich“ (po anglicky "dangling") smerníkov, Rust neumožňuje jednoducho zapožičať smerník ako návratovú hodnotu funkcie bez definovania „životnosti“ (po anglicky „lifetime“) hodnoty.

Adopciaupraviť | upraviť zdroj

Rust bol tretí najobľúbenejší programovací jazyk v Stack Overflow prieskume roka 2015[17] a na prvom mieste v rokoch 2016 až 2020.[18][19][20][21][22]

Webový prehliadačupraviť | upraviť zdroj

  • Servo – bezpečné a paralelné vykresľovacie jadro, ktoré vyvíja Mozilla a Samsung[23].
  • Quantum – projekt s účelom vylepšiť vykresľovacie jadro Gecko prehliadača Firefox, ktoré vyvíja Mozilla[24]

Operačné systémyupraviť | upraviť zdroj

Inéupraviť | upraviť zdroj

  • exa – moderná náhrada pre ls
  • Microsoft Azure IoT Edge – platforma pre spúšťanie Azure služieb a umelej inteligencie na IoT zariadeniach. Rust použitý pre niektoré komponenty.[28]
  • OpenDNS – služba pre preklad doménových mien. Rust použitý pre niektoré komponenty.[29][30][31]
  • Tor – anonymná sieť. Originálne implementovaná v C, experimentuje s portovaním do Rust pre zvýšenie bezpečnosti.[32][33]
  • Deno – bezpečné behové prostredie pre JavaScript a TypeScript postavené na V8, Ruste a Tokiu[34]
  • Discord – komunikačná služba zameraná na hráčov. Rust použitý v častiach backendu a v enkódery na klientovi[35]
  • TerminusDB – otvorená grafová databáza s účelom kolaboratívneho vytvárania vedomostných grafov[36]
  • Zebra – implementácia Zcash protokolu

Referencieupraviť | upraviť zdroj

  1. a b c d Rust Programming Language online. www.rust-lang.org, cit. 2021-01-12. Dostupné online. (po anglicky)
  2. BRENDAN EICH. Future Tense. s.l. : s.n.. Dostupné online.
  3. Graydon's work on Mozilla » Blog Archive » Rust progress online. web.archive.org, 2014-08-15, cit. 2021-01-12. Dostupné online.
  4. HOARE, Graydon. rust-dev stage1/rustc builds online. Wed Apr 20 00:02:35 PDT 2011, cit. 2021-01-12. Dostupné online.
  5. Introducing MIR | Rust Blog online. blog.rust-lang.org, cit. 2021-01-12. Dostupné online. (po anglicky)
  6. r/rust - Comment by u/graydon2 on ”I wonder, why Graydon Hoare, the author of Rust, stopped contributing into it and switched to Swift?” online. reddit, cit. 2021-01-07. Dostupné online. (po anglicky)
  7. ANDERSON, Brian. rust-dev The Rust compiler 0.1 is unleashed online. Fri Jan 20 14:34:26 PST 2012, cit. 2021-01-12. Dostupné online.
  8. Announcing Rust 1.0 | Rust Blog online. blog.rust-lang.org, cit. 2021-01-12. Dostupné online. (po anglicky)
  9. Twitter vlákno @tschneidereit online. Cit. 2021-01-14. Dostupné online.
  10. Laying the foundation for Rust's future | Rust Blog online. blog.rust-lang.org, cit. 2021-01-12. Dostupné online. (po anglicky)
  11. Laying the foundation for Rust's future | Rust Blog online. blog.rust-lang.org, cit. 2021-01-07. Dostupné online. (po anglicky)
  12. Governance online. www.rust-lang.org, cit. 2021-01-07. Dostupné online. (po anglicky)
  13. rust-lang/rfcs online. 2021-01-06, cit. 2021-01-07. Original-date: 2014-03-07T21:29:00Z. Dostupné online.
  14. The Rust Programming Language - The Rust Programming Language online. doc.rust-lang.org, cit. 2021-01-08. Dostupné online.
  15. Interview on Rust, a Systems Programming Language Developed by Mozilla online. InfoQ, cit. 2021-01-12. Dostupné online. (po anglicky)
  16. WALTON, Patrick. Miscellany online. 2010-12-05, cit. 2021-01-12. Dostupné online.
  17. Stack Overflow Developer Survey 2015 online. Stack Overflow, cit. 2021-01-12. Dostupné online.
  18. Stack Overflow Developer Survey 2016 Results online. Stack Overflow, cit. 2021-01-12. Dostupné online.
  19. Stack Overflow Developer Survey 2017 online. Stack Overflow, cit. 2021-01-12. Dostupné online.
  20. Stack Overflow Developer Survey 2018 online. Stack Overflow, cit. 2021-01-12. Dostupné online.
  21. Stack Overflow Developer Survey 2019 online. Stack Overflow, cit. 2021-01-12. Dostupné online.
  22. Stack Overflow Developer Survey 2020 online. Stack Overflow, cit. 2021-01-12. Dostupné online.
  23. TechCrunch online. Cit. 2021-01-12. Dostupné online. (po anglicky)
  24. BRYANT, David. A Quantum Leap for the Web online. Medium, 2020-05-12, cit. 2021-01-12. Dostupné online. (po anglicky)
  25. YEGULALP, Serdar. Rust's Redox OS could show Linux a few new tricks online. InfoWorld, 2016-03-21, cit. 2021-01-12. Dostupné online. (po anglicky)
  26. MARK. Fedora 29 new features: Startis now officially in Fedora online. Marksei, 2018-10-10, cit. 2021-01-12. Dostupné online. (po anglicky)
  27. RHEL 8 Beta - Managing Storage With Stratis online. www.redhat.com, cit. 2021-01-12. Dostupné online. (po anglicky)
  28. FRANCISCO, Shaun Nichols in San. Microsoft's next trick? Kicking things out of the cloud to Azure IoT Edge online. www.theregister.com, cit. 2021-01-12. Dostupné online. (po anglicky)
  29. Rust (programming language). s.l. : s.n., 2021-01-11. Page Version ID: 999711213. Dostupné online. (po anglicky)
  30. Using HyperLogLog to Detect Malware Faster Than Ever online. Cisco Umbrella, 2013-12-05, cit. 2021-01-12. Dostupné online. (po anglicky)
  31. ZeroMQ: Helping us Block Malicious Domains in Real Time online. Cisco Umbrella, 2013-10-04, cit. 2021-01-12. Dostupné online. (po anglicky)
  32. HAHN, Sebastian. tor-dev Tor in a safer language: Network team update from Amsterdam online. Fri Mar 31 21:23:27 UTC 2017, cit. 2021-01-12. Dostupné online.
  33. The Wilmington Watch: A Tor Network Team Hackfest | Tor Blog online. blog.torproject.org, cit. 2021-01-12. Dostupné online.
  34. First thoughts on Deno, the JavaScript/TypeScript run-time online. 43081j.com, cit. 2021-01-12. Dostupné online.
  35. HOWARTH, Jesse. Why Discord is switching from Go to Rust online. Medium, 2020-02-04, cit. 2021-01-12. Dostupné online. (po anglicky)
  36. terminusdb/terminusdb-store online. 2021-01-12, cit. 2021-01-12. Original-date: 2019-07-23T16:35:59Z. Dostupné online.

Zdrojupraviť | upraviť zdroj

Tento článok je čiastočný alebo úplný preklad článku Rust (programovací jazyk) na českej Wikipédii.

Zdroj:
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Zdroj: Wikipedia.org - čítajte viac o Rust (programovací jazyk)





Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky použitia.

Your browser doesn’t support the object tag.

www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk