„Rust je budoucnost systémového programování, C je nový assembler“ — vystoupení jednoho z předních inženýrů Intelu

Na nedávném summitu o technologiích s otevřeným zdrojovým kódem (Open Source Technology Summit — OSTS) Josh Triplett, hlavní inženýr společnosti Intel, uvedl, že jeho společnost má zájem o to, aby Rust v blízké budoucnosti dosáhl „parity“ s dosud dominujícím jazykem C v oblasti systémového a nízkoúrovňového vývoje. Ve svém vystoupení s názvem „Intel a Rust: budoucnost systémového programování“ také hovořil o historii systémového programování, jak se C stal jazykem systémového programování „de facto“, jaké výhody Rust přináší oproti C a jak by mohl v blízké budoucnosti zcela nahradit C v této oblasti programování.

„Rust je budoucnost systémového programování, C je nový assembler“ — vystoupení jednoho z předních inženýrů Intelu

Systémové programování je vývoj a správa softwaru, který slouží jako platforma pro vytváření aplikačních aplikací, zajišťující interakci posledních s procesorem, operační pamětí, vstupně-výstupními zařízeními a síťovým vybavením. Systémový software vytváří speciální abstrakci ve formě rozhraní, která pomáhají vytvářet aplikační software, aniž by bylo třeba se zabývat detaily fungování samotného „hardwaru“.

Sám Triplett definuje systémové programování jako „všechno, co není aplikací“. Zahrnuje to takové věci, jako je BIOS, firmware, bootloadery a jádra operačních systémů, různé druhy vestavěného nízkoúrovňového kódu, stejně jako implementace virtuálních strojů. Zajímavé je, že Triplett považuje webový prohlížeč za také systémový software, protože se prohlížeč stal mnohem více než jen „programem“, stal se samostatnou „platformou pro webové stránky a webové aplikace“.

V minulosti byla většina systémových programů, včetně BIOSu, bootloaderů a firmwaru, psána v assembleru. V 60. letech 20. století začaly experimenty se zajišťováním hardwarové podpory pro jazyky vysoké úrovně, což vedlo ke vzniku takových jazyků, jako jsou PL/S, BLISS, BCPL a ALGOL 68.

V 70. letech 20. století vytvořil Dennis Ritchie jazyk C pro operační systém Unix. C, který byl vytvořen na základě jazyka B, jenž neměl ani podporu typování, obsahoval mocné vysoce úrovňové funkce, jež 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 v jazyce C. V dalších letech bylo 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, také napsáno v C.

C získal obrovskou podporu tímto směrem. Co však vlastně přimělo vývojáře k přechodu na něj? Triplett se domnívá, že pro motivaci vývojářů k přechodu z jednoho programovacího jazyka na jiný musí ten nový především nabízet nové funkce, aniž by přišel o ty staré.

Za prvé, jazyk musí nabízet "dostatečně působivé" nové funkce. "Nemůže být jen o něco lepší. Musí být výrazně lepší, aby ospravedlnil úsilí a čas inženýrů potřebný k přechodu," vysvětluje. Ve srovnání s assemblerem měl C mnoho věcí, které mohl nabídnout. Podporoval do určité míry bezpečné typování, zajišťoval lepší přenositelnost a výkon s vysoce úrovňovými konstrukcemi a generoval celkově mnohem čitelnější kód.

Za druhé, jazyk musí poskytovat podporu pro staré funkce, což znamená, že při přechodu na C si vývojáři museli být jisti, že je stejně funkční jako assembler. Triplett vysvětluje: "Nový jazyk nemůže být jen lepší, musí být také alespoň tak dobrý." Kromě toho, že byl C rychlejší a podporoval jakékoli datové typy, které mohl používat assembler, měl také to, co Triplett nazval "záchranným otvorem", což znamená, že podporoval vložení kódu v assembleru.

„Rust je budoucnost systémového programování, C je nový assembler“ — vystoupení jednoho z předních inženýrů Intelu

Triplet považuje, že C se nyní stává tím, čím byl jazyk assembleru před mnoha lety. „C je novým assemblerem,“ prohlašuje. Nyní vývojáři hledají nový jazyk vyšší úrovně, který nejen vyřeší nahromaděné problémy v C, což už nelze opravit, ale také nabídne nové působivé možnosti. Takový jazyk musí být dostatečně přesvědčivý, aby přiměl vývojáře k přechodu, musí být bezpečný, poskytovat automatické řízení paměti a další.

