„Táto, kde’s vlastně byl?“ (Konference Meeting C++ 2017)

K: „Tatíííí… Adamééé, táta už je doma! … Ahoj! … a kde’s to vlastně byl?“
J: „No přece na té konferenci, vždyť jsem ti to vysvětloval, než jsem odjížděl.“
K: „Hmm to už si nepamatuju… a co tam jako bylo?“

Na konferenci Meeting C++, jak už název napovídá, se vše točí kolem programovacího jazyka C++ a samozřejmě i jeho uživatelů – vývojářů. Vzhledem k tomu, že se koná v Německu (poslední čtyři ročníky v Berlíně), schází se zde v roli posluchačů převážně programátoři z Evropy. Mezi přednášejícími se každoročně objevují v C++ komunitě celosvětově známá jména, mezi jinými například členové standardizační komise pro C++, vývojáři či autoři knižních C++ bestsellerů nebo i studenti technických univerzit. Pro nás je to největší a geograficky nejbližší C++ konference, tudíž ideální příležitost pro tým vývojářů registračního systému FRED, aby si na pár dnů odpočinul od pracovního shonu a něco nového se přiučit.

Letošní ročník se konal od 9. do 11. listopadu v berlínském hotelu Andel’s. Sešlo se tam na 600 účastníků, kteří si mohli vybírat z celkového počtu 41 přednášek rozdělených do čtyř paralelních bloků, což je o jeden více než loni.

K: „Pfff, hele táto a co jsi mi přivez‘?“
J: „Broučku, ale já tam nebyl nakupovat, snažil jsem se … něco se naučit, víš?“

Podle aktuálně nastaveného vývoje jazyka (od řekněme přelomového C++11) je snaha každé tři roky vydat nový standard. Tomu odpovídala i náplň přednášek, které jsem navštívil. První taková skupina se zabývala aktuálním standardem C++17. Přednášky shrnuly, co nového poslední standard přinesl či změnil v teoretické rovině, v dalších se pak dostalo na praktické zkušenosti, čísla a samozřejmě grafy. Tady bych chtěl vyzdvihnout přednášky Practical C++17 a Practical constexpr Jasona Turnera, který nové vlastnosti a dopady nového standardu demonstroval na zkušenostech při jejich aplikaci v jeho projektu skriptovacího jazyku ChaiScript. Dále bych ještě zmínil přednášku Stringviews, stringviews everywhere (Marc Mutz) o novém typu ve standardní knihovně – std::string_view, jakožto nevlastnícího (non-owning) kontejneru či „pohledu“ nad již existujícím řetězcem nebo jeho částí (v podstatě ukazatel na začátek řetězce a délka řetězce), nových idiomech a samozřejmě možných problémech, které přináší.

K: „… no já jsem zase byla v divadle … byla tam Minnie, Krteček a Rákosníček mi podal ruku ..“
J: „…“
K: „Co seš tak vykulenej, ne jako doopravdy, to byli převlečený lidi přece!“
J: „…“

Další skupina přednášek představovala lákadla, na která se můžeme těšit v následujícím standardu C++20, případně později v C++23. Tady mě potěšil Anton Bikineev se svým povídáním o stavu návrhů na řešení tzv. statické reflexe (static reflection; schopnost programu v době kompilace zjišťovat meta informace o typech) v některém budoucím standardu C++ (přednáška Reflection in C++Next). Tato vlastnost jazyka by výrazně zjednodušila části kódu, které se aktuálně neobejdou bez použití maker preprocesoru, jako je např. serializace datových struktur či určité konverze výčtových typů (enum to string). Poměrně hutné slajdy si připravil Kris Jusiak pro přednášku Concept driven design, kde probral, co je připravováno z dlouho očekávaných Concepts v C++20. Jejich hlavní přínos by měl spočívat v možnosti lépe definovat (a zároveň v kódu dokumentovat!) syntaktické a sémantické omezení pro rozhraní, které se pak odrazí v rozumnější prezentaci chybových zpráv od překladače (kdo někdy procházel „obrazovkami“ chybových hlášení s několika úrovněmi šablon datových typů a snažil se pochopit, co se mu překladač snaží říci, určitě výhody chápe). Na ukázkách předvedl, jak by se daná omezení měla specifikovat pro parametry šablon a funkcí s pomocí nového klíčového slova requires a jejich spojovaní pro definici „pojmenovaných vlastností“ s využitím klíčového slova concept. Představil také budoucnost virtuálních konceptů (virtual concepts) umožňující dynamický polymorfismus bez nutnosti vytvářet hierarchie tříd (a využívat tak dědičnost) a dalších možností využití (dependency injection, mocking).

Poslední skupina přednášek, které jsem navštívil, se zabývala obecnějšími tématy, jako je návrh datových typů a rozhraní, nástroji pro vývoj a debugování a interními a externími software závislostmi. Nesmím zapomenout zmínit tu s názvem Strong types for strong interfaces, kde Jonathana Boccara ukázal, jak je užitečné používat konkrétní (pojmenované) datové typy při definici rozhraní (např. Km(42.0) namísto prostého 42.0). Jednak konkrétnější jméno lépe popisuje sémantiku pro uživatele daného rozhraní, ale také do jisté míry zamezí špatnému použití daného rozhraní. Rizikem zůstávají případné nevhodné implicitní konverze. Díky příkladům v této přednášce jsem si opět vzpomněl na novou vlastnost C++11 uživatelsky definovaných literálů (operator""(...)) umožňující v kódu zápis např. 42.0_km(Km operator"" _km(long double)), která na jednu stranu vypadá užitečně, ale stále na mě působí jaksi rozpačitě. Dále jsem navštívil povídání od Petera Bindelse o tom, jak v TomTomu řeší problémy se závislostmi v kódu Dealing with software dependencies. V minulém ročníku měl přednášku How to understand million-line C++ projects, kde představil nástroj cpp-dependencies pro analýzu závislostí ze zdrojových kódů. Letos měl na pomoc Kiki de Rooij (stážistku u nich v TomTomu), která představila její nástroj spindel pro vizualizaci závislostí za použití výstupu z cpp-dependencies a opensource nástroje pro kreslení schémat dia. Krátce se též zmínili o stavu návrhů k připravované podpoře modulů do C++ standardu, což je další z aktuálně velkých a živých témat. Poslední přednášku, kterou bych doporučil, je Free your functions Klause Iglbergera, který v ní poměrně zábavnou formou všem dokázal (doufejme :)), proč je dobré preferovat volné funkce před členskými funkcemi tříd a struktur, a to hlavně v případě, kdy taková metoda přidává nějakou jinak volitelnou závislost. Zajímavým doplňkem pro preferenci volných funkcí by pak byl návrh unified call syntax), který podal Bjarne Stroustrup a Herb Sutter.

K: „… hele táto, mě už to nebaví, nechceš si radši zahrát Magický labyrint?“
J: „Jojo…“

Určitě byste případné odkazy dokázali vyhledat, ale nějak to zakončit musím. Web konference se dá najít na http://meetingcpp.com/, případní zájemci o stažení slajdů z letošní konference najdou snadno odkazy v rozvrhu přednášek. Pokud se zadaří, videa ze všech přednášek by měla být k dispozici po nějaké době na YouTube kanálu.

K: „No tááák, táto!
J: „Už jdu.“

Autor:

Zanechte komentář

Všechny údaje jsou povinné. E-mail nebude zobrazen.