Kdo dnes tvrdí, že v C++ se píše mnohem hůř než v C, ať zůstává u C, C++ prostě zatím nepochopil. A nebo ať se C++ začne pořádně věnovat, něco si o tom přečte a zkusí programovat podle všech doporučení C++ programátora. Třeba chytí slinu.
Já bych třeba v C dneska neprogramoval. Přitom jsem v C napsal celou hru (kdysi legendární český dungeon "Brány Skeldalu"). Ale když se dnes kouknu na zdrojáky a vidím tam ty křeče snažící se nahradit v C neexistující objektu, musím se smát. Dnes programuju v C++. Kód, který píšu je výhradně objektový. Mnohem víc používám generika a snažím se do kódu dodad mnoho abstrakce. Člověk se musí naučit myslet komponentně. Stejně tak jako velké systémy se skládají z mnoha komponent, i na úrovni zdrojáků máme komponenty, komponetíky a mikrokomponenty. Vše jsou to objekty, které spolu spolupracují, navzájem se oslovují, komunikují, posílají si zprávy (opět objekty) a starají se o svůj životní prostor. Vznikaji a zanikají, transformují se, žijí a dýchají. Každý má přitom své hřiště, sám si definuje protokol, jak komunikuje s ostatními. Všechno tohle funguje, aniž by řešilo chyby a výjimečné situace. Od toho jsou výjimky. Pokud komponenta (objekt) selže, vyhodí výjimku a o řešení chyby se postará nadřízený. Máte to jako v dobře fungující firmě, kde se problém, který nelze řešit na úrovni podřízených vyhazuje do vyšších pater. Občas se stává, že výjimka byla záměrná, jako když vám nadřízený dá úkol něco provést, vy mu ohlásíte, že jste selhal a on vám za to zvedne prémie (protože nadřízený potřeboval zjistit, že to nejde).
Tyhle všechny možnosti a výhody jsou podmíněny dobrým knihovním zázemím. Právě v tom je C++ nejslabší. STL bohužel (přes svojí rychlost) zdaleka nenabízí to co by člověk potřeboval. Naproti tomu Boost například je obrovský moloch, stejně tak jako QT a jiné systémy, snažící se tohle řešit. Java je v tomhle 100x lepší, stejně jako C# (zazlívám microsoftu, že místo aby podporoval C++, vymýšlí kraviny v podobě .NET frameworku a pak nám to cpe přes svůj marketing a kdejakého začátečníka tím zblbne).
V tomhle směru se i já snažím situaci zlepšit aspoň tím, že kolektuji po různu sesbírané objekty z různých projektů do knihovny "LightSpeed". Ani já však nemám patent na rozum. Vice na mém webu
http://bredy.novacisko.cz
http://bredy.novacisko.cz/?g=main&kat=17 (sekce C++)