Article View: pl.comp.lang.c
Article #310171Re: Coroutines w (GNU) C
From: heby
Date: Tue, 10 Mar 2020 19:28
Date: Tue, 10 Mar 2020 19:28
84 lines
6437 bytes
6437 bytes
On 10/03/2020 09:22, Maciek Godek wrote: >> On 09/03/2020 21:20, Maciek Godek wrote: >>> A użycie boost::coroutines dokonuje alokacji, czy nie? >> Nie musi. Czy dokonuje nie wiem, pewnie tak. > I nadal uważasz, że unikanie C++ na rzecz C jest kwestią religii? Tak. Coroutines wymagaja stosu, chyba że ktoś wymyślił taki pistolet na wodę jak Ty. Tak czy siak musisz ten stos dostarczyć. Czy to C++ czy C jest drugorzędne. To czy przez allokacje czy przez statyczny zbiór bajtów też jest drugorzędne. Problemem Twoich coroutines jest to że nie mają stosu, bo są h..owe. Zrób żeby miały i okaże się że dyskusja o C++ nie ma z nimi związku. Więc jeszcze raz dla wyjaśnienia: a) masz h.ową implementację coroutines i nie ma to związku z językiem b) przypadkiem pojawił się temat czy C++ czy C który nie ma sensu do analizy na tle corountines c) "masz swoje powody" których do dzisiaj nie poznaliśmy. > Sam widzisz, że - nawet jeśli mechanizmy, które oferuje C++ byłyby wygodne > (a nie są), to tworzą one barierę dla zrozumienia systemu. Nie. Uzywasz wysokopoziomowego boost::coroutine, który nie dość że jest jest w C++ to jeszcze używa ficzerów OS niedostepnych na mikrokontorlerach. Dyskutujesz w złym branchu wątku. Widać masz jakiś kłopot w udowanianiu swoich racji skoro wyskoczyłeś nagle w środku marudzenia o PICach. > Model operacji C jest stosunkowo prosty, i każdy kompetentny programista powinien go rozumieć. Więc jesteś dzieciakiem wyznającym zasadę że najlepszą abstrakcją jest brak abstrakcji i napierniczanie w asm. Tak widać wszystko i łatwo zrozumieć. Tylko czy na pewno o to chodzi w programowaniu czeoś więcej niż hello worldy. > Natomiast model C++a jest skomplikowany, i ta komplikacja ma w dużej mierze przypadkowy charakter. Model coroutines jest boosta. Napisz sobie inny model, nazwij go, wystaw na githubie i tyle. Moze znajdziesz go za 30 lat w standardzie C60 gdzie uratuje życie ludziom mrugającym dwoma diodami na raz. > Zadaję Ci proste, fundamentalne pytanie: czy boost::coroutines, do użycia którego niedawno mnie zachęcałeś, dokonuje alokacji. Ty nie dość, że nie znasz odpowiedzi, to jeszcze nie potrafisz tego łatwo znaleźć w dokumentacji. Ale ja tego nie muszę wiedzieć. Na tym polega, misiaczku złoty, abstrakcja. NIE musisz znać detali implementacyjnych jesli interfejs jest zdefiniowany. I po drugie: możesz sobie te detale podmienić jak Ci nie pasują. Chcesz coroutines bez allokacji. To sobie napisz. Interfejs do nich jest prosty i przejrzysty, implementację możesz napisać na makrach, h.. to kogo obchodzi. > Wcale mnie to nie dziwi. Jeżeli uważasz, że całościowe rozumienie systemu, który się rozwija, jest "kwestią religii", niech będzie i tak. Moim zdaniem jest to raczej kwestia rozsądku i pragmatyzmu. Wiadomo. Pisz wszystko w asm. Tam nie ma miejsca na nierozumienie. Co bardziej zaawansowani potrafią nawet migać diodą. >> Ale nie ma takiego >> obowiązku, w końcu stos korutyny możesz mieć statyczny gdzieś obok, >> albo, wzorem apliakcji embedded, możesz mieć pool allokatora na te stosy >> i znany rozmiar. > Każda STLowa kolekcja daje Ci możliwość dostarczenia Twojego własnego alokatora. Myslisz że zmiana allokatora z malloc na swój zmienia jakoś zasadniczo problem fragmentacji pamięci? Programy w embedded często nie allokują wcale. Ale to nie przeszkadza mieć porządnie zrobionych coroutines ze stosem zamiast pistoleciku na wodę z makrami i switch case. > Dlatego rozumując po Twojemu, powinieneś raczej zachęcać embedowców do tego, żeby grzęzli w bagnie debugowania ich własnych customowych alokatorów i hulali sobie z wesołymi alokacjami STLowych kolekcji. Wręcz odwrotnie, namawiam embedowców aby używali C++ ale NIE używali STL. Od samego początku. Problemem nie jest *swój* allkokator. Problemem jest allokator w ogóle. >> Więc możesz sobie napisać godek::coroutine i tam może >> nie być allokacji ale stos, czemu nie. > Te Twoje rady są coraz lepsze. To, skoro "mogę sobie napisać" (bo to takie łatwe?), może pokaż mi, jak taka implementacja mogłaby wyglądać. Ile płacisz? > Chętnie się dowiem. Istnieją inne drogi poznania niż trolowanie.
Technical Details
Message-ID:
<r48ppk$aoi$1@dont-email.me>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news-2.dfn.de!news.dfn.de!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mailReferences:
<4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0n95e$35l$1@dont-email.me> <f3df206c-11d4-4b22-87ff-fc7aa00935f3@googlegroups.com> <r0nevq$9iq$1@dont-email.me> <ecae4ae1-0b06-4956-8df0-593fa0f1cd01@googlegroups.com> <r0njjv$740$1@dont-email.me> <0e0786af-7b58-4070-b8cd-81f1bda1f432@googlegroups.com> <r0q9iv$23b$1@dont-email.me> <20200128233003.4bf9d9eb@mateusz> <1a207604-09fa-43f2-8d0a-e3ff51b183f4@googlegroups.com> <r0sf4i$d46$1@dont-email.me> <5e5f4069$0$519$65785112@news.neostrada.pl> <r3t1sc$r41$1@dont-email.me> <5e645e9a$0$17354$65785112@news.neostrada.pl> <r42dg3$r77$1@dont-email.me> <5e64e5a9$0$17350$65785112@news.neostrada.pl> <r42p67$o5b$1@dont-email.me> <5e6555bd$0$554$65785112@news.neostrada.pl> <r43mjb$fg2$1@dont-email.me> <5e6595ce$0$17348$65785112@news.neostrada.pl> <r46320$5hf$1@dont-email.me> <44f694e7-bd52-4b71-aa69-678f8840c27c@googlegroups.com> <r46apv$q4c$1@dont-email.me> <d42e80c7-3cd2-4ce7-a31c-5e39278bffa7@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news-2.dfn.de!news.dfn.de!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail From: heby <heby@poczta.onet.pl> Newsgroups: pl.comp.lang.c Subject: Re: Coroutines w (GNU) C Date: Tue, 10 Mar 2020 20:28:49 +0100 Organization: A noiseless patient Spider Lines: 84 Message-ID: <r48ppk$aoi$1@dont-email.me> References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0n95e$35l$1@dont-email.me> <f3df206c-11d4-4b22-87ff-fc7aa00935f3@googlegroups.com> <r0nevq$9iq$1@dont-email.me> <ecae4ae1-0b06-4956-8df0-593fa0f1cd01@googlegroups.com> <r0njjv$740$1@dont-email.me> <0e0786af-7b58-4070-b8cd-81f1bda1f432@googlegroups.com> <r0q9iv$23b$1@dont-email.me> <20200128233003.4bf9d9eb@mateusz> <1a207604-09fa-43f2-8d0a-e3ff51b183f4@googlegroups.com> <r0sf4i$d46$1@dont-email.me> <5e5f4069$0$519$65785112@news.neostrada.pl> <r3t1sc$r41$1@dont-email.me> <5e645e9a$0$17354$65785112@news.neostrada.pl> <r42dg3$r77$1@dont-email.me> <5e64e5a9$0$17350$65785112@news.neostrada.pl> <r42p67$o5b$1@dont-email.me> <5e6555bd$0$554$65785112@news.neostrada.pl> <r43mjb$fg2$1@dont-email.me> <5e6595ce$0$17348$65785112@news.neostrada.pl> <r46320$5hf$1@dont-email.me> <44f694e7-bd52-4b71-aa69-678f8840c27c@googlegroups.com> <r46apv$q4c$1@dont-email.me> <d42e80c7-3cd2-4ce7-a31c-5e39278bffa7@googlegroups.com> Mime-Version: 1.0 Injection-Date: Tue, 10 Mar 2020 19:28:53 -0000 (UTC) Injection-Info: reader02.eternal-september.org; posting-host="d4d21e9d106f80334a5f95b2b70f94db"; logging-data="11026"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18dzsswh3TYFjb6+V5jtjbm" User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 Cancel-Lock: sha1:vYoTiitQbJ+3ugd2WiuYX+qxfYM= In-Reply-To: <d42e80c7-3cd2-4ce7-a31c-5e39278bffa7@googlegroups.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit