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

Na nedavnom Open Source Technology Summi (OSTS) Josh Triplett, viši inženjer u Intelu, rekao je da je njegova kompanija zainteresovana da Rust postigne „paritet“ sa jezikom C koji i dalje dominira sistemima i razvojem niskog nivoa u bliskoj budućnosti. U svom govoru Pod naslovom "Intel i Rust: Budućnost sistemskog programiranja" govorio je i o istoriji sistemskog programiranja, kako je C postao podrazumevani sistemski programski jezik, koje karakteristike Rusta mu daju prednost u odnosu na C i kako bi mogao u potpunosti zamijenite C u ovoj oblasti programiranja.

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

Sistemsko programiranje je razvoj i upravljanje softverom koji služi kao platforma za kreiranje aplikativnih aplikacija, osiguravajući interakciju potonjih sa procesorom, RAM-om, ulazno/izlaznim uređajima i mrežnom opremom. Sistemski softver stvara posebnu apstrakciju u obliku interfejsa koji pomažu u kreiranju aplikativnog softvera bez upuštanja u detalje o tome kako sam hardver radi.

Sam Triplett definira sistemsko programiranje kao “sve što nije aplikacija”. Uključuje stvari poput BIOS-a, firmvera, pokretača i kernela operativnog sistema, različite vrste ugrađenog koda niskog nivoa i implementacije virtuelnih mašina. Zanimljivo je da Triplett vjeruje da je web preglednik i sistemski softver, budući da je pretraživač 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, pokretače i firmver, bila napisana u asemblerskom jeziku. U 1960-im, eksperimenti su počeli da pružaju hardversku podršku za jezike visokog nivoa, što je dovelo do stvaranja jezika kao što su PL/S, BLISS, BCPL i ALGOL 68.

Zatim, 1970-ih, Dennis Ritchie je kreirao programski jezik C za operativni sistem Unix. Stvoren u programskom jeziku B, koji čak nije imao podršku za kucanje, C je bio ispunjen moćnim funkcijama visokog nivoa koje su bile najprikladnije za pisanje operativnih sistema i drajvera. Nekoliko komponenti UNIX-a, uključujući njegovo jezgro, na kraju je prepisano u C. Nakon toga, mnogi drugi sistemski programi, uključujući Oracle bazu podataka, veći dio Windows izvornog koda i Linux operativni sistem, također su napisani u C.

C je dobio ogromnu podršku u ovom pravcu. Ali šta je tačno navelo programere da se prebace na njega? Triplett vjeruje da, kako bi motivirali programere da se prebace s jednog programskog jezika na drugi, potonji prvo moraju obezbijediti nove karakteristike bez gubitka starih karakteristika.

Prvo, jezik mora ponuditi "razumno impresivne" nove karakteristike. “Ne može biti bolji. Mora biti znatno bolje da se opravda trud i vrijeme inženjeringa koji su potrebni za tranziciju,” objašnjava on. U poređenju sa asemblerskim jezikom, C je imao mnogo toga da ponudi. Podržao je donekle bezbedno ponašanje, obezbedio bolju prenosivost i performanse sa konstrukcijama visokog nivoa i generisao mnogo čitljiviji kod u celini.

Drugo, jezik mora da obezbedi podršku za stare karakteristike, što znači da su u istoriji prelaska na C, programeri morali da budu sigurni da on nije ništa manje funkcionalan od asemblerskog jezika. Triplett objašnjava: “Novi jezik ne može biti samo bolji, već mora biti i jednako dobar.” Osim što je brži i podržava bilo koji tip podataka koji može koristiti asemblerski jezik, C je imao i ono što je Triplett nazvao "escape hatch" - 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 Intelovih inženjera

Triplett vjeruje da C sada postaje ono što je asemblerski jezik bio prije mnogo godina. “C je novi asembler,” izjavljuje on. Sada programeri traže novi jezik visokog nivoa koji ne samo da će riješiti probleme koji su se nakupili u C-u koji se više ne mogu popraviti, već će ponuditi i uzbudljive nove funkcije. Takav jezik mora biti dovoljno uvjerljiv da natjera programere da se prebace na njega, mora biti siguran, omogućiti automatsko upravljanje memorijom i još mnogo toga.

