Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2014-11-20

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:23 ccxCZ joined #divine
01:15 ccxCZ joined #divine
09:55 xstill mornfall: kam nám zmizely debug buildy ve statusu?
09:56 mornfall cojávim?
09:56 mornfall asi evaluation error
09:57 mornfall hydra-eval-jobs returned signal -1:
09:57 mornfall timeout
10:24 mornfall xstill: jinak ti teda nechci úplně kazit iluze, ale zrovna hackuju něco co má v cyklu několik goto ven z cyklu :P
10:24 mornfall a takovýho kódu je v C mega moc
10:25 mornfall (typicky proto že nechceš psát kód na uvolnění zdrojů 4x pod sebe)
10:44 xstill no to maj z toho, že nepoužívaj C++
10:52 mornfall C++ se taky mastí, si nevybereš
10:52 mornfall zase jinak
11:04 xstill však jo, je to marný
11:13 mornfall http://pastebin.dqd.cz/VyuZ/ tohle jsem zrovna stvořil
11:16 xstill hm, nojo tak to je cčko no, co s tím taky
11:17 xstill ale nechápu proč tam máš goto_out a ne goto out
11:17 mornfall to jde dokola... singly-linked listy jsou všude protože co jinak
11:17 mornfall aha, no, goto_out je makro který vypíše do logu že se děje goto out
11:17 mornfall (pokud máš zaplý debug log)
11:18 mornfall protože od zákazníka nemůžeš úplně chtít aby to stepoval v debuggeru
11:18 xstill :-)
11:18 mornfall ano, goto out je dost častej pattern na to aby to bylo makroifikovaný :)
11:18 xstill to s těma singly-liked listama jsem nepochopil
11:18 mornfall ještě máme goto_bad, return_0 a return_NULL :)
11:19 mornfall no, pracovat s čímkoliv složitějším než SLL je v C hrozná otrava
11:19 xstill no veselý, ale jo ono to smysl dává ty makra
11:19 mornfall jen pak v zájmu jednoduchosti píšeš goto restart než aby sis držel víc pointrů...
11:20 xstill aha já už to chápu, vy to raději projdete znova od začátku než to umět odstranit z prostředka přímo
11:20 mornfall ono nakonec erase ze std::list taky zničí ten jeden kritickej iterátor
11:21 mornfall asi
11:21 xstill "References and iterators to the erased elements are invalidated. Other references and iterators are not affected. "
11:21 xstill takže jo
11:22 mornfall tam je to jednodušší v tom že to je doubly linked, takže erase nepotřebuje ještě iterátor před
11:22 mornfall ono to remove_node totiž taky iteruje od začátku :-)
11:22 mornfall O(n^3) filter, super...
11:23 xstill aha forward_list má erase_after
11:23 xstill a nemá erase
11:23 mornfall jasně no
11:23 mornfall protože erase(_this) je O(n)
11:23 mornfall tady v tom C teda vím že ten seznam je nejvýše pár prvků tak mi to neva
11:24 xstill jakto O(n^3)?, není to O(n^2)
11:24 mornfall nevim... ten while je jedno n, remove_node je druhý n a restart je třetí n
11:25 xstill jenže remove_node a restart se nenásobí ale sčítaj
11:26 mornfall jo, asi to je n^2 + n nebo tak... ono reálně se to nikdy tomu worst-case ani neblíží
11:27 mornfall nejhorší je asi když první polovina filtrem projde a druhá ne
11:29 mornfall ale jo do n^2 se to vleze... to je nakonec lepší než jsem byl ochotnej ještě akceptovat :)
11:29 mornfall stejně to je otrava
11:30 mornfall definovat si v C rozumnou datovou strukturu skoro nejde
11:31 ccxCZ jste mi pripomeli: "Any coding standard which insists on syntactic clarity at the expense of algorithmic clarity should be rewritten. If your employer fires you for using this trick, tell them that repeatedly as the security staff drag you out of the building." http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
11:33 mornfall ccxCZ: no, to rewritten decompressor je taky coroutine
11:38 ccxCZ ja uz nejakou dobu teda premyslim jak moc je takovahle syntaxe sebevrazedna, pro na pomery velkej projekt na osmibitak
11:38 ccxCZ bych to kolegovi nejradsi nejak roztrhal na testovatelny moduly z jednoho blobu
11:42 mornfall ccxCZ: každopádně crBegin/crFinish je fakt humus :-)
11:43 mornfall navíc C++ tohle docela řeší
11:43 mornfall i když teda C++ na osmibitu může docela bolet
11:43 ccxCZ nemam C++
11:43 ccxCZ ale pro zajimavost, jak bys to resil?
11:45 ccxCZ nemam ani korektni C98, ikdyz to tusim dodavatel tvrdi, ale to je jen deficientni libc
11:46 mornfall tak, mně asi zejména nevadí pojmenovat stavy v automatu tý coroutine
11:47 ccxCZ no jasny, to bych stejne musel, protoze int je drahej a do 256 jich bude
11:48 mornfall no pak je to jen otázka vytáhnout stav do struktury a z těch stavů udělat metody asi
11:48 mornfall co teda můžeš aj v C jen to bude mít hrozný názvy
11:48 ccxCZ jj
11:49 ccxCZ coz on to tusim ma neco takovyho v tom linkovanym headru, podporu pro ne-static coroutiny
11:50 mornfall já jsem na non-reentrant kód tak trochu alergickej :)
11:52 ccxCZ me se to taky moc nelibi, ale musim uznat ze zatim vsechno co to mikro dela s tim nema problem
11:54 ccxCZ nemame tam sice staticky promenny, ale mame tam natvrdo pres define kterej kod saha na kterej port
11:55 mornfall má to interrupty?
11:55 mornfall pokud chceš dělat něco netriviálního v interruptu tak non-reentrance může dost zabolet
11:56 mornfall (taky je možná otázka proč to neprogramovat ve wiring pokud to je controller)
11:57 ccxCZ v interruptech se sypou data dovnitr a ven, plus nejakej stavovej automat na verifikaci signalu, zadna magie
11:57 ccxCZ pak je tam teda jeste obsluha pro CAN, na tu jsem jeste nemel odvahu se podivat :D
11:58 ccxCZ to budou solidni spagety predpokladam
11:59 ccxCZ ale jinak vsechno netrivialniho dela main a komunikuje s interruptama pres sdileny buffery
12:12 mornfall xstill: zarecordoval jsem ty tvoje nvidia hacky
12:14 mornfall hm, youtube mix na Britney vždycky nějak skončí u backstreet boys... meh

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary