Programmēšana

Kas ir rūsa? Droša, ātra un ērta programmatūras izstrāde

Ātri, droši, viegli rakstāmi - izvēlieties jebkurus divus. Tas jau labu laiku ir bijis programmatūras izstrādes stāvoklis. Valodas, kas uzsver ērtības un drošību, mēdz būt lēnas (piemēram, Python). Valodas, kas uzsver veiktspēju, parasti ir grūti strādājamas, un ar tām var viegli nopūsties (piemēram, C un C ++).

Vai visus trīs no šiem atribūtiem var piegādāt vienā valodā? Vēl svarīgāk, vai jūs varat panākt, lai pasaule strādā ar to? Rust valoda, kuru sākotnēji izveidoja Greidons Hoare un kuru pašlaik sponsorē Mozilla Research, ir mēģinājums darīt tieši šīs lietas. (Google Go valodai ir līdzīgas ambīcijas, taču Rust mērķis ir pēc iespējas mazāk piekāpties veiktspējai.)

Saistītais video: drošākas programmatūras izstrāde ar Rust

Ātri apgūstiet jaunpienācēju Rust, kas paredzēts ātras, sistēmas līmeņa programmatūras izveidei. Šis divu minūšu animētais skaidrotājs parāda, kā Rust apiet nepatīkamos atmiņas un pārvaldības programmēšanas jautājumus.

Rūsai ir jābūt ātrai, drošai un samērā viegli ieprogrammējamai. To ir paredzēts izmantot arī plaši, nevis vienkārši kļūt par ziņkārību vai arī izlozētu valodu izlozi. Ir daudz pamatotu iemeslu valodas izveidei, kur drošība ir vienādā stāvoklī ar ātrumu un attīstības spēku. Galu galā ir milzīgs daudzums programmatūras - daļa no tām vada kritisko infrastruktūru -, kas veidota ar valodām, kurās drošība nebija galvenā problēma.

Rūsas programmēšanas valodas priekšrocības

Rust sākās kā Mozilla izpētes projekts, kas daļēji bija paredzēts, lai atjaunotu Firefox pārlūka galvenos komponentus. Daži galvenie iemesli lēma par šo lēmumu: Firefox bija pelnījis labāk izmantot modernus daudzkodolu procesorus; un tīmekļa pārlūkprogrammu visuresamība nozīmē, ka tām ir jābūt drošām lietošanā.

Bet šie ieguvumi ir vajadzīgi visai programmatūrai, ne tikai pārlūkprogrammām, tāpēc Rust no pārlūkprogrammas projekta pārtapa valodas projektā. Rūsas drošība, ātrums un ērta lietošana nodrošina šādas īpašības.

Rūsa ir ātra

Rūsas kods tiek apkopots kā vietējais mašīnkods vairākās platformās. Binārie faili ir patstāvīgi, bez izpildlaika, un ģenerētais kods ir paredzēts darbam, kā arī salīdzināmam kodam, kas rakstīts C vai C ++.

Rūsa ir droša atmiņā

Rust neapkopos programmas, kas mēģina nedroši izmantot atmiņu. Lielākā daļa atmiņas kļūdu tiek atklāta, kad programma darbojas. Rust sintakse un valodas metaforas nodrošina, ka kopīgas ar atmiņu saistītas problēmas citās valodās - nulles vai nokarenas norādes, datu sacīkstes utt. - nekad nepadara to ražošanā. Sastādītājs atzīmē šos jautājumus un liek tos novērst pirms programmas darbības.

Rūsa ir zemu virs galvas

Rūss kontrolē atmiņas pārvaldību, izmantojot stingrus noteikumus. Rust atmiņas pārvaldības sistēma tiek izteikta valodas sintaksē, izmantojot metaforu, ko sauc īpašumtiesības. Jebkuru norādīto vērtību valodā var “piederēt”, turēt un manipulēt tikai viens mainīgais vienlaikus.

Veidu, kā īpašumtiesības tiek nodotas starp objektiem, stingri nosaka kompilators, tāpēc izpildes laikā nav pārsteigumu atmiņas piešķiršanas kļūdu veidā. Īpašumtiesību pieeja nozīmē arī to, ka nav atkritumu savāktās atmiņas pārvaldības, piemēram, tādās valodās kā Go vai C #. (Tas arī nodrošina Rust vēl vienu veiktspējas palielinājumu.) Katrs Rust programmas atmiņas bits tiek izsekots un automātiski atbrīvots, izmantojot īpašumtiesību metaforu.

