„Rust je budoucnost systémového programování, C je nový assembler“ – projev jednoho z předních inženýrů společnosti Intel

Na nedávném Open Source Technology Summi (OSTS) Josh Triplett, hlavní inženýr Intelu, uvedl, že jeho společnost má zájem na tom, aby Rust v blízké budoucnosti dosáhl „parity“ s C, které je stále dominantní v oblasti systémů a nízkoúrovňového vývoje. Ve svém projevu pod hlavičkou „Intel and Rust: The Future of Systems Programming“ hovořil také o historii programování systémů, o tom, jak se C stalo „výchozím“ systémovým programovacím jazykem, jaké vlastnosti mu dávají Rust náskok před C a jak v blízké budoucnosti v budoucnu by mohl zcela nahradit C v dané oblasti programování.

„Rust je budoucnost systémového programování, C je nový assembler“ – projev jednoho z předních inženýrů společnosti Intel

Systémové programování je vývoj a správa softwaru, který slouží jako platforma pro vytváření aplikačních aplikací a zajišťuje, že tyto aplikace spolupracují s procesorem, RAM, I/O zařízeními a síťovým zařízením. Systémový software vytváří speciální abstrakci v podobě rozhraní, která vám pomohou vytvořit aplikační software, aniž byste zacházeli do detailů toho, jak samotný hardware funguje.

Sám Triplett definuje systémové programování jako „cokoli, co není aplikací“. Zahrnuje věci jako BIOS, firmware, boot loadery a jádra operačního systému, různé druhy vestavěného nízkoúrovňového kódu a implementace virtuálních strojů. Zajímavé je, že Triplett věří, že webový prohlížeč je také systémový software, protože prohlížeč již dávno přesáhl „jen program“ ve vlastní „platformu pro webové stránky a webové aplikace“.

V minulosti byla většina systémových programů, včetně BIOSu, bootloaderů a firmwaru, napsána v assembleru. Experimenty začaly v 1960. letech 68. století s cílem poskytnout hardwarovou podporu pro jazyky na vysoké úrovni, což vedlo k jazykům jako PL/S, BLISS, BCPL a ALGOL XNUMX.

Poté, v 1970. letech, Dennis Ritchie vytvořil programovací jazyk C pro operační systém Unix. Jazyk C vytvořený v programovacím jazyce B, který neměl ani podporu psaní, byl naplněn výkonnými funkcemi na vysoké úrovni, které se nejlépe hodily pro psaní operačních systémů a ovladačů. Několik komponent UNIXu, včetně jeho jádra, bylo nakonec přepsáno do C. Následně bylo v C napsáno mnoho dalších systémových programů, včetně databáze Oracle, většiny zdrojového kódu Windows a operačního systému Linux.

C se v tomto směru dostalo obrovské podpory. Ale co přesně přimělo vývojáře přejít na něj? Triplett věří, že aby motivoval vývojáře k přechodu z jednoho programovacího jazyka na druhý, musí tento nejprve poskytnout nové funkce, aniž by ztratili staré funkce.

Za prvé, jazyk musí nabízet „dostatečně působivé“ nové funkce. "Už nemůže být lepší." Musí být výrazně lepší, aby bylo možné ospravedlnit úsilí a čas, který inženýři potřebují k provedení přechodu,“ vysvětluje. Ve srovnání s assemblerem měl C co nabídnout. Podporoval poněkud typovou bezpečnost, poskytoval lepší přenositelnost a výkon s konstrukcemi na vysoké úrovni a celkově generoval mnohem čitelnější kód.

Za druhé, jazyk musí poskytovat podporu pro staré funkce, což znamená, že v historii přechodu na C si vývojáři museli být jisti, že není o nic méně funkční než jazyk assembler. Triplett vysvětluje: "Nový jazyk nemůže být jednoduše lepší, musí být také stejně dobrý." Kromě toho, že byl rychlejší a podporoval jakékoli datové typy, které by jazyk symbolických instrukcí mohl používat, měl jazyk C také to, co Triplett nazýval „únikový poklop“, konkrétně podporu pro vkládání kódu jazyka symbolických instrukcí do něj.

„Rust je budoucnost systémového programování, C je nový assembler“ – projev jednoho z předních inženýrů společnosti Intel

Triplett věří, že C se nyní stává tím, čím byl jazyk symbolických instrukcí před mnoha lety. "C je nový assembler," říká. Vývojáři nyní hledají nový jazyk na vysoké úrovni, který nejen vyřeší přetrvávající problémy C, které již nelze opravit, ale také nabídne vzrušující nové funkce. Takový jazyk musí být dostatečně přesvědčivý, aby donutil vývojáře na něj přejít, musí být bezpečný, poskytovat automatickou správu paměti a mnoho dalšího.

