Programmering

Hva er Rust? Sikker, rask og enkel programvareutvikling

Raskt, trygt, enkelt å skrive - velg to. Det har vært tilstanden for programvareutvikling lenge lenge. Språk som understreker bekvemmelighet og sikkerhet, har en tendens til å være treg (som Python). Språk som fremhever ytelse, har en tendens til å være vanskelig å jobbe med og lett å blåse av føttene med (som C og C ++).

Kan alle disse tre attributtene leveres på ett språk? Enda viktigere, kan du få verden til å jobbe med det? Rust-språket, opprinnelig opprettet av Graydon Hoare og for tiden sponset av Mozilla Research, er et forsøk på å gjøre nettopp disse tingene. (Google Go-språket har lignende ambisjoner, men Rust har som mål å gjøre så få innrømmelser til ytelse som mulig.)

Relatert video: Utvikler tryggere programvare med Rust

Kom raskt i gang med nykommer Rust, designet for å lage rask programvare på systemnivå. Denne to-minutters animerte forklareren viser hvordan Rust omgår de plagsomme programmeringsproblemene med minne og ledelse.

Rust er ment å være raskt, trygt og rimelig enkelt å programmere i. Det er også ment å bli brukt mye, og ikke bare ende opp som en nysgjerrighet eller en også kjørt i språket. Det er mange gode grunner for å skape et språk der sikkerhet sitter på lik linje med fart og utviklingskraft. Tross alt er det en enorm mengde programvare - noe som driver kritisk infrastruktur - bygget med språk der sikkerhet ikke var det første problemet.

Rust programmeringsspråk fordeler

Rust startet som et Mozilla-forskningsprosjekt, delvis ment å implementere viktige komponenter i Firefox-nettleseren. Noen få viktige grunner drev beslutningen: Firefox fortjente å utnytte moderne prosessorer med flere kjerner bedre; og nettlesernes allestedsnærværende betyr at de må være trygge å bruke.

Men disse fordelene er nødvendig av all programvare, ikke bare nettlesere, og derfor utviklet Rust seg til et språkprosjekt fra et nettleserprosjekt. Rust oppnår sin sikkerhet, hastighet og brukervennlighet gjennom følgende egenskaper.

Rust er raskt

Rustkode kompileres til naturlig maskinkode på tvers av flere plattformer. Binærfiler er selvstendig, uten kjøretid, og den genererte koden er ment å utføre så vel som sammenlignbar kode skrevet i C eller C ++.

Rust er hukommelsessikkert

Rust vil ikke kompilere programmer som forsøker usikker minnebruk. De fleste minnefeil oppdages når et program kjører. Rusts syntaks og språkmetaforer sørger for at vanlige hukommelsesrelaterte problemer på andre språk - null eller dinglende pekere, dataløp og så videre - aldri gjør det til produksjon. Kompilatoren flagger disse problemene og tvinger dem til å bli løst før programmet noen gang kjører.

Rust er lite overhead

Rust styrer minnestyring via strenge regler. Rusts minnehåndteringssystem kommer til uttrykk i språkets syntaks gjennom en metafor som heter eie. Enhver gitt verdi i språket kan "eies" eller holdes og manipuleres, bare av en enkelt variabel om gangen.

Måten eierskap overføres mellom objekter styres strengt av kompilatoren, så det er ingen overraskelser ved kjøretid i form av minnetildelingsfeil. Eierskapstilnærmingen betyr også at det ikke er søppelinnsamlet minnehåndtering, som på språk som Go eller C #. (Det gir også Rust et nytt ytelsesløft.) Hver eneste minne i et Rust-program spores og frigis automatisk gjennom eierskapsmetaforen.

Rust er fleksibelt

Rust lar deg leve farlig hvis du trenger det, til et punkt. Rusts sikkerhet kan delvis henges opp der du trenger å manipulere minnet direkte, for eksempel å referere til en rå peker à la C / C ++. Stikkordet er til dels, fordi Rusts minnesikkerhetsoperasjoner aldri kan deaktiveres fullstendig. Selv da trenger du nesten aldri å ta av sikkerhetsbeltene for vanlige bruksområder, så sluttresultatet er programvare som er tryggere som standard.

Rust er enkel å bruke

Ingen av Rusts sikkerhets- og integritetsfunksjoner legger opp til mye hvis de ikke brukes. Derfor har Rusts utviklere og samfunn prøvd å gjøre språket så nyttig og innbydende som mulig for nykommere.

Alt som trengs for å produsere rustbinarier kommer i samme pakke. Eksterne kompilatorer, som GCC, trengs bare hvis du kompilerer andre komponenter utenfor Rust-økosystemet (for eksempel et C-bibliotek som du kompilerer fra kilde). Microsoft Windows-brukere er heller ikke annenrangs borgere; Rust-verktøykjeden er like dyktig der som den er på Linux og MacOS.

Rust er plattform

Rust fungerer på alle de tre store plattformene: Linux, Windows og MacOS. Andre støttes utover disse tre. Hvis du vil krysskompilere, eller produsere binærfiler for en annen arkitektur eller plattform enn den du kjører for øyeblikket, er litt mer arbeid involvert, men en av Rusts generelle oppdrag er å minimere mengden tunge løft som trengs for slikt arbeid. Selv om Rust fungerer på flertallet av dagens plattformer, er det ikke skaperens mål å få Rust til å kompilere absolutt overalt - bare på hvilke plattformer som er populære, og uansett hvor de ikke trenger å gjøre unødvendige kompromisser for å gjøre det.