Rūsa ir elastīga

Rūsa ļauj jums dzīvot bīstami, ja nepieciešams, līdz vietai. Rūsas drošība var tikt daļēji apturēta, ja jums tieši jārīkojas ar atmiņu, piemēram, izejvielu rādītāja atcelšana à la C / C ++. Atslēgas vārds ir daļēji, jo Rusta atmiņas drošības darbības nekad nevar pilnībā atspējot. Pat tad jums gandrīz nekad nav jānoņem drošības jostas parastās lietošanas gadījumos, tāpēc gala rezultāts ir programmatūra, kas pēc noklusējuma ir drošāka.

Rūsu ir viegli lietot

Neviens no Rust drošības un integritātes līdzekļiem neko daudz nepievieno, ja tos neizmanto. Tāpēc Rust izstrādātāji un sabiedrība ir centušies padarīt valodu pēc iespējas noderīgāku un jaunpienācējiem draudzīgāku.

Viss nepieciešamais, lai ražotu Rust bināros materiālus, ir vienā iepakojumā. Ārējie kompilatori, piemēram, GCC, ir nepieciešami tikai tad, ja kompilējat citus komponentus ārpus Rust ekosistēmas (piemēram, C bibliotēku, kuru kompilējat no avota). Arī Microsoft Windows lietotāji nav otrās šķiras pilsoņi; Rust rīku ķēde tur ir tikpat spējīga kā Linux un MacOS.

Rūsas ir pārrobežu platformas

Rust darbojas uz visām trim galvenajām platformām: Linux, Windows un MacOS. Citi tiek atbalstīti ārpus šiem trim. Ja Tu gribi savstarpēji sastādīt, vai arī ražojiet bināros failus citai arhitektūrai vai platformai, nekā jūs pašlaik izmantojat, ir iesaistīts nedaudz vairāk darba, taču viena no Rust vispārējām misijām ir samazināt šādam darbam nepieciešamo smago celšanas apjomu. Lai arī Rust darbojas lielākajā daļā pašreizējo platformu, tā radītāju mērķis nav panākt, lai Rust tiktu kompilēts absolūti visur - tikai uz jebkurām populārām platformām un visur, kur to darīt nav nepieciešams.

Rūsai ir spēcīgas valodas funkcijas

Tikai daži izstrādātāji vēlas sākt darbu jaunā valodā, ja viņiem šķiet, ka tajā ir mazāk vai vājākas funkcijas nekā tām, kuras viņi izmanto. Rust dzimtās valodas iezīmes ir labvēlīgas salīdzinājumā ar tādām valodām kā C ++: Makro, vispārīgie, modeļu saskaņošana un sastāvs (izmantojot “pazīmes”) ir Rustas pirmās klases pilsoņi.

Rūsai ir noderīga standarta bibliotēka

Viena no Rust lielākās misijas daļām ir mudināt C un C ++ izstrādātājus pēc iespējas izmantot Rust šo valodu vietā. Bet C un C ++ lietotāji sagaida, ka viņiem būs pienācīga standarta bibliotēka - viņi vēlas, lai viņi varētu izmantot konteinerus, kolekcijas un iteratorus, veikt virkņu manipulācijas, pārvaldīt procesus un pavedienus, veikt tīkla un failu I / O utt. Rust visu to un vēl vairāk dara savā standarta bibliotēkā. Tā kā Rust ir paredzēts pārrobežu platformai, tā standarta bibliotēkā var būt tikai lietas, kuras var droši pārvietot pa platformām. Platformas specifiskās funkcijas, piemēram, Linux epoll, ir jāatbalsta, izmantojot funkcijas trešo pušu bibliotēkās, piemēram, libc, mio ​​vai tokio.

Ir iespējams arī izmantot Rust bez tā standarta bibliotēkas. Viens izplatīts iemesls to darīt ir veidot bināros failus, kuriem nav atkarības no platformas, piemēram, iegultā sistēma vai OS kodols.

