"Rust je budućnost sistemskog programiranja, C je novi asembler" - govor jednog od vodećih inženjera Intela

Na nedavnom summiju tehnologije otvorenog koda (OSTS) Josh Triplett, viši inženjer u Intelu, rekao je da je njegova tvrtka zainteresirana da Rust postigne "paritet" s jezikom C koji još uvijek dominira sustavima i razvojem niske razine u bliskoj budućnosti. U svom govoru Pod naslovom "Intel i Rust: Budućnost sistemskog programiranja" također je govorio o povijesti sistemskog programiranja, kako je C postao zadani sistemski programski jezik, koje značajke Rusta mu daju prednost u odnosu na C i kako je mogao potpuno zamijeniti C u ovom području programiranja.

"Rust je budućnost sistemskog programiranja, C je novi asembler" - govor jednog od vodećih inženjera Intela

Programiranje sustava je razvoj i upravljanje softverom koji služi kao platforma za kreiranje aplikacijskih aplikacija, osiguravajući interakciju potonjih s procesorom, RAM-om, ulazno/izlaznim uređajima i mrežnom opremom. Sistemski softver stvara posebnu apstrakciju u obliku sučelja koja pomažu u stvaranju aplikacijskog softvera bez ulaženja u detalje rada samog hardvera.

Sam Triplett definira sistemsko programiranje kao "sve što nije aplikacija". Uključuje stvari kao što su BIOS, firmware, bootloaderi i kerneli operativnog sustava, razne vrste ugrađenog koda niske razine i implementacije virtualnih strojeva. Zanimljivo, Triplett smatra da je web preglednik također sistemski softver, budući da je preglednik odavno postao više od “samo programa”, postavši samostalna “platforma za web stranice i web aplikacije”.

U prošlosti je većina sistemskih programa, uključujući BIOS, bootloadere i firmware, bila napisana u asemblerskom jeziku. U 1960-ima, eksperimenti su počeli pružati hardversku podršku za jezike visoke razine, što je dovelo do stvaranja jezika kao što su PL/S, BLISS, BCPL i ALGOL 68.

Zatim je 1970-ih Dennis Ritchie stvorio programski jezik C za operativni sustav Unix. Stvoren u programskom jeziku B, koji čak nije imao podršku za tipkanje, C je bio ispunjen snažnim funkcijama visoke razine koje su bile najprikladnije za pisanje operativnih sustava i upravljačkih programa. Nekoliko komponenti UNIX-a, uključujući njegovu jezgru, naposljetku je ponovno napisano u C-u. Nakon toga, mnogi drugi sistemski programi, uključujući Oracle bazu podataka, veći dio Windows izvornog koda i operativni sustav Linux, također su napisani u C-u.

C je dobio ogromnu potporu u tom smjeru. Ali što je točno natjeralo programere da pređu na njega? Triplett vjeruje da kako bi motivirali programere da se prebace s jednog programskog jezika na drugi, potonji prvo mora pružiti nove značajke bez gubitka starih značajki.

Prvo, jezik mora nuditi "razumno impresivne" nove značajke. “Ne može biti bolji. Mora biti značajno bolji kako bi opravdao trud i inženjersko vrijeme koje je potrebno za prijelaz,” objašnjava. U usporedbi s asemblerskim jezikom, C je imao puno toga za ponuditi. Podržavao je donekle sigurno ponašanje prema vrsti, pružao bolju prenosivost i izvedbu s konstrukcijama visoke razine i općenito generirao mnogo čitljiviji kod.

Drugo, jezik mora pružiti podršku za stare značajke, što znači da su u povijesti prijelaza na C programeri morali biti sigurni da nije ništa manje funkcionalan od asemblerskog jezika. Triplett objašnjava: "Novi jezik ne može biti samo bolji, mora biti i jednako dobar." Osim što je brži i podržava bilo koji tip podataka koji asemblerski jezik može koristiti, C je također imao ono što je Triplett nazvao "otvorom za izlaz"—naime, podržavao je umetanje koda asemblerskog jezika unutar sebe.

"Rust je budućnost sistemskog programiranja, C je novi asembler" - govor jednog od vodećih inženjera Intela

Triplett vjeruje da C sada postaje ono što je asemblerski jezik bio prije mnogo godina. "C je novi asembler", izjavljuje. Sada razvojni programeri traže novi jezik visoke razine koji ne samo da će riješiti probleme nagomilane u C-u koji se više ne mogu popraviti, već također nudi uzbudljive nove značajke. Takav jezik mora biti dovoljno uvjerljiv da natjera programere da prijeđu na njega, mora biti siguran, omogućiti automatsko upravljanje memorijom i još mnogo toga.