„Svaki jezik koji želi da bude bolji od C mora ponuditi mnogo više od puke zaštite od prelivanja bafera ako zaista želi da bude ubedljiva alternativa. Programeri su zainteresirani za upotrebljivost i performanse, pisanje koda koji je sam po sebi razumljiv i radi više posla u manje redova. Bezbjednosna pitanja također moraju biti riješena. Jednostavnost upotrebe i performanse idu ruku pod ruku. Što manje koda morate napisati da biste nešto postigli, to imate manje mogućnosti da napravite bilo kakvu grešku, bez obzira na sigurnost ili ne“, objašnjava Triplett.

Poređenje Rusta i C

Davne 2006. godine, Graydon Hoare, zaposlenik Mozille, počeo je pisati Rust kao lični projekat. A 2009. Mozilla je počela sponzorirati razvoj Rusta za svoje potrebe, a također je proširila tim kako bi dalje razvijala jezik.

Jedan od razloga zašto je Mozilla bila zainteresovana za novi jezik je taj što je Firefox napisan u preko 4 miliona 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 prepisivanje mnogih komponenti Firefoxa kao dio Quantum projekta kako bi se u potpunosti redizajnirala arhitektura pretraživača. Mozilla također koristi Rust za razvoj Servo, HTML motora za renderiranje koji će na kraju zamijeniti trenutni Firefox rendering engine. Mnoge druge kompanije počele su koristiti Rust za svoje projekte, uključujući Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu i mnoge druge.

Rust rešava jedan od najvažnijih problema jezika C. Nudi automatsko upravljanje memorijom tako da programeri ne moraju ručno da je dodeljuju, a zatim oslobađaju za svaki objekat u aplikaciji. Ono po čemu se Rust razlikuje od drugih modernih jezika je to što nema sakupljač smeća koji automatski uklanja neiskorištene objekte iz memorije, niti ima okruženje za izvršavanje potrebno za njegovo funkcioniranje, kao što je Java Runtime Environment za Javu. Umjesto toga, Rust ima koncepte vlasništva, pozajmljivanja, referenci i vijeka trajanja. “Rust ima sistem za deklarisanje poziva objektu da naznači da li ga vlasnik koristi ili ga samo pozajmljuje. Ako jednostavno posudite objekt, kompajler će to pratiti i osigurati da original ostane na svom mjestu sve dok ga referencirate. Rust će također osigurati da se objekt ukloni iz memorije čim se njegova upotreba završi, ubacujući odgovarajući poziv u kod u vrijeme kompajliranja bez dodatnog vremena,” kaže Triplett.

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

Rust takođe nastoji da obezbedi sigurno paralelno programiranje. Iste karakteristike koje ga čine memorijskim sigurnim prate stvari poput toga koja nit posjeduje koji objekt i koji objekti mogu biti proslijeđeni između niti i kojima je potrebno zaključavanje.

Sve ove karakteristike čine Rust dovoljno privlačnim za programere da ga odaberu kao novi alat za sistemsko programiranje. Međutim, u smislu paralelnog računanja, Rust je još uvijek malo iza C.

Triplett namerava da napravi posebnu radnu grupu koja će se fokusirati na uvođenje neophodnih karakteristika u Rust kako bi u potpunosti mogao da izjednači, nadmaši i zameni C u oblasti sistemskog programiranja. IN tema na Redditu, posvećen svom govoru, rekao je da je “FFI/C Parity grupa u procesu stvaranja i još nije počela sa radom”, za sada je spreman da odgovori na sva pitanja, au budućnosti će svakako objaviti trenutne planove za razvoj Rusta kao dio njegove inicijative za sve zainteresirane strane.

Može se pretpostaviti da će se FFI/C Parity grupa prije svega fokusirati 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 stabilizaciju sklopa umetanja koda.



izvor: 3dnews.ru

Dodajte komentar