Renesance C++

20. 10. 2011 9:18 zboj

Titulek článku jsem si půjčil z Channel9. Je nepřehlédnutelné, že C++ se pomalu vrací na výsluní. Na přelomu tisíciletí jej nahradily tzv. řízené (managed) jazyky. Co si budeme povídat, C++ toho tehdy hodně postrádalo, a právě v té době se výkon počítačů dostal na úroveň, kdy si vývojáři mohli dovolit obětovat trochu výkonu za vyšší produktivitu.

Myšlenka mezikódu nebyla nová, měl jej kdysi dávno například Smalltalk. Java však tuto techniku se svým virtuálním strojem zpopularizovala. Sun přitom už jedno kvalitní objektově orientované prostředí měl. Nazývalo se OpenStep a vyvinul je společně s NeXTem pro své počítače. Nakonec se však rozhodli pro vlastní jazyk a prostředí. U Sunu (teď už Oraclu) OpenStep dál žije v některých standardních knihovnách Javy.

Sun učinil s Javou první krok, Microsoft se svým .NETem však změnu trendu završil. Vznikl jazyk C# (ve svých raných verzích kopie Javy) a Microsoft začal vývojáře tlačit k přechodu na .NET. Kromě svých vývojářů, v dnešních Windows 7 moc aplikací v .NET není a Windows 8 se od .NETu odklání definitivně.

Během posledních deseti let ve stínu Javy a .NET se však C++ podstatně změnilo. Alexandrescu objevil sílu šablon (při návrhu většiny jazyků se specifikuje, co má jazyk umět, a to se pak implementuje, do C++ však kdysi přidali mocné nástroje jako šablony a přetěžování operátorů a teprve dodatečně se zjistilo, co všechno se s tím dá dělat), k tehdy chudé standardní knihovně STL přibyl boost, z nějž se stal de facto (a letos v rámci C++11 do značné míry i de iure) standard, navíc C++ dostalo lambda výrazy a spoustu dalších užitečných vylepšení.

Když Apple vydal první SDK pro iPhone, mnozí kritizovali nemožnost použití Javy pro vývoj aplikací. Na pro většinu tehdejších vývojářů neznámé Objective-C se všichni dívali s nedůvěrou (někdy i despektem) a kroutili hlavou nad „zastaralostí“ jazyka, knihoven a Xcode. O pár let později (rozuměj dnes) Microsoft při práci na OS pro tablety opouští .NET a vrací se k C++, konkrétně ke své starší technologii COM.

Nedávné skokové vylepšení C++ a STL v kombinace se změnou požadavků na software (trend přechodu ze stolních počítačů na mobilní zařízení s méně výkonným procesorem, menší operační pamětí a velkým displejem žeroucím baterku) učinily nativní kód opět nejlepší možnou cestou vývoje OS a aplikací. Jak Steve Sinofsky nedávno uvedl na svém blogu, méně paměti znamená vyšší výdrž baterie, proto nebude garbage collector a paměť může být poloviční (přičemž systém zůstane plynulý). Moderní syntax se vyrovná C# i Javě, takže produktivita programátora neutrpí. Automatické počítání referencí hravě nahradí GC (vývojový tým clangu ukázal, že to jde). A tak dále…

Tak jako C# vyšlo z C++ a Javy, do C++11 bylo přijato mnoho syntaktických a knihovních konstrukcí z řízených jazyků. V roce 2011 je C++ (opět) moderním jazykem na úrovni C#, Javy a Objective-C.

Sdílet