Zpět na domů

Evoluce C++: épochy a standardy

Článek navrhuje mechanismy pro dlouhodobý vývoj C++: technical specifications pro realistické standardy, épochy pro smíšenou kompatibilitu a zero-cost výjimky. To umožní jazyku evolovat bez břemene legacy.

C++ budoucnosti: épochy, TS a nové výjimky
Advertisement 728x90

Návrhy na evoluci C++: éry, realistické standardy a nové výjimky

Vývojáři C++ se setkávají s třemi verzemi jazyka: popsanou ve standardu, ale nedostupnou; experimentální v nových kompilátorech; a skutečnou — ve používaných verzích. To vytváří mezeru mezi teorií a praxí. Navrhuje se změnit model: po schválení návrhu jej převést na technickou specifikaci pro implementaci kompilátory. Zařazení do standardu probíhá až po podpoře ve dvou kompilátorech.

Toto schéma odhaluje problémy ve fázi implementace, umožňuje opravy bez změny standardu a zaručuje přítomnost funkcí v kompilátorech v době vydání standardu. Experimentátoři získají přístup k novinkám ihned po jejich výskytu v gcc nebo clang.

Mechanismus ér pro opuštění zpětné kompatibility

Zavedení 'ér' na začátku .cpp souborů určí verzi C++ pro tento modul. To umožní očistit jazyk od nahromaděných 'zbytků' z desetiletí: automatických převodů číselných typů, porovnávání signed/unsigned, implicitních převodů polí na ukazatele, mnoha způsobů inicializace.

Google AdInline article slot

Klíčové výhody:

  • Smíšené sestavování souborů z různých ér v jednom projektu bez přepisování starého kódu.
  • Možnost transpilace nového kódu do starého standardu pro zachování ABI.
  • Vývoj 'vylepšeného' C++ bez ohledu na C-kompatibilitu.

Éry zabrání proměně jazyka v monstrum pod tíhou historických artefaktů.

Přehodnocení výjimek v C++

Výjimky v C++ jsou fiaskem z 80. let: drahé, nepředvídatelné, zakázané v polovině projektů. Alternativy jako std::expected neřeší problém spolehlivosti. Jsou potřeba zero-cost výjimky, integrované s érami: nové — pouze v souborech s čerstvými érami.

Google AdInline article slot

Problémy integrace starého a nového kódu vyžadují řešení, ale status quo je nepřijatelný. Rozdělení komunity na 's výjimkami' a 'bez' brzdí vývoj.

Co je důležité

  • Standard by měl fixovat implementované funkce, ne předbíhat realitu prostřednictvím technických specifikací.
  • Éry umožní kombinovat legacy- a moderní kód, čistit nový od historických chyb.
  • Nové výjimky (zero-cost) se integrují podle ér, minimalizují režii a zvyšují předvídatelnost.
  • Bez těchto změn C++ riskuje osud PL/1: růst složitosti bez užitku.
  • Výbor se soustředí na strategické mechanismy, ne taktické detaily.

Závěr a perspektivy

Pro 40 let úspěchu C++ jsou potřeba radikální posuny: realistické standardy, éry pro evoluci a restart výjimek. To sjednotí ekosystém, zjednoduší nový kód a zachová legacy. Výbor by měl přejít od deklarací k fixaci praxe, umožňující jazyku adaptaci bez břemene minulosti.

— Editorial Team

Google AdInline article slot
Advertisement 728x90

Číst dál