Hlavní navigace

Názor ke zprávičce Kolem 70 % vážných bezpečnostních chyb v Chromiu jsou chyby používání paměti od klokan - Správu paměti má člověk vždycky ve svých rukou,...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 26. 5. 2020 12:38

    klokan

    Správu paměti má člověk vždycky ve svých rukou, i s GC. V takovém Rustu, kde GC není, ji má ve svých rukou úplně stejně, jako v C++, akorát, že v C++ může maximálně slibovat, že to je vyřešené správě, kdežto v Rustu se provádí důkaz správnosti - a pokud implementace prokazatelná není, tak to compiler nevezme.

    Samozřejmě, že kromě správy paměti je spousta dalších věcí, kvůli kterým C++ považuji za horor. Namátkou: totálně rozbitý a (pochopitelně) neprokazatelný typový systém, kde navíc spousta věcí chybí (algebraické typy...), šablony, které jsou jenom jakási alternativní syntaxe pro #define, kontrola výjimek, při které se výjimky alokují na haldě a používá se copy konstruktor, neboli vyvolání výjimky může samo o sobě vyvolat výjimku atd, zároveň definice výjimek není součástí API dané funkce a může se libovolně a nepředvídatelně měnit, move konstruktor, jehož používání není definované a záleží a libovůli překladače (pokud se nemýlím, dokonce nikde nestojí ani to, že použití move konstruktoru musí být konsistentní alespoň mezi dvěma buildy, respektive může záležet i na volbách překladače), chybí podpora modulů (ta se snad konečně objevila aspoň v C++20 a možná ji za takových dvacet let knihovny dokonce začnou i používat), "pozoruhodná" IO knihovna iostream, kde nějakého génia napadlo, že nejlepší způsob, jak dělat IO, je arbitrárně předefinovat bitshift operátory a kde formátování výstupu (dec, hex atd) je stavový flag a ne typ streamu, takže... atd... atd...

    Takže nejen, že C++ považuji za zastaralé a neúčinné, ale k tomu jsem skeptický vůči těm, kteří odmítají připustit, že tyto problémy a milion dalších jsou reálné a že je celkem nic neomlouvá. To neznamená, že nejsou případy, kdy je C++ správná volba z naprosto legitimních důvodů, ale dobře navržený jazyk to v žádném případě nebyl ani na tehdejší dobu, natož vzhledem k dnešním možnostem.