„Rugina este viitorul programării sistemului, C este noul asamblator” - un discurs al unuia dintre inginerii de frunte ai Intel

La recentul Open Source Technology Summi (OSTS) Josh Triplett, un inginer senior la Intel, a declarat că compania sa este interesată ca Rust să atingă „paritatea” cu limbajul C care încă domină sistemele și dezvoltarea la nivel scăzut în viitorul apropiat. În discursul său Sub titlul „Intel and Rust: The Future of Systems Programming”, el a vorbit, de asemenea, despre istoria programării sistemelor, despre modul în care C a devenit limbajul implicit de programare a sistemelor, ce caracteristici ale Rust îi conferă un avantaj față de C și despre cum ar putea să fie complet. înlocuiți C în acest domeniu de programare.

„Rugina este viitorul programării sistemului, C este noul asamblator” - un discurs al unuia dintre inginerii de frunte ai Intel

Programarea sistemului este dezvoltarea și gestionarea software-ului care servește drept platformă pentru crearea aplicațiilor de aplicație, asigurându-se că acestea din urmă interacționează cu procesorul, memoria RAM, dispozitivele de intrare/ieșire și echipamentele de rețea. Software-ul de sistem creează o abstracție specială sub formă de interfețe care ajută la crearea de software de aplicație fără a aprofunda în detaliile modului în care funcționează hardware-ul în sine.

Triplett însuși definește programarea sistemelor ca „orice lucru care nu este o aplicație”. Include lucruri precum BIOS, firmware, bootloadere și nuclee ale sistemului de operare, diferite tipuri de cod încorporat de nivel scăzut și implementări de mașini virtuale. În mod interesant, Triplett consideră că un browser web este și un software de sistem, deoarece browserul a devenit cu mult timp în urmă mai mult decât „un simplu program”, devenind o „platformă de sine stătătoare pentru site-uri web și aplicații web”.

În trecut, majoritatea programelor de sistem, inclusiv BIOS, încărcătoare de încărcare și firmware, erau scrise în limbaj de asamblare. În anii 1960, experimentele au început să ofere suport hardware pentru limbi de nivel înalt, ceea ce a condus la crearea de limbi precum PL/S, BLISS, BCPL și ALGOL 68.

Apoi, în anii 1970, Dennis Ritchie a creat limbajul de programare C pentru sistemul de operare Unix. Creat în limbajul de programare B, care nici măcar nu avea suport pentru tastare, C era plin de funcții puternice de nivel înalt, care erau cele mai potrivite pentru scrierea sistemelor de operare și a driverelor. Mai multe componente ale UNIX, inclusiv nucleul său, au fost în cele din urmă rescrise în C. Ulterior, multe alte programe de sistem, inclusiv baza de date Oracle, o mare parte din codul sursă Windows și sistemul de operare Linux, au fost, de asemenea, scrise în C.

C a primit un sprijin extraordinar în această direcție. Dar ce anume i-a determinat pe dezvoltatori să treacă la el? Triplett consideră că pentru a-i motiva pe dezvoltatori să treacă de la un limbaj de programare la altul, acesta din urmă trebuie să ofere mai întâi funcții noi, fără a pierde caracteristicile vechi.

În primul rând, limbajul trebuie să ofere noi funcții „rezonabil de impresionante”. „Nu putea fi mai bun. Trebuie să fie mult mai bine pentru a justifica efortul și timpul de inginerie necesare pentru a face tranziția”, explică el. În comparație cu limbajul de asamblare, C avea o mulțime de lucruri de oferit. A susținut un comportament oarecum sigur de tip, a oferit portabilitate și performanță mai bune cu constructe de nivel înalt și a generat un cod mult mai lizibil în general.

În al doilea rând, limbajul trebuie să ofere suport pentru funcțiile vechi, ceea ce înseamnă că în istoria tranziției la C, dezvoltatorii trebuiau să se asigure că nu era mai puțin funcțional decât limbajul de asamblare. Triplett explică: „O limbă nouă nu poate fi doar mai bună, ci trebuie să fie și la fel de bună.” Pe lângă faptul că este mai rapid și acceptă orice tip de date pe care limbajul de asamblare l-ar putea folosi, C avea și ceea ce Triplett a numit „o trapă de evacuare” - și anume, a acceptat inserarea codului limbajului de asamblare în sine.

„Rugina este viitorul programării sistemului, C este noul asamblator” - un discurs al unuia dintre inginerii de frunte ai Intel

Triplett crede că C devine acum ceea ce era limbajul de asamblare în urmă cu mulți ani. „C este noul asamblator”, declară el. Acum, dezvoltatorii caută un nou limbaj de nivel înalt care nu numai că va rezolva problemele acumulate în C și care nu mai pot fi rezolvate, ci să ofere și noi funcții interesante. Un astfel de limbaj trebuie să fie suficient de convingător pentru a-i determina pe dezvoltatori să treacă la el, trebuie să fie sigur, să ofere un management automat al memoriei și multe altele.

