Hlavní navigace

Názor ke článku Bezpečné programování v C++ II od Lael Ophir - Důsledné používání podobných idiomů nám zajistí velmi dobrou...

  • 18. 3. 2009 14:32

    Lael Ophir (neregistrovaný)

    Důsledné používání podobných idiomů nám zajistí velmi dobrou předvidatelnost chování programu. To jistě ano, ale musíte nějak *zajistit*, že v kódu nebudou použité nebezpečné konstrukce, které jazyk C++ umožňuje.

    V C# nebo Javě má kód automaticky zaručenou řadu vlastností, které vyplývají z vlastností daného jazyka a jeho knihoven. Síla managed jazyků je právě v tom, že ať nakrmíte kompilátor čímkoliv, tak nedojde například k přístupu mimo hranice pole, invarianty zůstanou určitě invarianty atd.

    Abyste dosáhl podobného výsledku v C++, musel byste z jazyka úplně *odstranit* řadu features (včetně odstranění možnosti používat pointerovou aritmetiku), zahodit kompatibilitu s POSIX a ANSI C, a vytvořit knihovny, které by podporovaly rysy nového jazyka. Ovšem proč to dělat, když už to udělali autoři Javy a C#, a po pár stovkách člověko-let byste zřejmě došel k dost podobnému výsledku.

    To co popisujete u C++ je možné provést ad absurdum u assembleru. Prostě budete používat vybrané bezpečné konstrukce (třeba nějaká makra), a spoléhat na to, že žádné nebezpečné konstrukce nikdo nepoužil. Jenže je asi zjevné, že to problém neřeší.