Programiranje

Kaj je Rust? Varen, hiter in enostaven razvoj programske opreme

Hitro, varno, enostavno za pisanje - izberite katero koli dve. To je stanje razvoja programske opreme že dolgo časa. Jeziki, ki poudarjajo udobje in varnost, so ponavadi počasni (na primer Python). Z jeziki, ki poudarjajo uspešnost, je težko delati in z njimi enostavno odpihniti noge (na primer C in C ++).

Ali je mogoče vse tri atribute dostaviti v enem jeziku? Še pomembneje pa je, ali lahko svet spodbudi k sodelovanju? Jezik Rust, ki ga je prvotno ustvaril Graydon Hoare, trenutno pa ga sponzorira Mozilla Research, je poskus delati prav te stvari. (Jezik Google Go ima podobne ambicije, vendar si Rust želi čim manj popuščati uspešnosti.)

Sorodni video: Razvijanje varnejše programske opreme z Rustom

Hitro pospešite novost Rust, zasnovano za ustvarjanje hitre programske opreme na sistemski ravni. Ta dvominutni animirani razlagalnik prikazuje, kako Rust obide moteča programska vprašanja glede pomnilnika in upravljanja.

Rust naj bi bil hiter, varen in razmeroma enostaven za programiranje. Namenjen je tudi široki uporabi in ne zgolj kot zanimivost ali kot naključna nagradna igra. Obstaja veliko razlogov za ustvarjanje jezika, v katerem je varnost enaka hitrosti in razvojni moči. Navsezadnje obstaja ogromno programske opreme - nekaj, ki poganja kritično infrastrukturo - zgrajena z jeziki, pri katerih varnost ni bila prva skrb.

Prednosti programskega jezika rje

Rust se je začel kot raziskovalni projekt Mozilla, ki je bil delno namenjen ponovni izvedbi ključnih komponent brskalnika Firefox. Nekaj ​​ključnih razlogov je vodilo k tej odločitvi: Firefox si je zaslužil, da bolje izkoristi sodobne večjedrne procesorje; in velika razširjenost spletnih brskalnikov pomeni, da morajo biti varni za uporabo.

Toda te prednosti potrebuje vsa programska oprema, ne samo brskalniki, zato se je Rust iz projekta brskalnika razvil v jezikovni projekt. Rust doseže svojo varnost, hitrost in enostavnost uporabe z naslednjimi značilnostmi.

Rja je hitra

Koda Rust se prevede v izvorno strojno kodo na več platformah. Binarni programi so samostojni, brez časa izvajanja, ustvarjena koda pa je namenjena za delovanje, pa tudi primerljiva koda, napisana v C ali C ++.

Rja je varna za spomin

Rust ne bo sestavljal programov, ki poskušajo varno uporabljati pomnilnik. Večina napak v pomnilniku se odkrije med izvajanjem programa. Sintaksa in jezikovne metafore Rusta zagotavljajo, da običajne težave s spominom v drugih jezikih - ničelni ali viseči kazalci, podatkovne dirke itd. - nikoli ne pridejo v produkcijo. Prevajalnik te težave označi z zastavico in jih prisili, da se popravijo, preden se program sploh zažene.

Rja je nizka

Rust nadzoruje upravljanje pomnilnika s strogimi pravili. Rustov sistem za upravljanje spomina se izraža v sintaksi jezika z metaforo, imenovano lastništvo. Vsako dano vrednost v jeziku je lahko v lasti ali hrambi in z njo manipulira samo ena spremenljivka hkrati.

Način prenosa lastništva med predmeti strogo ureja prevajalnik, zato med izvajanjem ni presenečenj v obliki napak pri dodeljevanju pomnilnika. Lastniški pristop pomeni tudi, da ni upravljanja s pomnilnikom, zbranega s smeti, kot v jezikih, kot sta Go ali C #. (To tudi Rustu poveča novo zmogljivost.) Vsakemu pomnilniku v programu Rust sledimo in ga samodejno sprostimo z metaforo lastništva.

Rja je prožna

Rja vam omogoča, da do neke mere živite nevarno. Varnost Rusta lahko delno onemogočimo tam, kjer morate neposredno upravljati s pomnilnikom, na primer z dereferenciranjem surovega kazalca à la C / C ++. Ključna beseda je delno, ker Rustovih varnostnih operacij pomnilnika ni mogoče popolnoma onemogočiti. Tudi takrat skoraj nikoli ni treba sneti varnostnih pasov za običajne primere uporabe, zato je končni rezultat privzeto varnejša programska oprema.

Rja je enostavna za uporabo

Nobena od varnostnih funkcij in integritete Rusta ne prispeva veliko, če se ne uporabljajo. Zato so se razvijalci in skupnost Rusta trudili, da bi bil jezik za uporabnike čim bolj uporaben in prijeten.

Vse, kar je potrebno za izdelavo rjavih datotek, je v istem paketu. Zunanji prevajalniki, kot je GCC, so potrebni samo, če zbirate druge komponente zunaj ekosistema Rust (na primer knjižnico C, ki jo zbirate iz vira). Tudi uporabniki sistema Microsoft Windows niso drugorazredni državljani; veriga orodij Rust je tam tako sposobna kot v Linuxu in MacOS-u.

Rust je večplastna

Rust deluje na vseh treh glavnih platformah: Linux, Windows in MacOS. Druge podpirajo poleg teh treh. Če želiš navzkrižno prevajanje, ali izdelate binarne datoteke za drugačno arhitekturo ali platformo, kot je trenutno vaša, gre za nekaj več dela, vendar je ena od splošnih Rustovih nalog zmanjšati količino težkih dvigal, potrebnih za takšno delo. Čeprav Rust deluje na večini sedanjih platform, cilj njegovih ustvarjalcev ni, da Rust zbira popolnoma povsod - ravno na kateri koli platformi, ki je priljubljena, in povsod, kjer jim za to ni treba sklepati nepotrebnih kompromisov.

