Portál AbcLinuxu, 7. června 2024 06:37


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
xkucf03 avatar 2.1.2017 23:51 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Co nás ph naučil 3: actor model
Odpovědět | Sbalit | Link | Blokovat | Admin
Díky za článek.

Jen bych chtěl říct, že asynchronní přístup a posílání zpráv má i své stinné stránky – člověk přichází o klasický stack trace, ze kterého je u synchronních programů vidět, odkud bylo co voláno a v debuggeru se člověk dostane i do příslušného kontextu a celkem snadno zjistí, proč byla zavolána ta která metoda a proč právě s těmito parametry. Z vlastní zkušenosti musím říct, že porozumět asynchronnímu kódu a pochopit architekturu/návrh programu je těžší – člověk hodí zprávu do jakési roury na jednom konci programu a ona za chvíli přistane na druhém konci a zároveň se zamíchá s jinými zprávami… Ladit takové systémy není zrovna triviální. Jsou tu tedy nějaké doporučené postupy – jak to co nejvíc zpřehlednit a usnadnit pochopení ostatním (a svému budoucímu já)? (protože psaní takových programů se někdy nejde vyhnout)
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
5.1.2017 05:33 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Co nás ph naučil 3: actor model
Ladit takové systémy není zrovna triviální. Jsou tu tedy nějaké doporučené postupy – jak to co nejvíc zpřehlednit a usnadnit pochopení ostatním (a svému budoucímu já)? (protože psaní takových programů se někdy nejde vyhnout)
Tak zrovna ohledně zeromq a actorů, tak postup je takový, že si člověk navrhne schéma a typ zpráv. Potom se postaví prototyp, který se otestuje na očekávaný výkon. No a pak se řeší binární formáty dat a podobně. V zásadě postup je rychlá iterace pokus/omyl a unit testy. Právě actor model a zprojekt k takovému stylu vývoje přímo vybízí.

Ladit takové programy v debuggeru nelze (s výjimkou code dumpu). Jediná metoda jsou ladící výpisy. Výhoda je v tom, že při rychlém iterativním vývoji člověk napáchá pár chyb na jejichž řešení si na ta správná místa musí přidat ladící výpisy.

Potom jsou obecnější rady, jako mít plně dokumentované a otestované API, nesdílet stav mezi komponentami a podobně.
When your hammer is C++, everything begins to look like a thumb.
7.1.2017 13:59 arsinoe
Rozbalit Rozbalit vše Re: Co nás ph naučil 3: actor model
to je takovy evolucni pristup

to pak neni divu, ze ten vas sw ma obcas nejake to slepe strevo ci sitnici naruby, ze?
8.1.2017 07:22 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Co nás ph naučil 3: actor model
Ano, slepá střeva máme. A to jak z evolučních, tak i z dob inteligentního designu. Narozdíl od evoluce taky máme potřebu a schopnosti slepé cesty odstraňovat.
When your hammer is C++, everything begins to look like a thumb.
10.1.2017 13:20 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Co nás ph naučil 3: actor model
Ladit takové programy v debuggeru nelze (s výjimkou code dumpu).
Počítám, že na tyhle věci by se dal nasadit koncept Time traveling debuggeru, to by mohlo fungovat velmi pěkně. (Ačkoli implementace by asi nebyla úplně triviální.)
Josef Kufner avatar 10.1.2017 19:22 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Co nás ph naučil 3: actor model
Ladicí výpisy jsou taková primitivní forma time traveling debuggeru. Tedy pokud je z nich možné alespoň částečně rekonstruovat stav aplikace.

Implementace debuggeru není nijak komplikovaná. Potřebuješ do mechanismu na předávání zpráv vložit odbočku a logovat vše, co se posílá. Zbytek už je jen vizualizace nasbíraných dat (což může být docela komplikované samo o sobě). Když se to udělá hezky, tak se z logu dá třeba poskládat film (avi), kde je zachycen běh programu. Nebo si můžeš nechat nakreslit různé (sekvenční) diagramy. Nástrojů, které převedou nějakou jednoduchou syntaxi na obrázek je spousta (např. Graphviz). Pokud je zpráv hodně, tak to nemusí být moc interaktivní a rendrování může chvilku trvat, ale dá se.
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.