Jasně, že je v menšině. Ale svoji sílu postupně prokazuje. Je to jazyk, který se dá použít na rychlý vývoj CLI toolů, her, klidně i pro full-stack vývoj: https://github.com/gbj/leptos
Tak uvidíme, kam až to dotáhne. V systémového programování ho zatím válcuje C, v cloudu a CLI Go, v hrách C++. On je sice teoreticky “general purpose”, ale v praxi má omezenou doménu (jako R nebo Fortran). Ne že bych mu to přál, ale na to, jak jej nadšenci vychvalují, bych čekal větší použití (možná lidi odrazují první zkušenosti s ním, přece jen na nováčka řve překladač furt, než si trochu zvykne na způsob práce s referencemi).
Cpát javovské synchronized do c++ je trochu problém, protože ty dva jazyky se v některých aspektech dost podstatně liší.
V Javě je jasné, co to synchronized zamyká. Každý objekt je samostatně existující entita, která má v sobě vždycky monitor. I když drtivou většinu objektů nikdo nikdy zamykat nebude.
V c++ není vždycky úplně jasné, co by se mělo přesně zamykat. A jaké vlastnosti by ten mutex měl vlastně přesně mít?
Těch objektů, které má smysl zamykat, zas tolik není. A jak už psal Ondřej Novák, napsat synchronized block, nebo do bloku strčit guard se složitostí zas tolik neliší.
A pak taky c++ razí celkem rozumný přístup, že není třeba cpát do jazyka věci, které se dají pořešit čistě na úrovni knihoven. Už tak je ten jazyk komplikovaný jako prase.
Rust neznám, ale k čemu je tak dobrá podpora v gcc? Do teď to bez ní taky evidentně šlo.
Např. pro Javu existovalo GCJ, které už dávno není podporované a myslím, že to nikoho netrápí.
https://gcc.gnu.org/wiki/GCJ
Řekl bych, že podpora GCCRS je žádoucí pro ekosystém Linuxu, protože ten je v současné době postaven hlavně na jazyku C. Pro Linux musí GCCRS a GCC koexistovat.
Jazyk C, jakkoliv je nadčasový, je pro větší věci limitován kvůli absenci striktních typů a objektového programování. Rust také oproti C nabízí lepší bezpečnost a větší souběžnost.
C++ je sice objektový a umí cokoliv, ale někdy to je složité a těžkopádné. Spíše pro velké borce.
Díky za tip na Javu a GCJ, mrknu se na to.
Akorát že C++ od verze 11 má trochu jiný vývoj a v současných verzích 20 a 23 je to dávno jiný jazyk, než si ho Linus pamatuje.
A Linus jen potvrzuje pravidlo, že neexistuje génius na všechno. On umí to svoje, o C++ nemá žádnou představu, nesleduje to, nemá dostatečné informace.
Když se podívám na kód jádra s optikou C++, tak ... no napsat mi někdo takový kód v týmu, tak nejen že neprojde code review, ale navíc dotyčný dostane výpověď. Prostě Céčko no... starodávný vyčpělý jazyk... A jestli to má zachránit Rust... nevím.
Rust má svoje traity, to je v pohodě, obšlehli to z Go a jen jinak pojmenovali. Dle mého skromného názoru absence “plnohodnotného” OOP à la Java nevadí. Typové systémy Rustu a Go jsou poměrně rozumný kompromis, víceméně staré dobré céčkové struktury, ale s přidaným dynamickým dispatchem ve formě rozhraní/traitů. Zdá se, že se to v praxi osvědčilo.
Minimálně jednoho člověka neexistence GCJ trápí natolik, že to snaží revitalizovat, viz https://gcc.gnu.org/pipermail/gcc-patches/2022-November/607205.html a 56 dalších patchů :-)
Zpočátku jsem si kladl podobnou otázku, ale prý to přinese podporu více platforem. Což se na první pohled může zdát zanedbatelné, ale pokud to bude znamenat, že Rust bude pro všechny targety Linuxového kernelu, může to být významná zpráva i svět x64/arm64. Rezavění kernelu by se nemuselo omezovat jen na moduly relevantní jen na některých platformách, ale mohlo by se týkat v podstatě všech oblastí.