Odpověď na názor

Odpovídáte na názor k článku Systém maker v programovacím jazyku C3. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.

  • 4. 11. 2025 11:08

    echo_zulu

    Možno by stálo za to zamyslieť sa nad tým, či má viac zmysel články písať na základe názvu konštrukcie podporovanej jazykom alebo na základe funkcionalít, ktoré tieto konštrukcie poskytujú. Ja osobne v tom úplne jasno nemám, ale dáva mi asi väčší zmysel to druhé.

    Pretože inak sa môže stať, niečo na spôsob toho, čo tu niekto nedávno písal, že C++ nepodporuje rozhrania, pritom ich podporuje úplne od začiatku, iba sa tak nevolajú.

    Makrá v C alebo v C++ sa síce volajú rovnako ako makrá v C3, ale majú úplne iný účel a aj ich definícia v špecifikácii jednotlivých jazykov je na iných miestach.

    Keby sme mali ísť do detailov, tak by vôbec nebolo prehnané tvrdenie, že makrá chápané ako makrá v C alebo v C++ sú súčasťou samostatného aj keď integrovaného jazyka, ktorý má nezávislú gramatiku, a samotné C alebo C++ začína až keď je vyhodnocovanie jazyka makier ukončené.

    Takže vlastne dochádza k paradoxu, že je porovnávané makro ako jazyková konštrukcia z jazyka C, ktorá pritom ale v ani v C ani v C++ ako takom vlastne vôbec nie je, aj keď všeobecne môže byť chápané, že je.

    Na rozdiel od toho, makrá c3 sú súčasťou c3 ako takého.

    Čo sa porovnania funkcionalít týka, tak to, čo poskytujú makrá C3 v C++ do istej miery poskytuje kombinácia šablónového metaprogramovania, programovania za prekladu s constexpr a consteval a čiastočne statická reflexia z C++26, v rámci toho, čo je schválené, ktorá zatiaľ funguje v experimentálnych prekladačoch a ešte síce nedokáže modifikovať kód, ale dokáže ho vypísať v rámci jedného kroku zostavenia a použiť výstup v dalšom kroku zostavenia.