Programátorské techniky nejen v C++

  • Sdílení objektů mezi vlákny v C++20 (II)

    Tento článek je volným pokračování předchozího článku Sdílení objektů mezi vlákny jednoduše v C++20. Tentokrát se podíváme na jiné řešení, které má ambice se dostat do normy C++26 Synchronized_value na CppConu Krátké představení nového návrhu najdete ve videu Lightning Talk: Thread Safety With synchronized_value in C++ – Jørgen Fogh – CppCon 2023. Video stojí za shlédnutí, protože má něco přes 3 minuty, včetně upoutávky na CppCon 2024 na začátku videa
    25. 4. 2024 16:08
  • Asynchronní cykly v C++20

    Pro podporu asynchroních cyklů C++20 byl navržen příkaz for co_await. Problém je, že nakonec se tento návrh do normy nedostal. Máme nějakou náhradu? for co_await Příkaz for asi nemusím představovat. Jeho použití pro procházení kontejnerů a rozsahů asi také ne. Kdyžtak pro zopakování /---pre std::vector<int> items={1,2,3,4}; for (int x: items) { std::cout << x << std::endl; } \---
    13. 4. 2024 14:14 (aktualizováno)
  • RVO pro korutiny (C++20)

    RVO znamená Return Value Optimization a tentokrát se podíváme na to, jak toto téma ovlivňují korutiny v C++ Co je RVO (Return Value Optimization) RVO je v C++ standardizované od verze 17. Takže se v tomhle pohledu jedná celkem o novinku. Přesto se překladače snažily o tento typ optimalizace před verzí 17. Pro  vysvětlení, o co přesně jde, začnu příkladem
    31. 3. 2024 14:49
  • Knihovna libcoro - korutiny pro C++20 (revize)

    Po určité době jsem se rozhodl revidovat svou knihovnu pro práci s korutinami v C++20. Během používání jsem si zapsal postřehy z dosavadního vývoje a tak vznikla nová knihovna která se snaží řešit některé problémy předchozí verze. Motivace Protože ani C++20 ani C++23 a vypadá to že ani C++26 nepřinese standardní nástroje na práci s korutinami a asynchronními operacemi, mým cílem bylo přijít s vlastním řešením v podobě této knihovny…
    24. 3. 2024 18:15
  • Sdílení objektů mezi vlákny jednoduše v C++20

    Programování vícevláknových aplikací může být pro některé programátory skutečnou výzvou. Problémové situace nastávají kdykoliv vlákna přistupují na sdílené objekty. Zapomenutá synchronizace je často zdrojem nepředvídatelného chování a náhodných pádů. Ale vhodným nástrojem si lze práci zjednodušit a kód dobře zabezpečit
    11. 2. 2024 13:55
  • Trable s moduly v C++20/23

    Již v roce 2020 jsme se dočkali nového nástroje na organizaci zdrojových souborů u velkých projektů v C++, a to jsou moduly. V tomto článku se pokusím formulovat svůj rozporuplný pocit, který z toho mám. Jak asi tušíte, považuji se za „C++ maximalistu“ a též se snažím držet krok s vývojem tohoto jazyka. S různými úspěchy se mi to daří a to navzdory tomu, že píšeme rok 2024 a poslední schválenou verzí by měla být C++23, já se neustále probírám novinkami v C++20. Už jsem se úspěšně popral s koruti
    14. 1. 2024 18:58 (aktualizováno)
  • NOSTR, "pštrosí" sociální síť

    V článku proberu nově vznikající decentralizovanou síť NOSTR. Co to je, v čem stojí za pozornost, jakými bolestmi trpí, co se nepovedlo a zda to vůbec má smysl. NOSTR je zkratka, která znamená Notes and Other Stuff Transmitted by Relay. Často jej snadno poznáte pomocí loga zobrazující pštrose – jako ostrich. 
    20. 8. 2023 13:46
  • Napsal jsem si databázi v C++

    Možná někoho napadne, co je to za bláznivý nápad, proč by si někdo psal novou databázi. Není to zbytečná práce? Proč nesáhnout po něčem existujícím? Databází máme přehršel. Na druhou stranu, proč ne. Uplatnění si určitě najde Co je DocDB[1] Nejprve bych trochu poupravil clickbaitový titulek.  Určitě se nejedná o „standalone“ databázi, ale o knihovnu pro C++, kdy je databáze integrální součástí C++ projektu – tedy přímo realizovaná ve výsledném programu, nikoliv tedy jako externí server…
    16. 7. 2023 20:58 (aktualizováno)
  • C++: Mapování hodnot z runtime na integrální konstanty

    Dneska to bude relativně krátké. S každou další verzí C++ lze víc a víc algoritmů přesunout do constexpr „domény“, ve které se výpočty provádí během překladu a v runtime se již používají výsledky toho výpočtu. Často ale vstupem do takového výpočtu je hodnota získaná až v runtime. Proč to potřebujeme?
    5. 6. 2023 8:28 (aktualizováno)
  • C++20 Korutiny - Přepis knihovny CoCls

    Uplynul nějaký čas kdy jsem se musel věnovat jiným úkolům, ale ke korutinám jsem se vrátil. Často se vyplatí nechat téma „uležet“ a vrátit se později s úplně jiným pohledem na celou věc. Zvlášť, když člověk za to dobu spoustu věcí zapomene a pak když se k tomu vrátí, má najednou pocit, že je všechno až zbytečně  komplexní (překomplikované). Takže jsem se rozhodl svou knihovnu na korutiny lehce přepracovat.
    12. 4. 2023 9:13 (aktualizováno)