„Rust je budúcnosť systémového programovania, C je nový assembler“ – prejav jedného z popredných inžinierov spoločnosti Intel

Na nedávnom Open Source Technology Summi (OSTS) Josh Triplett, hlavný inžinier Intelu, povedal, že jeho spoločnosť má záujem, aby Rust v blízkej budúcnosti dosiahol „paritu“ s C, ktoré je stále dominantné v oblasti systémov a nízkoúrovňového vývoja. Vo svojom prejave pod nadpisom „Intel a Rust: Budúcnosť programovania systémov“ hovoril aj o histórii systémového programovania, o tom, ako sa C stalo „predvoleným“ systémovým programovacím jazykom, aké vlastnosti mu Rust dávajú výhodu oproti C a ako v blízkej budúcnosti v budúcnosti by mohol úplne nahradiť C v danej oblasti programovania.

„Rust je budúcnosť systémového programovania, C je nový assembler“ – prejav jedného z popredných inžinierov spoločnosti Intel

Systémové programovanie je vývoj a správa softvéru, ktorý slúži ako platforma na vytváranie aplikačných aplikácií, pričom zabezpečuje, že tieto aplikácie interagujú s procesorom, RAM, I/O zariadeniami a sieťovým zariadením. Systémový softvér vytvára špeciálnu abstrakciu vo forme rozhraní, ktoré vám pomáhajú vytvárať aplikačný softvér bez toho, aby ste zachádzali do podrobností o tom, ako samotný hardvér funguje.

Samotný Triplett definuje systémové programovanie ako „čokoľvek, čo nie je aplikácia“. Zahŕňa veci ako BIOS, firmvér, zavádzače a jadrá operačného systému, rôzne druhy vstavaného kódu nízkej úrovne a implementácie virtuálnych strojov. Je zaujímavé, že Triplett verí, že webový prehliadač je tiež systémový softvér, keďže prehliadač už dávno prekročil rámec „len programu“ do svojej vlastnej „platformy pre webové stránky a webové aplikácie“.

V minulosti bola väčšina systémových programov, vrátane BIOSu, bootloaderov a firmvéru, napísaná v jazyku symbolických inštrukcií. Experimenty sa začali v šesťdesiatych rokoch s cieľom poskytnúť hardvérovú podporu pre jazyky na vysokej úrovni, čo viedlo k jazykom ako PL/S, BLISS, BCPL a ALGOL 1960.

Potom, v sedemdesiatych rokoch minulého storočia, Dennis Ritchie vytvoril programovací jazyk C pre operačný systém Unix. Jazyk C, vytvorený v programovacom jazyku B, ktorý nemal ani podporu pre písanie, bol naplnený výkonnými funkciami na vysokej úrovni, ktoré sa najlepšie hodili na písanie operačných systémov a ovládačov. Niekoľko komponentov UNIXu, vrátane jeho jadra, bolo nakoniec prepísaných do C. Následne bolo v C napísaných aj mnoho ďalších systémových programov vrátane databázy Oracle, väčšiny zdrojového kódu Windows a operačného systému Linux.

C dostalo v tomto smere obrovskú podporu. Ale čo presne prinútilo vývojárov prejsť naň? Triplett verí, že na to, aby motivoval vývojárov k prechodu z jedného programovacieho jazyka na druhý, musí tento najskôr poskytnúť nové funkcie bez straty starých funkcií.

Po prvé, jazyk musí ponúkať „dostatočne pôsobivé“ nové funkcie. "Už nemôže byť lepší." Musí to byť výrazne lepšie, aby sa odôvodnilo úsilie a čas, ktorý inžinieri potrebujú na prechod,“ vysvetľuje. V porovnaní s assemblerom mal C čo ponúknuť. Podporoval do istej miery typovú bezpečnosť, poskytoval lepšiu prenosnosť a výkon s konštrukciami na vysokej úrovni a celkovo generoval oveľa čitateľnejší kód.

Po druhé, jazyk musí poskytovať podporu pre staré funkcie, čo znamená, že v histórii prechodu na C si vývojári museli byť istí, že nie je menej funkčný ako jazyk symbolických inštrukcií. Triplett vysvetľuje: "Nový jazyk nemôže byť jednoducho lepší, musí byť aj rovnako dobrý." Okrem toho, že bol rýchlejší a podporoval všetky typy údajov, ktoré by jazyk symbolických inštancií mohol používať, mal C aj to, čo Triplett nazval „únikový poklop“, konkrétne podporu pre vkladanie kódu jazyka symbolických inštancií.

„Rust je budúcnosť systémového programovania, C je nový assembler“ – prejav jedného z popredných inžinierov spoločnosti Intel

Triplett verí, že C sa teraz stáva tým, čím bol pred mnohými rokmi jazyk symbolov. "C je nový assembler," hovorí. Vývojári teraz hľadajú nový jazyk na vysokej úrovni, ktorý nielen vyrieši pretrvávajúce problémy C, ktoré už nie je možné opraviť, ale ponúkne aj vzrušujúce nové funkcie. Takýto jazyk musí byť dostatočne presvedčivý, aby prinútil vývojárov prejsť naň, musí byť bezpečný, poskytovať automatickú správu pamäte a mnoho ďalšieho.