„Orice limbaj care dorește să fie mai bun decât C trebuie să ofere mult mai mult decât doar protecție la depășirea tamponului dacă dorește cu adevărat să fie o alternativă convingătoare. Dezvoltatorii sunt interesați de utilizare și performanță, scriind cod care se explică de la sine și lucrează mai mult în mai puține linii. Problemele de securitate trebuie, de asemenea, abordate. Ușurința în utilizare și performanța merg mână în mână. Cu cât trebuie să scrieți mai puțin cod pentru a obține ceva, cu atât aveți mai puține șanse de a face greșeli, legate sau nu de securitate”, explică Triplett.

Comparația dintre Rust și C

În 2006, Graydon Hoare, un angajat Mozilla, a început să scrie Rust ca un proiect personal. Și în 2009, Mozilla a început să sponsorizeze dezvoltarea Rust pentru propriile nevoi și, de asemenea, și-a extins echipa pentru a dezvolta în continuare limbajul.

Unul dintre motivele pentru care Mozilla a fost interesat de noua limbă este că Firefox a fost scris în peste 4 milioane de linii de cod C++ și avea destul de multe vulnerabilități critice. Rust a fost construit având în vedere securitatea și concurența, făcându-l o alegere ideală pentru rescrierea multor componente ale Firefox, ca parte a proiectului Quantum de a revizui complet arhitectura browserului. De asemenea, Mozilla folosește Rust pentru a dezvolta Servo, un motor de randare HTML care va înlocui în cele din urmă motorul actual de randare Firefox. Multe alte companii au început să folosească Rust pentru proiectele lor, inclusiv Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu și multe altele.

Rust rezolvă una dintre cele mai importante probleme ale limbajului C. Oferă gestionarea automată a memoriei, astfel încât dezvoltatorii să nu fie nevoiți să o aloce manual și apoi să o elibereze pentru fiecare obiect din aplicație. Ceea ce îl face pe Rust diferit de alte limbi moderne este că nu are un colector de gunoi care să elimine automat obiectele neutilizate din memorie și nici nu are mediul de rulare necesar pentru a-l face să funcționeze, cum ar fi Java Runtime Environment pentru Java. În schimb, Rust are conceptele de proprietate, împrumut, referințe și durata de viață. „Rust are un sistem de declarare a apelurilor către un obiect pentru a indica dacă proprietarul îl folosește sau doar îl împrumută. Dacă pur și simplu împrumutați un obiect, compilatorul va ține evidența acestuia și se va asigura că originalul rămâne pe loc atâta timp cât îl faceți referire. Rust se va asigura, de asemenea, că obiectul este eliminat din memorie de îndată ce utilizarea sa este completă, inserând un apel corespunzător în cod la momentul compilării fără timp suplimentar”, spune Triplett.

Lipsa unui runtime nativ poate fi, de asemenea, considerată o caracteristică pozitivă a Rust. Triplett consideră că limbile pe care rulează sunt greu de utilizat ca instrumente de programare a sistemelor. După cum explică el: „Trebuie să inițializați acest timp de execuție înainte de a putea apela orice cod, trebuie să utilizați acest timp de execuție pentru a apela funcții, iar timpul de execuție în sine poate rula cod suplimentar în spatele dumneavoastră în momente neașteptate.”

De asemenea, Rust se străduiește să ofere o programare paralelă sigură. Aceleași caracteristici care o fac să fie sigură pentru memorie țin evidența lucrurilor, cum ar fi ce fir deține ce obiect și ce obiecte pot fi trecute între fire și care au nevoie de blocare.

Toate aceste caracteristici îl fac pe Rust suficient de convingător pentru ca dezvoltatorii să-l aleagă ca un nou instrument pentru programarea sistemelor. Cu toate acestea, în ceea ce privește calculul paralel, Rust este încă puțin în urmă cu C.

Triplett intenționează să creeze un grup de lucru special care se va concentra pe introducerea caracteristicilor necesare în Rust, astfel încât să poată egala, depăși și înlocui pe deplin C în domeniul programării sistemelor. ÎN thread pe Reddit, dedicat discursului său, a spus că „grupul FFI/C Parity este în proces de creare și încă nu a început lucrul”, deocamdată este gata să răspundă la orice întrebări, iar pe viitor va publica cu siguranță planuri imediate. pentru dezvoltarea lui Rust ca parte a inițiativei sale pentru toate părțile interesate.

Se poate presupune că grupul FFI/C Parity se va concentra în primul rând pe îmbunătățirea suportului multi-threading în Rust, introducerea suportului pentru BFLOAT16, un format în virgulă mobilă care a apărut în noile procesoare Intel Xeon Scalable, precum și pe stabilizarea ansamblului inserții de cod.



Sursa: 3dnews.ru

Adauga un comentariu