Vlákno názorů k článku Systém maker v programovacím jazyku C3 od radekm - Je hezké jak se novější nízkoúrovňové jazyky liší...

  • Článek je starý, nové názory již nelze přidávat.
  • 4. 11. 2025 9:05

    radekm
    Stříbrný podporovatel

    Je hezké jak se novější nízkoúrovňové jazyky liší v podpoře metaprogramování. Každý si vybere:

    • Odin - žádné metaprogramování.
    • C3 - jednoduchá makra, která např. umí projít strukturu v době kompilace a vygenerovat serializátor.
    • Zig - normální funkce běží v době kompilace, mohou přijímat typy a vracet nové typy. Jazyk nemá ani klasická generika - nahradil je funkcemi, co berou typový parametr a vrací nový typ (např. kontejner pro daný parametr).
    • Jai - v době kompilace můžete spouštět libovolný kód, který například může upgradovat program ze staré verze Jai do nové. Vše jde samozřejmě vnořovat a může mít metametaprogra­mování :-)
  • 4. 11. 2025 9:15

    radekm
    Stříbrný podporovatel

    Na rozdíl od Zigu však makra v C3 dovedou brát celý blok kódu, což mi přijde jako velice užitečná schopnost. Např. makro @pool, které si před spuštěním bloku zapamatuje stav alokátoru pro dočasnou paměť a po dokončení bloku obnoví zapamatovaný stav - tj. uvolní dočasnou paměť, která se v bloku používala:

    fn void some_function()
    {
        @pool()
        {
            do_calculations();
        };
        // All temporary allocations inside of do_calculations
        // and deeper down is freed when exiting the `@pool` scope.
    }