„Každý jazyk, který chce být lepší než C, musí nabídnout mnohem více než jen ochranu proti přetečení vyrovnávací paměti, pokud chce být skutečně přesvědčivou alternativou. Vývojáři se zajímají o použitelnost a výkon, o psaní kódu, který je srozumitelný a udělá více práce na méně řádcích. Je třeba řešit i bezpečnostní otázky. Ruku v ruce s tím jde snadné použití a výkon. Čím méně kódu musíte napsat, abyste něčeho dosáhli, tím méně máte příležitostí udělat chyby související se zabezpečením nebo nesouvisející se zabezpečením,“ vysvětluje Triplett.

Srovnání Rust a C

V roce 2006 začal Graydon Hoare z Mozilly psát Rust jako osobní projekt. A v roce 2009 začala Mozilla sponzorovat vývoj Rustu pro vlastní potřeby a také rozšířila tým o další vývoj jazyka.

Jedním z důvodů, proč se Mozilla o nový jazyk zajímala, je to, že Firefox byl napsán ve více než 4 milionech řádků kódu C++ a měl několik kritických zranitelností. Rust byl vytvořen s ohledem na bezpečnost a souběžnost, což z něj činí perfektní volbu pro přepisování mnoha komponent Firefoxu v rámci projektu Quantum na kompletní přepracování architektury prohlížeče. Mozilla také používá Rust k vývoji Servo, vykreslovacího jádra HTML, které v budoucnu nahradí současné vykreslovací jádro Firefoxu. Mnoho dalších společností začalo používat Rust pro své projekty, včetně Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu a mnoho dalších.

Rust řeší jeden z nejdůležitějších problémů jazyka C. Nabízí automatickou správu paměti, takže vývojáři ji nemusí ručně přidělovat a poté uvolňovat pro každý objekt v aplikaci. Co odlišuje Rust od jiných moderních jazyků je to, že nemá garbage collector, který automaticky odstraňuje nepoužívané objekty z paměti, ani nemá běhové prostředí, které je nutné pro jeho fungování, jako je Java Runtime Environment for Java. Místo toho má Rust pojmy vlastnictví, půjčování, reference a životnost. „Rust má systém pro deklarování volání objektů, který vám umožňuje určit, zda jej vlastník používá, nebo zda si pouze půjčuje. Pokud si objekt jen půjčíte, kompilátor na něj dohlédne a zajistí, že originál zůstane na svém místě, zatímco na něj budete odkazovat. A Rust také zajistí, že objekt bude odstraněn z paměti, jakmile skončí s jeho používáním, a vloží příslušné volání do kódu v době kompilace bez dalšího času,“ říká Triplett.

Za pozitivní vlastnost Rustu lze považovat i absenci nativního runtime. Triplett věří, že jazyky, které s ním běží, je obtížné použít jako nástroj pro systémové programování. Jak vysvětluje: "Před voláním jakéhokoli kódu musíte inicializovat toto běhové prostředí, musíte jej použít k volání funkcí a samotné běhové prostředí může spustit další kód za vašimi zády v neočekávaných časech."

Rust se také snaží poskytovat bezpečné paralelní programování. Stejné funkce, díky kterým je paměťově bezpečná, sledují věci, jako je to, které vlákno vlastní který objekt a které objekty lze předávat mezi vlákny a které potřebují zámek.

Všechny tyto funkce činí Rust dostatečně přesvědčivým, aby si vývojáři vybrali jako svůj nový systémový programovací nástroj. Nicméně, pokud jde o paralelní výpočty, Rust je stále mírně pozadu za C.

Triplett se chystá vytvořit speciální pracovní skupinu, která do Rustu implementuje potřebné funkce tak, aby se mohl plně vyrovnat, překonat a nahradit C v oblasti programování systémů. V téma na redditu, věnovaný svému projevu, řekl, že „skupina FFI/C Parity je v procesu vytváření a ještě nezačala pracovat“, přičemž je připraven zodpovědět jakékoli dotazy a v budoucnu určitě zveřejní nejbližší plány na rozvoj Rustu v rámci své iniciativy pro všechny zainteresované strany.

Dá se předpokládat, že v první řadě se skupina FFI / C Parity bude zabývat vylepšením podpory multithreadingu Rust, zavedením podpory BFLOAT16, formátu s plovoucí desetinnou čárkou, který se objevil v nových procesorech Intel Xeon Scalable, a také stabilizací kódu montáže. vložení.



Zdroj: 3dnews.ru

Přidat komentář