„Akýkoľvek jazyk, ktorý chce byť lepší ako C, musí ponúknuť oveľa viac než len ochranu proti pretečeniu vyrovnávacej pamäte, ak chce byť skutočne presvedčivou alternatívou. Vývojári sa zaujímajú o použiteľnosť a výkon, o písanie kódu, ktorý je samovysvetľujúci a robí viac práce v menšom počte riadkov. Je potrebné riešiť aj bezpečnostné otázky. Ruka v ruke s tým ide jednoduchosť používania a výkon. Čím menej kódu musíte napísať, aby ste niečo dosiahli, tým menej príležitostí máte urobiť chyby súvisiace s bezpečnosťou alebo nesúvisiace s bezpečnosťou,“ vysvetľuje Triplett.

Porovnanie Rust a C

V roku 2006 začal Graydon Hoare z Mozilly písať Rust ako osobný projekt. A v roku 2009 začala Mozilla sponzorovať vývoj Rustu pre svoje potreby a tiež rozšírila tím o ďalší rozvoj jazyka.

Jedným z dôvodov, prečo sa Mozilla zaujímala o nový jazyk, je to, že Firefox bol napísaný vo viac ako 4 miliónoch riadkoch kódu C++ a mal niekoľko kritických zraniteľností. Rust bol vytvorený s ohľadom na bezpečnosť a súbežnosť, čo z neho robí dokonalú voľbu na prepisovanie mnohých komponentov Firefoxu v rámci projektu Quantum s cieľom úplne prepracovať architektúru prehliadača. Mozilla tiež používa Rust na vývoj Servo, vykresľovacieho nástroja HTML, ktorý v budúcnosti nahradí súčasné vykresľovacie jadro Firefoxu. Mnoho ďalších spoločností začalo používať Rust pre svoje projekty, vrátane Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu a mnoho ďalších.

Rust rieši jeden z najdôležitejších problémov jazyka C. Ponúka automatickú správu pamäte, takže vývojári ju nemusia manuálne prideľovať a následne prideľovať pre každý objekt v aplikácii. To, čo odlišuje Rust od iných moderných jazykov, je to, že nemá zberač odpadu, ktorý automaticky odstraňuje nepoužívané objekty z pamäte, ani nemá runtime prostredie, ktoré je potrebné na jeho fungovanie, ako napríklad Java Runtime Environment for Java. Namiesto toho má Rust koncepty vlastníctva, pôžičiek, referencií a životnosti. „Rust má systém na deklarovanie volaní objektu, ktorý vám umožňuje špecifikovať, či ho vlastník používa alebo či si len požičiava. Ak si objekt len ​​požičiate, kompilátor ho bude sledovať a zabezpečí, aby originál zostal na mieste, kým sa naň budete odvolávať. A Rust tiež zaistí, že sa objekt odstráni z pamäte hneď, ako sa s ním skončí, a vloží príslušné volanie do kódu v čase kompilácie bez ďalšieho času,“ hovorí Triplett.

Za pozitívnu vlastnosť Rustu možno považovať aj absenciu natívneho runtime. Triplett verí, že jazyky, ktoré s ním bežia, sa ťažko používajú ako nástroj na programovanie systémov. Ako vysvetľuje: „Pred volaním akéhokoľvek kódu musíte inicializovať tento runtime, musíte ho použiť na volanie funkcií a samotný runtime môže spustiť dodatočný kód za vaším chrbtom v neočakávaných časoch.“

Rust sa tiež snaží poskytovať bezpečné paralelné programovanie. Rovnaké funkcie, vďaka ktorým je pamäťová bezpečná, sledujú napríklad to, ktoré vlákno vlastní ktorý objekt a ktoré objekty možno medzi vláknami prenášať a ktoré potrebujú zámok.

Všetky tieto funkcie robia Rust dostatočne presvedčivým na to, aby si vývojári vybrali ako svoj nový systémový programovací nástroj. Pokiaľ však ide o paralelné výpočty, Rust stále mierne zaostáva za C.

Triplett vytvorí špeciálnu pracovnú skupinu, ktorá implementuje potrebné funkcie do Rustu tak, aby sa v oblasti programovania systémov plne vyrovnal, prekonal a nahradil ho. IN téma na reddite, venovaný svojmu vystúpeniu, povedal, že „skupina FFI / C Parity je v procese vytvárania a ešte nezačala pracovať“, pričom je pripravený odpovedať na akékoľvek otázky a v budúcnosti určite zverejní najbližšie plány na rozvoj Rustu v rámci svojej iniciatívy pre všetky zainteresované strany.

Dá sa predpokladať, že v prvom rade sa skupina FFI / C Parity bude zaoberať zlepšením podpory multithreadingu Rust, zavedením podpory BFLOAT16, formátu s pohyblivou rádovou čiarkou, ktorý sa objavil v nových procesoroch Intel Xeon Scalable, ako aj stabilizáciou kódu zostavy. vloženia.



Zdroj: 3dnews.ru

Pridať komentár