„Rūdis yra sistemos programavimo ateitis, C yra naujasis surinkėjas“ – kalba vienas iš pirmaujančių „Intel“ inžinierių.

Neseniai vykusiame atvirojo kodo technologijų susitikime (OSTS) Joshas Tripletas, „Intel“ vyresnysis inžinierius, teigė, kad jo įmonė yra suinteresuota, kad „Rust“ pasiektų „lygiavertiškumą“ su C kalba, kuri vis dar dominuoja sistemose ir netolimoje ateityje. Savo kalboje Pavadinimu „Intel and Rust: The Future of Systems Programming“ jis taip pat papasakojo apie sistemų programavimo istoriją, kaip C tapo numatytąja sistemų programavimo kalba, kokios „Rust“ savybės suteikia jai pranašumo prieš C ir kaip ji galėtų visiškai pakeisti C šioje programavimo srityje.

„Rūdis yra sistemos programavimo ateitis, C yra naujasis surinkėjas“ – kalba vienas iš pirmaujančių „Intel“ inžinierių.

Sistemų programavimas – tai programinės įrangos kūrimas ir valdymas, kuris tarnauja kaip platforma kuriant taikomąsias programas, užtikrinančias pastarųjų sąveiką su procesoriumi, RAM, įvesties/išvesties įrenginiais ir tinklo įranga. Sistemos programinė įranga sukuria ypatingą abstrakciją sąsajų pavidalu, kurios padeda kurti taikomąją programinę įrangą nesigilinant į pačios aparatinės įrangos veikimo detales.

Pats Triplettas sistemų programavimą apibrėžia kaip „viską, kas nėra programa“. Tai apima tokius dalykus kaip BIOS, programinė įranga, įkrovos įkrovikliai ir operacinės sistemos branduoliai, įvairių tipų įterptieji žemo lygio kodai ir virtualios mašinos diegimai. Įdomu tai, kad Triplett mano, kad žiniatinklio naršyklė taip pat yra sistemos programinė įranga, nes naršyklė jau seniai tapo daugiau nei „tik programa“, tapdama atskira „svetainių ir žiniatinklio programų platforma“.

Anksčiau dauguma sistemos programų, įskaitant BIOS, įkrovos įkroviklius ir programinę-aparatinę įrangą, buvo parašytos surinkimo kalba. 1960-aisiais buvo pradėti eksperimentai teikti techninės įrangos palaikymą aukšto lygio kalboms, todėl buvo sukurtos tokios kalbos kaip PL/S, BLISS, BCPL ir ALGOL 68.

Tada aštuntajame dešimtmetyje Dennisas Ritchie sukūrė C programavimo kalbą Unix operacinei sistemai. Sukurta B programavimo kalba, kuri net neturėjo spausdinimo palaikymo, C buvo užpildyta galingomis aukšto lygio funkcijomis, kurios geriausiai tiko operacinėms sistemoms ir tvarkyklėms rašyti. Kai kurie UNIX komponentai, įskaitant jo branduolį, galiausiai buvo perrašyti C kalba. Vėliau daugelis kitų sistemos programų, įskaitant „Oracle“ duomenų bazę, didžiąją dalį „Windows“ šaltinio kodo ir „Linux“ operacinę sistemą, taip pat buvo parašytos C kalba.

C šia kryptimi sulaukė didžiulio palaikymo. Bet kas būtent paskatino kūrėjus prie jo pereiti? Triplett mano, kad norint paskatinti kūrėjus pereiti nuo vienos programavimo kalbos į kitą, pastaroji pirmiausia turi pateikti naujų funkcijų, neprarandant senų funkcijų.

Pirma, kalba turi pasiūlyti „pagrįstai įspūdingų“ naujų funkcijų. „Jis negalėjo būti geresnis. Turi būti daug geriau, kad būtų galima pateisinti pastangas ir inžinerinį laiką, kurio reikia norint pereiti“, – aiškina jis. Palyginti su asamblėjos kalba, C turėjo daug ką pasiūlyti. Jis palaikė tam tikrą tipo saugų elgesį, suteikė geresnį perkeliamumą ir našumą naudojant aukšto lygio konstrukcijas ir sukūrė daug lengviau skaitomą kodą.

Antra, kalba turi palaikyti senas funkcijas, o tai reiškia, kad perėjimo prie C istorijoje kūrėjai turėjo būti tikri, kad ji yra ne mažiau funkcionali nei asamblėjos kalba. Triplettas paaiškina: „Nauja kalba gali būti ne tik geresnė, bet ir tokia pat gera. Be to, kad C yra greitesnis ir palaiko bet kokį duomenų tipą, kurį galėjo naudoti asamblėjos kalba, C taip pat turėjo tai, ką Triplett pavadino „pabėgimo liuku“ – būtent jis palaikė asamblėjos kalbos kodo įterpimą į save.

„Rūdis yra sistemos programavimo ateitis, C yra naujasis surinkėjas“ – kalba vienas iš pirmaujančių „Intel“ inžinierių.

Triplettas mano, kad C dabar tampa tokia, kokia buvo asamblėjos kalba prieš daugelį metų. „C yra naujasis surinkėjas“, – pareiškia jis. Dabar kūrėjai ieško naujos aukšto lygio kalbos, kuri ne tik išspręs C kalboje susikaupusias problemas, kurių nebegalima išspręsti, bet ir pasiūlys įdomių naujų funkcijų. Tokia kalba turi būti pakankamai patraukli, kad kūrėjai prie jos persijungtų, turi būti saugi, užtikrinti automatinį atminties valdymą ir daug daugiau.