Rust ima zmogljive jezikovne funkcije

Le malo razvijalcev želi začeti delo v novem jeziku, če ugotovi, da ima manj ali šibkejše funkcije od tistih, ki so jih vajeni. Značilnosti Rustovega maternega jezika so ugodno primerljive z jeziki, kot je C ++: Makri, generiki, ujemanje vzorcev in sestava (s pomočjo "lastnosti") so vsi prvovrstni državljani Rusta.

Rust ima uporabno standardno knjižnico

Del večjega poslanstva Rusta je spodbuditi razvijalce za C in C ++, da namesto teh jezikov uporabljajo Rust, kadar koli je to mogoče. Toda uporabniki C in C ++ pričakujejo dostojno standardno knjižnico - želijo imeti možnost uporabe vsebnikov, zbirk in iteratorjev, izvajati manipulacije z nizi, upravljati procese in navoje, izvajati omrežne in datotečne V / I itd. Vse to in še več Rust naredi v svoji standardni knjižnici. Ker je Rust zasnovan za več platform, lahko njegova standardna knjižnica vsebuje samo stvari, ki jih je mogoče zanesljivo prenesti med platforme. Funkcije, specifične za platformo, kot je Linuxov epoll, morajo biti podprte s funkcijami v drugih knjižnicah, kot so libc, mio ​​ali tokio.

Rust je mogoče uporabljati tudi brez standardne knjižnice. Eden najpogostejših razlogov za to je izdelava binarnih datotek, ki nimajo odvisnosti od platforme - npr. Vdelani sistem ali jedro OS.

Rust ima veliko drugih knjižnic ali "zabojev"

Eno merilo uporabnosti jezika je, koliko lahko z njim naredimo s pomočjo tretjih oseb. Cargo, uradno skladišče knjižnic Rust (imenovano "zaboji"), vsebuje približno deset tisoč zabojev. Zdravo število jih je vezava API-jev na običajne knjižnice ali ogrodja, zato je Rust mogoče uporabiti kot izvedljivo jezikovno možnost s temi okviri. Vendar skupnost Rust še ne zagotavlja podrobnih navodil ali razvrščanja zabojev na podlagi njihove splošne kakovosti in uporabnosti, zato ne morete ugotoviti, kaj dobro deluje, ne da bi sami preizkusili stvari ali anketirali skupnost.

Rust ima dobro podporo IDE

Le malo razvijalcev želi sprejeti jezik z malo ali nič podpore v IDE po svoji izbiri. Zato je Rust pred kratkim predstavil jezikovni strežnik Rust, ki daje povratne informacije prevajalnika Rust v živo IDE-jem, kot je Microsoft Visual Studio Code.

Slabosti programskega jezika rje

Poleg vseh svojih privlačnih, zmogljivih in uporabnih zmogljivosti ima Rust tudi svoje slabosti. Nekatere od teh ovir se spotaknejo z novimi "rustaceans" (kot se med seboj kličejo oboževalci Rusta) in starimi rokami.

Rja je nova

Rust je še vedno mlad jezik, saj je svojo različico 1.0 izdal šele leta 2015. Torej, medtem ko je večina sintakse in funkcionalnosti jedrnega jezika izklesana, je veliko drugih stvari okoli njega še vedno tekoče.

Asinhrone operacije na primer še vedno niso dobro predstavljene v sintaksi jezika. Trenutno poteka delo za izvajanje async operacij prek asinh in čakati ključne besede.

Rjave se je težko naučiti

Če je karkoli v zvezi z Rustom najbolj problematično, je kako težko preiskovati Rustove metafore. Lastništvo, izposoja in drugo Rustovo upravljanje s pomnilnikom predstavlja domišljijo vsi prvič. Mnogi začetniki programerjev Rust imajo običajen obred, "boj proti izposojevalniku", kjer iz prve roke odkrijejo, kako natančen je prevajalnik pri ločevanju spremenljivih in nespremenljivih stvari.

Rja je zapletena

Nekatere težave izhajajo iz tega, kako Rustove metafore naredijo bolj podrobno kodo v primerjavi z drugimi jeziki. Na primer, združevanje nizov v Rustu ni vedno tako enostavno kot niz1 + niz2. En predmet je lahko spremenljiv, drugi pa nespremenljiv. Rust je nagnjen k vztrajanju, da programer natančno določi, kako ravnati s takimi stvarmi, ne pa da pusti prevajalniku, da ugane.

Še en primer: kako Rust in C / C ++ delujeta skupaj. Veliko časa se Rust uporablja za vklop v obstoječe knjižnice, napisane v jeziku C ali C ++; nekaj projektov v C in C ++ je v Rustu na novo napisanih iz nič. (In kadar so, se običajno postopoma prepisujejo.)

Cestni zemljevid jezika Rust

Ekipa Rusta se zaveda številnih teh vprašanj in si prizadeva, da bi jih izboljšala. Da bi Rustu na primer olajšali delo s C in C ++, ekipa Rusta preiskuje, ali naj razširi projekte, kot je bindgen, ki samodejno generira Rust-ove vezi na kodo C. Ekipa ima tudi načrte, da bo najemanje posojil in njihovo življenjsko dobo bolj prilagodljivo in lažje razumljivo.

Kljub temu Rust uspe doseči svoj cilj, da zagotovi varen, sočasen in praktičen sistemski jezik, tako kot drugi jeziki tega ne storijo, in to na načine, ki dopolnjujejo, kako že delujejo razvijalci.

$config[zx-auto] not found$config[zx-overlay] not found