Rust ir daudz trešo pušu bibliotēku jeb “redeļu kastes”

Viens valodas lietderības rādītājs ir tas, cik daudz ar to var paveikt, pateicoties trešajām pusēm. Cargo, oficiālajā Rust bibliotēku krātuvē (sauktās par “redeļu kastēm”) ir uzskaitīti apmēram desmit tūkstoši redeļu kastu. Vesels skaits no tiem ir API saistīšana ar kopīgām bibliotēkām vai ietvariem, tāpēc Rust var izmantot kā reālu valodas iespēju ar šiem ietvariem. Tomēr Rust kopiena vēl nenodrošina detalizētu kastu kurāciju vai rangu, pamatojoties uz to vispārējo kvalitāti un lietderību, tāpēc jūs nevarat pateikt, kas darbojas labi, ja pats neizmēģināt lietas vai aptaujāt sabiedrību.

Rustam ir labs IDE atbalsts

Atkal daži izstrādātāji vēlas izmantot valodu, kuras izvēlētajā IDE ir maz vai vispār nav atbalsta. Tāpēc Rust nesen ieviesa valodas serveri Rust, kas nodrošina tiešu atgriezenisko saiti no Rust kompilatora IDE, piemēram, Microsoft Visual Studio Code.

Rūsas programmēšanas valodas trūkumi

Līdztekus visām pievilcīgajām, spēcīgajām un noderīgajām iespējām Rustam ir arī savas ēnas puses. Daži no šiem šķēršļiem līdzinās jauniem “rustaceans” (kā viens otru sauc Rust fani) un vecajām rokām.

Rūsa ir jauna

Rūss joprojām ir jauna valoda, un tā 1.0 versiju piegādāja tikai 2015. gadā. Tātad, lai gan liela daļa pamatvalodas sintakses un funkcionalitātes ir samazināta, daudzas citas lietas ap to joprojām ir plūstošas.

Piemēram, asinhronās darbības valodas sintaksē joprojām nav labi attēlotas. Notiek darbs, lai ieviestu asinhronās darbības, izmantojot asinhronais un gaidi atslēgvārdi.

Rūsu ir grūti iemācīties

Ja kāda problēma par Rūsu ir visproblemātiskākā, cik grūti var būt grābt Rusta metaforas. Īpašumtiesības, aizņemšanās un cita Rusta atmiņas pārvaldība ir iecerēta visi pirmo reizi. Daudziem iesācēju Rust programmētājiem ir kopīgs rituāls - “cīņa pret aizņēmumu pārbaudītāju” -, kur viņi no pirmavotiem atklāj, cik rūpīgi sastādītājs ir gatavs mainīt un nemaināmas lietas atsevišķi.

Rūsa ir sarežģīta

Dažas grūtības rodas no tā, kā Rusta metaforas rada daudzprecīzāku kodu salīdzinājumā ar citām valodām. Piemēram, stīgu savienošana Rust ne vienmēr ir tik vienkārša kā string1 + string2. Viens objekts var būt mainīgs, bet otrs nemainīgs. Rūss ir sliecas uzstāt, lai programmētājs izskaidro, kā rīkoties ar šādām lietām, nevis ļaut sastādītājam uzminēt.

Vēl viens piemērs: kā Rust un C / C ++ darbojas kopā. Lielu daļu laika Rust izmanto, lai pievienotu esošajām bibliotēkām, kas rakstītas C vai C ++; daži projekti C un C ++ Rustā tiek pārrakstīti no nulles. (Un kad viņi ir, tos mēdz pārrakstīt pakāpeniski.)

Rust valodas ceļa karte

Rust komanda apzinās daudzus no šiem jautājumiem un strādā, lai tos uzlabotu. Piemēram, lai atvieglotu Rust darbu ar C un C ++, Rust komanda pēta, vai paplašināt tādus projektus kā bindgen, kas automātiski ģenerē Rust saistījumus ar C kodu. Komanda arī plāno padarīt aizņemšanos un dzīves ilgumu elastīgāku un vieglāk saprotamu.

Tomēr Rust izdodas sasniegt drošu, vienlaicīgu un praktisku sistēmu valodu tādā veidā, kā citas valodas to nedara, un darīt to tādā veidā, kas papildina to, kā izstrādātāji jau strādā.

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