Rust har kraftige språkfunksjoner

Få utviklere vil begynne å jobbe på et nytt språk hvis de synes det har færre eller svakere funksjoner enn de de er vant til. Rusts morsmålsfunksjoner kan sammenlignes gunstig med hva språk som C ++ har: Makroer, generikk, mønstermatching og komposisjon (via "trekk") er alle førsteklasses borgere i Rust.

Rust har et nyttig standardbibliotek

En del av Rusts større oppgave er å oppmuntre C- og C ++ -utviklere til å bruke Rust i stedet for disse språkene når det er mulig. Men C- og C ++ -brukerne forventer å ha et anstendig standardbibliotek - de vil kunne bruke containere, samlinger og iteratorer, utføre strengmanipulasjoner, administrere prosesser og threading, utføre nettverks- og fil-I / U og så videre. Rust gjør alt det og mer i standardbiblioteket. Fordi Rust er designet for å være plattform, kan standardbiblioteket bare inneholde ting som på en pålitelig måte kan porteres på tvers av plattformer. Plattformspesifikke funksjoner som Linuxs epoll må støttes via funksjoner i tredjepartsbiblioteker som libc, mio ​​eller tokio.

Det er også mulig å bruke Rust uten standardbiblioteket. En vanlig grunn til å gjøre dette er å bygge binærfiler som ikke har noen plattformavhengigheter - for eksempel et innebygd system eller en OS-kjerne.

Rust har mange tredjepartsbiblioteker, eller "kasser"

Et mål på bruken av et språk er hvor mye som kan gjøres med det takket være tredjeparter. Cargo, det offisielle depotet for Rust-biblioteker (kalt "kasser") lister opp rundt ti tusen kasser. Et sunt antall av dem er API-bindinger til vanlige biblioteker eller rammer, så Rust kan brukes som et levedyktig språkalternativ med disse rammene. Rust-samfunnet leverer imidlertid ikke detaljert kurater eller rangering av kasser basert på deres generelle kvalitet og nytte, så du kan ikke fortelle hva som fungerer bra uten å prøve ting selv eller avstemme samfunnet.

Rust har god IDE-støtte

Igjen, få utviklere ønsker å omfavne et språk med liten eller ingen støtte i IDE etter eget valg. Derfor introduserte Rust nylig Rust Language Server, som gir live tilbakemeldinger fra Rust-kompilatoren til IDEer som Microsoft Visual Studio Code.

Rust programmeringsspråk ulemper

Sammen med alle sine attraktive, kraftige og nyttige evner, har Rust sine ulemper. Noen av disse hindringene trekker opp nye "rustaceans" (som Rust-fans kaller hverandre) og gamle hender.

Rust er nytt

Rust er fremdeles et ungt språk, etter å ha levert 1.0-versjonen bare i 2015. Så selv om mye av kjernespråket er syntaks og funksjonalitet, er mange andre ting rundt det fortsatt flytende.

Asynkrone operasjoner, for eksempel, er fremdeles ikke representert godt i språkets syntaks. Arbeidet pågår for å implementere asynkroniseringsoperasjoner via asynkronisering og avvente søkeord.

Rust er vanskelig å lære

Hvis noe med Rust er mest problematisk, er det hvor vanskelig det kan være å grok Rusts metaforer. Eierskap, lån og Rusts andre minnehåndteringsbegrep alle sammen opp første gang. Mange Rust-programmerere for nybegynnere har en felles overgangsritual, "slåss mot lånejekken", hvor de oppdager på første hånd hvor nøye kompilatoren handler om å holde foranderlige og uforanderlige ting atskilt.

Rust er kompleks

Noe av vanskeligheten kommer fra hvordan Rusts metaforer gir mer detaljert kode, sammenlignet med andre språk. For eksempel er strengkombinasjon i Rust ikke alltid like grei som streng1 + streng2. Det ene objektet kan være foranderlig og det andre uforanderlig. Rust er tilbøyelig til å insistere på at programmereren staver ut hvordan man skal håndtere slike ting, i stedet for å la kompilatoren gjette.

Et annet eksempel: hvordan Rust og C / C ++ fungerer sammen. Mye av tiden brukes Rust til å plugges inn i eksisterende biblioteker skrevet i C eller C ++; få prosjekter i C og C ++ blir omskrevet fra bunnen av i Rust. (Og når de er det, pleier de å bli omskrevet trinnvis.)

Rustkartets veikart

Rust-teamet er klar over mange av disse problemene og jobber for å forbedre dem. For eksempel, for å gjøre Rust enklere å jobbe med C og C ++, undersøker Rust-teamet om de skal utvide prosjekter som bindgen, som automatisk genererer Rust-bindinger til C-kode. Teamet har også planer om å gjøre lån og levetid mer fleksible og lettere å forstå.

Rust lykkes likevel med sitt mål å tilby et trygt, samtidig og praktisk systemspråk, på måter som andre språk ikke gjør, og å gjøre det på måter som utfyller hvordan utviklere allerede jobber.

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