„Bet kuri kalba, kuri nori būti geresnė nei C, turi pasiūlyti daug daugiau nei tik apsaugą nuo buferio perpildymo, jei ji tikrai nori būti patraukli alternatyva. Kūrėjai domisi naudojimu ir našumu, rašydami kodą, kuris yra savaime suprantamas ir atlieka daugiau darbo mažiau eilučių. Taip pat reikia spręsti saugumo problemas. Naudojimo paprastumas ir našumas dera kartu. Kuo mažiau kodo turėsite parašyti, kad ką nors pasiektumėte, tuo mažesnė tikimybė padaryti klaidų, susijusių su saugumu ar ne“, – aiškina Triplett.

Rusto ir C palyginimas

2006 m. „Mozilla“ darbuotojas Graydonas Hoare'as pradėjo rašyti Rust kaip asmeninį projektą. O 2009 m. „Mozilla“ pradėjo remti „Rust“ kūrimą savo reikmėms, taip pat išplėtė komandą, kad toliau plėtotų kalbą.

Viena iš priežasčių, kodėl „Mozilla“ susidomėjo nauja kalba, yra ta, kad „Firefox“ buvo parašyta daugiau nei 4 milijonais C++ kodo eilučių ir turėjo nemažai kritinių spragų. Rust buvo sukurtas atsižvelgiant į saugumą ir lygiagretumą, todėl tai yra idealus pasirinkimas perrašant daugelį Firefox komponentų kaip Quantum projekto dalis, siekiant visiškai pertvarkyti naršyklės architektūrą. „Mozilla“ taip pat naudoja Rust kurdama „Servo“ – HTML atvaizdavimo variklį, kuris ilgainiui pakeis dabartinį „Firefox“ atvaizdavimo variklį. Daugelis kitų įmonių pradėjo naudoti Rust savo projektams, įskaitant Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu ir daugelį kitų.

Rust išsprendžia vieną iš svarbiausių C kalbos problemų. Ji siūlo automatinį atminties valdymą, kad kūrėjams nereikėtų rankiniu būdu priskirti ir atlaisvinti jos kiekvienam programos objektui. Rust skiriasi nuo kitų šiuolaikinių kalbų tuo, kad jame nėra šiukšlių rinktuvo, kuris automatiškai pašalintų nenaudojamus objektus iš atminties, taip pat neturi jam veikti reikalingos vykdymo aplinkos, pvz., Java Runtime Environment for Java. Vietoj to, Rust turi nuosavybės, skolinimosi, nuorodų ir gyvenimo trukmės sąvokas. „Rust turi sistemą, kaip deklaruoti skambučius į objektą, nurodant, ar savininkas juo naudojasi, ar tik skolinasi. Jei tiesiog pasiskolinate objektą, kompiliatorius tai stebės ir užtikrins, kad originalas išliktų tol, kol jį nurodysite. Rust taip pat užtikrins, kad objektas būtų pašalintas iš atminties iš karto po jo naudojimo pabaigos, kompiliavimo metu į kodą įterpdamas atitinkamą iškvietimą be papildomo laiko“, – sako Triplett.

Natūralaus vykdymo laiko nebuvimas taip pat gali būti laikomas teigiama „Rust“ savybe. Triplett mano, kad kalbas, kuriomis jis veikia, sunku naudoti kaip sistemų programavimo įrankius. Kaip jis paaiškina: „Prieš iškviesdami bet kokį kodą, turite inicijuoti šį vykdymo laiką, turite naudoti šį vykdymo laiką funkcijoms iškviesti, o pati vykdymo programa gali paleisti papildomą kodą už jūsų nugaros netikėtu metu“.

Rust taip pat siekia užtikrinti saugų lygiagretų programavimą. Tos pačios funkcijos, dėl kurių saugoma atmintis, seka tokius dalykus, kaip kuriai gijai priklauso koks objektas ir kuriuos objektus galima perduoti tarp gijų, o kuriuos reikia užrakinti.

Dėl visų šių savybių „Rust“ yra pakankamai patraukli, kad kūrėjai galėtų pasirinkti jį kaip naują sistemų programavimo įrankį. Tačiau lygiagrečio skaičiavimo prasme Rust vis dar šiek tiek atsilieka nuo C.

„Triplett“ ketina sukurti specialią darbo grupę, kurios pagrindinis dėmesys bus skiriamas reikalingų „Rust“ funkcijų įdiegimui, kad ji visiškai prilygtų, pranoktų ir pakeistų C sistemų programavimo srityje. IN sriegis Reddit, skirtą savo kalbai, jis sakė, kad „FFI/C Parity grupė yra kuriama ir dar nepradėjo darbo“, kol kas yra pasirengęs atsakyti į visus klausimus, o ateityje tikrai paskelbs artimiausius planus. už Rust plėtrą kaip jo iniciatyvos dalį visoms suinteresuotoms šalims.

Galima daryti prielaidą, kad FFI/C Parity grupė visų pirma sutelks dėmesį į kelių gijų palaikymą Rust, BFLOAT16 – slankiojo kablelio formato, kuris pasirodė naujuose Intel Xeon Scalable procesoriuose, palaikymą, taip pat stabilizavimo agregatą. kodo įterpimai.



Šaltinis: 3dnews.ru

Добавить комментарий