Ja jsem se znalosti C++ par let pozadu, ale kdyz vidim ty zapisy asynchronniho kodu v C++ (navic s generickymi typy) a srovnam to s js, ve kterem ted delam vic, tak v js je to pro me o hodne citelnejsi. Samozrejme js neumoznuje to co c++, ale ta slozitost novinek c++ je pro me odrazujici...
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)
Přikláním se k názoru, sice sleduji vývoj C++17, C++20, C++23, ale třeba corutines mě minuly (proč? nevim, asi protože nejsou / nebyly v překladačích). V poslední době jsem přesedlal na C (na C89/C90 pro extra masochismus). Takže bych uvítal příklad mechanického převodu z C++ corutine na C struct + stavový automat. Prosím. Ať si všichni uvědomíme, co všechno je třeba ukládat mezi ... čím vlastně ... co_yeld/co_await/apod.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 57 601×
Přečteno 27 720×
Přečteno 26 403×
Přečteno 24 367×
Přečteno 22 864×