„Jakýkoli jazyk, který chce být lepší než C, musí nabízet mnohem více než jen ochranu proti přetečení bufferu, pokud se skutečně chce stát přesvědčivou alternativou. Vývojáři se zajímají o uživatelskou přívětivost a výkon, o psaní kódu, který nevyžaduje vysvětlení a vykonává více práce s menším počtem řádků. Také je třeba vyřešit problémy s bezpečností. Jednoduchost použití a výkon jsou neoddělitelně spojeny. Čí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 týkající se bezpečnosti nebo jiných věcí,“ vysvětluje Triplet.

Srovnání Rust a C

Už v roce 2006 začal Graydon Hoare, zaměstnanec Mozilly, psát Rust jako osobní projekt. A v roce 2009 začala Mozilla financovat vývoj Rust pro své vlastní potřeby a také rozšířila tým pro další vývoj jazyka.

Jedním z důvodů, proč měla Mozilla zájem o nový jazyk, je, že Firefox byl napsán na více než 4 milionech řádků kódu C++ a měl poměrně mnoho kritických zranitelností. Rust byl vytvořen s ohledem na požadavky na bezpečnost a paralelismus, což ho činí ideální volbou pro přepisování mnoha komponent Firefoxu v rámci projektu Quantum, který přepracovává architekturu prohlížeče. Mozilla také používá Rust pro vývoj Servo, motoru pro vykreslování HTML, který v budoucnu nahradí aktuální motor pro vykreslování Firefoxu. Mnoho dalších společností začalo používat Rust pro své projekty, včetně Microsoftu, Googlu, Facebooku, Amazonu, Dropboxu, Fastly, Chef, Baidu a mnoha dalších.

Rust řeší jeden z nejdůležitějších problémů jazyka C. Nabízí automatické řízení paměti, takže vývojáři nemusí ručně přidělovat a uvolňovat paměť pro každý objekt v aplikaci. Co odlišuje Rust od dalších moderních jazyků, je to, že nemá garbage collector, který by automaticky odstraňoval nepoužívané objekty z paměti, ani prostředí runtime potřebné pro jeho fungování, jako je Java Runtime Environment pro Javu. Místo toho má Rust koncepty vlastnictví, vypůjčení, referencí a doby života. „V Rustu existuje systém deklarace volání objektu, který umožňuje určit, zda je jeho vlastníkem, nebo je to pouze půjčka. Pokud si objekt pouze půjčujete, kompilátor to bude sledovat a zajistí, že originál zůstane na svém místě, dokud na něj odkazujete. A Rust také zajistí, že objekt bude odstraněn z paměti hned po dokončení jeho použití, vložením příslušného volání do kódu během kompilace bez dodatečných časových nákladů,“ vysvětluje Triplett.

Absence vlastního prostředí runtime lze také považovat za pozitivní rys Rustu. Triplett se domnívá, že jazyky, které se jím používají, jsou obtížně použitelné jako nástroj pro systémové programování. Jak vysvětluje: „Musíte inicializovat toto prostředí runtime, než budete moci zavolat jakýkoli kód, musíte používat toto prostředí runtime k volání funkcí, a samo prostředí runtime může spouštět další kód za vašimi zády v neočekávaných okamžicích.“

Rust také usiluje o zajištění bezpečného paralelního programování. Ty samé funkce, které zajišťují bezpečnost paměti, sledují například to, kterému vláknu jaký objekt patří a jaké objekty mohou být předávány mezi vlákny a které vyžadují zablokování.

Všechny tyto funkce činí Rust dostatečně přesvědčivým, aby si vývojáři vybrali ho jako nový nástroj pro systémové programování. Nicméně, z hlediska paralelního výpočtu zatím Rust trochu zaostává za C.

Triplet má v plánu vytvořit speciální pracovní skupinu, která se zaměří na implementaci potřebných funkcí v Rustu, aby se mohl plně vyrovnat, překonat a nahradit C v oblasti systémového programování. V tématu na Redditu, týkajícím se jeho vystoupení, uvedl, že „skupina FFI/C Parity je v procesu vytváření a dosud nezačala pracovat“, zatím je ochoten odpovědět na jakékoli dotazy, a v budoucnu určitě zveřejní nejbližší plány rozvoje Rustu v rámci své iniciativy pro všechny zainteresované strany.

Lze předpokládat, že se skupina FFI/C Parity nejprve zaměří na zlepšení podpory vícevláknovosti v Rustu, na implementaci podpory BFLOAT16, formátu pro reprezentaci čísel s plovoucí desetinou čárkou, který se objevil v nových procesorech Intel Xeon Scalable, a také na stabilizaci vkládání kódu v assembleru.



Zdroj: 3dnews.ru
Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster