Názor ke článku C++20: kde bydlí korutiny od Ondřej Novák - Tak nejste typický programátor knihoven. Z hlediska uživatelů se...

  • 19. 2. 2023 16:03

    Ondřej Novák

    Tak nejste typický programátor knihoven.

    Z hlediska uživatelů se nic moc nemění, generika akorát nahrazují type erasure, které se používá v C. V javascriptu chápu, že se neuvádí typu async, protože tam není typová kontrola.

    Pro lidi, co knihovny používají se snažím navrhovat jednoduchá API.

    task<T> - toho bych se fakt nebál. Místo T se samozřemě dá typ, takže task<int> je prostě korutina, která vrací int, akorát není dostupný hned. Lze použít i task<void>

    V javascriptu, pokud uvedu klíčové slovo async, tak vím, že mi z funkce vypadne Promise. Pokud ho neuvedu, může vypadnout cokoliv, (včetně Promise). V C++ musím vždycky uvádět typ. A dává mi smysl, aby třeba některá moje funkce vracela future<int> - to je celkem dobře popisné, je to proměnná, která bude dostupná v budoucnosti a bude typu int. (dokonce v jednom návrh jsem používal šablonu async<typ> podle javascriptu). Použití pak se nelíší od javascriptu. Akorát místo await píšu co_await (nová klíčová slova se špatně zavádí do jazyka, kde už mohou existovat tyto slova jako identifikátory)