Rust: programovací jazyk do aut, vlaků a letadel

31. 10. 2023
Doba čtení: 5 minut

Sdílet

 Autor: Depositphotos
V Česku se programovací jazyk Rust zatím příliš neujal. V průmyslovém prostředí se zatím využívá především C a C++, ale v některých malých firmách už se blýská na lepší časy. Je čas probudit komunitu.

V českých zemích se programovací jazyk Rust zatím příliš neujal. Pracuje tu s ním několik málo firem ve specifických oblastech. Já s ním jezdím do průmyslového prostředí, kde se v současné době používá C a C++. Zatím do několika relativně malých firem, ale blýská se na lepší časy.

Tak jsem vyrazil do Stockholmu. Připravil jsem pro švédské programátory představení programovacího jazyka, který jim může značně ulehčit každodenní život. Po překonání počátečních překážek je psaní prakticky oproti C++ výrazně snadnější. Jako bonus je celý kód kontrolovaný na korektní práci s pamětí a vlákny.

Ve velkém průmyslu a v kritických systémech se navzdory těmto vlastnostem zatím nepoužívá. Tam najdete buď tradičně programovací jazyk Ada orientovaný na bezpečnost a spolehlivost, nebo již zmíněné C++, které má se spolehlivostí pramálo společného. Rust je po dlouhé době první programovací jazyk, který má ambice průmyslovou oblast proměnit.

Bezpečné programování

Co vám tedy Rust dokáže v oblasti bezpečnosti a spolehlivosti nabídnout? Očekávání se různí, a ne vždy se potkávají s realitou. Rust je prakticky zaměřený programovací jazyk, který je v první řadě napsaný tak, aby se v něm dobře psal software, aniž byste museli obětovat výkon. Co pro vás tedy dokáže zajistit?

Garantuje, že v rámci běžného kódu v paměti nikdy nesáhnete vedle. Objekty v paměti jsou od začátku plně inicializované. Reference na objekty existují výhradně v době existence cílových objektů. Chyby programátora nevedou k „rozsypání“ datového modelu programu. Připomínám, že se jedná o garanci, kterou zajišťuje statická kontrola při kompilaci.

Čtěte: seriál Programovací jazyk Rust na Root.cz

Umožňuje vám psát spolehlivý software pro moderní hardware s více procesorovými jádry. Garantuje, že program bude k datům přistupovat tak, jak má. Souběžné změny datových struktur umožní výhradně pomocí korektní synchronizace například přes mutexy. Tato vlastnost jde ruku v ruce s již zmíněnou ochranou paměti.

Průmyslové použití

Prozatím velký průmysl nechtěl a nemohl Rust využívat. To vedle hezkého programovacího jazyka vhodného pro daný účel vyžaduje spoustu přípravy a papírování. Právě do toho se před dvěma lety pustila německá společnost Ferrous Systems se svým projektem Ferrocene. Jedná se o Rust právě pro tyto kritické systémy v konzervativních odvětvích.

Když jsem se ve Švédsku rozloučil se zákazníkem a procházel jsem přes Mall of Scandinavia, na YouTube běžel zrovna live stream, na kterém ohlásili vydání Ferocene jako open source. Jedná se o nástroje pro vývoj v Rustu schválené pro automobilový a další průmysl podle standardů ISO 26262 a IEC 61508.

Ferrocene podle prohlášení Ferrous Systems není klasický fork. Je to spíše downstream distribuce odvíjející se od upstreamového Rustu. Změna je především v přípravě pro průmyslové projekty, kde by Rust bez schválení a souvisejících úprav nemohl být použit. Pro mě osobně je to velká novinka, která by mohla změnit situaci na trhu.

Situace na českém trhu

Co jsem tak pochytil, tak několik firem ve specifických oblastech už u nás vývojáře v Rustu hledá. Pouze narážejí na to, že u nás nejsou příliš k sehnání. Na masovější nasazení Rustu to u nás zatím nevypadá. Průmyslové firmy jsou konzervativní a často udržují rozsáhlé projekty v C++.

Pokud by vám byl český rybníček malý, můžete se poohlédnout po prvních vlaštovkách třeba právě v Německu. Osobně razím trochu jiný přístup a snažím se na zajímavé technologie dívat dříve, než si získají své místo na trhu. Rust jsem se začal učit v roce 2018. Nebyl jsem tedy zdaleka mezi prvními průkopníky, ale i tak jsem získal pár let náskok.

Nebudu se snažit předvídat, jak se bude Rustu dařit na průmyslovém trhu, podobně jako jsem se nesnažil předvídat, jak se bude dařit Linuxu, když jsem s ním začínal. Pro mě je podstatné, že Rust přináší na trh reálnou hodnotu a umožňuje bezpečné a výkonné programování na úrovni, jaká dosud nebyla dostupná.

C++ a jeho budoucnost

Už to bude nějaký pátek, co se C++ běžně používalo na aplikační software, než bylo v různých kontextech nahrazeno jazyky, jako je například Java, C# nebo Python. Je to po všech těch aktualizacích standardů až po současný C++20 a nadcházející C++23 relativně komplikovaný a na chyby programátora náchylný jazyk.

Rust je po dlouhé době první nadějná alternativa pro průmyslové systémy, kde se C++ dodnes ve velkém používá. Nepředstavujte si to ovšem tak, že bychom v brzké době jednoduše zahodili C++ a začali místo něj používat Rust. Setrvačnost může být v průmyslu i desítky let, a C++ tak může jít stejně dobře cestou Cobolu.

Když jsem v červnu vyrazil do Izraele na Core C++ v Tel Avivu, byla mezi návštěvníky vidět jistá nervozita ohledně budoucnosti, ale já osobně bych se v nejbližších letech nebál. Pokud se bavíme o tom, že by měl Rust nahradit C++, myslí se tím vybrané projekty nebo jejich části, kde dává smysl napsat věci odznovu. Kdo se dneska živí už nějaký ten pátek programováním v C++, může s ním podle mě už dožít, pokud chce.

Rust v embedded světě

Rust se dnes dá s výhodou použít pro všechno možné od serverového software pro Linux a jiné platformy, přes bare metal projekty až po třeba moduly do linuxového jádra. Možnosti nasazení se neustále rozšiřují. Není to tak dlouho, co Rust pro bare metal ještě ani nebyl k dispozici.

Jednalo se především o vytvoření tenčí alternativy ke standardní knihovně, která nebude navazovat na operační systém. Rust se snad ještě víc než C++ spoléhá na generické typy. Šablonový generický kód se dělá v Rustu daleko snadněji než v C++ a zároveň narozdíl od konceptů v C++20 nabízí striktní typovou kontrolu pomocí explicitně definovaných rozhraní. Tím se zpočátku nemusíte zabývat, ale může vám to pomoct uvědomit si některá omezení takového jazyka.

bitcoin_skoleni

Pro případ potřeby zasahovat do paměti volněji, než běžný kód v Rustu umožňuje nebo při použití céčkovských knihoven a systémových volání potřebujete klíčové slovo „unsafe“, které vám umožní v částech kódu přenést zodpovědnost za dříve zmíněné garance z kompilátoru zpátky na programátora.

Komunita

Domnívám se, že je na čase oživit a probudit českou rustovou komunitu. Rust teď v českých zemích vypadá skoro jako mrtvý jazyk. Měli bychom se začít znovu setkávat minimálně v Praze, Brně a Ostravě. Rust's not dead!

Autor článku

Pavel Šimerda je nezávislý softwarový vývojář, který používá Linux od roku 2001. Pomáhá vývojářům v různých společnostech s průmyslovým programováním a věnuje se výuce programování pro děti.