“Svaki jezik koji želi biti bolji od C-a mora ponuditi puno više od puke zaštite od prelijevanja međuspremnika ako doista želi biti uvjerljiva alternativa. Programeri su zainteresirani za upotrebljivost i performanse, pisanje koda koji je sam po sebi jasan i obavlja više posla u manje redaka. Također je potrebno riješiti sigurnosna pitanja. Jednostavnost korištenja i performanse idu ruku pod ruku. Što manje koda morate napisati da biste nešto postigli, to imate manje mogućnosti za bilo kakve pogreške, povezane sa sigurnošću ili ne,” objašnjava Triplett.

Usporedba Rusta i C

Još 2006. Graydon Hoare, zaposlenik Mozille, počeo je pisati Rust kao osobni projekt. A 2009. Mozilla je počela sponzorirati razvoj Rusta za vlastite potrebe, a također je proširila tim za daljnji razvoj jezika.

Jedan od razloga zašto je Mozilla bila zainteresirana za novi jezik je taj što je Firefox napisan u više od 4 milijuna linija C++ koda i imao je dosta kritičnih ranjivosti. Rust je napravljen imajući na umu sigurnost i konkurentnost, što ga čini idealnim izborom za ponovno pisanje mnogih Firefoxovih komponenti u sklopu projekta Quantum za potpuno redizajniranje arhitekture preglednika. Mozilla također koristi Rust za razvoj Servoa, HTML mehanizma za renderiranje koji će s vremenom zamijeniti trenutni Firefoxov mehanizam za renderiranje. Mnoge druge tvrtke počele su koristiti Rust za svoje projekte, uključujući Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu i mnoge druge.

Rust rješava jedan od najvažnijih problema jezika C. Nudi automatsko upravljanje memorijom tako da je programeri ne moraju ručno dodjeljivati ​​i oslobađati za svaki objekt u aplikaciji. Ono što čini Rust drugačijim od ostalih modernih jezika je to što nema skupljač smeća koji automatski uklanja neiskorištene objekte iz memorije, niti ima runtime okruženje potrebno za rad, poput Java Runtime Environment za Javu. Umjesto toga, Rust ima koncepte vlasništva, posudbe, referenci i životnog vijeka. “Rust ima sustav za proglašavanje poziva objektu kako bi pokazao koristi li ga vlasnik ili ga samo posuđuje. Ako jednostavno posudite objekt, prevodilac će to pratiti i osigurati da original ostane na mjestu sve dok na njega upućujete. Rust će također osigurati da se objekt ukloni iz memorije čim se njegova upotreba završi, umetanjem odgovarajućeg poziva u kod u vrijeme kompilacije bez dodatnog vremena,” kaže Triplett.

Nedostatak izvornog vremena izvođenja također se može smatrati pozitivnom značajkom Rusta. Triplett vjeruje da je jezike na kojima radi teško koristiti kao alate za programiranje sustava. Kako on objašnjava: "Morate inicijalizirati ovo runtime prije nego što možete pozvati bilo koji kod, morate koristiti ovo runtime za pozivanje funkcija, a samo runtime može pokrenuti dodatni kod iza vaših leđa u neočekivanim trenucima."

Rust također nastoji pružiti sigurno paralelno programiranje. Iste značajke koje ga čine memorijskim sigurnim prate stvari poput toga koja nit posjeduje koji objekt i koji se objekti mogu prosljeđivati ​​između niti i koji trebaju zaključavanje.

Sve te značajke čine Rust dovoljno uvjerljivim za programere da ga odaberu kao novi alat za sistemsko programiranje. Međutim, što se tiče paralelnog računanja, Rust je još uvijek malo iza C-a.

Triplett namjerava stvoriti posebnu radnu skupinu koja će se fokusirati na uvođenje potrebnih značajki u Rust kako bi mogao u potpunosti izjednačiti, nadmašiti i zamijeniti C u području sistemskog programiranja. U nit na Redditu, posvećenom svom govoru, rekao je kako je “FFI/C Parity grupa u procesu stvaranja i još nije počela s radom”, za sada je spreman odgovoriti na sva pitanja, au budućnosti će svakako objaviti neposredne planove za razvoj Rusta kao dio njegove inicijative za sve zainteresirane strane.

Može se pretpostaviti da će se grupa FFI/C Parity prije svega usredotočiti na poboljšanje podrške za više niti u Rustu, uvođenje podrške za BFLOAT16, format s pomičnim zarezom koji se pojavio u novim Intel Xeon Scalable procesorima, kao i stabilizacijski sklop umetanja kodova.



Izvor: 3dnews.ru

Dodajte komentar