🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #310171

Re: Coroutines w (GNU) C

#310171
From: heby
Date: Tue, 10 Mar 2020 19:28
84 lines
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-mail
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>

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