🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Coroutines w (GNU) C

#310190
From: Maciek Godek
Date: Wed, 25 Mar 2020 12:47
62 lines
6674 bytes
W dniu środa, 25 marca 2020 13:26:40 UTC+1 użytkownik (fir) napisał:
> W dniu wtorek, 24 marca 2020 21:31:01 UTC+1 użytkownik Maciek Godek napisał:
> > W dniu piątek, 20 marca 2020 20:56:20 UTC+1 użytkownik (fir) napisał:
> > > W dniu środa, 11 marca 2020 15:00:46 UTC+1 użytkownik Mateusz Viste napisał:
> > > > 2020-03-11 o 04:45 -0700, Maciek Godek napisał:
> > > > > Jak lubisz, to sobie używaj.
> > > > 
> > > > I w zasadzie na tym możnaby zakończyć ten wątek. :)
> > > > 
> > > > My "wiemy", że C jest lepsze bo jest proste i przejrzyste bez żadnych
> > > > wodotrysków przez które człowiek gubi się w tym co tak naprawdę się
> > > > dzieje, a heby "wie" że C++ posiada trylion wynalazków których nie
> > > > potrzeba na nowo wymyślać i dlatego jest lepszy, a rozumieć jak co
> > > > działa nie ma potrzeby bo od tego są interfejsy by ukrywać detale
> > > > implementacji.
> > > > 
> > > > Oba obozy mogą się tak sprzeczać w nieskończoność... Tylko czy to ma
> > > > sens? Wszak o gustach się nie dyskutuje, a cała polemika "C vs C++"
> > > > rozbija się właśnie o gust (oraz poniekąd o sposób myślenia czy ogólniej
> > > > podejście do życia). Tak czy siak - nikt nikogo tu nie przekona.
> > > > 
> > > nie jest tak poniewaz ten trylion wynalazkow c++ jest poprostu glupi i 'pozwala' pisac dosyc glupi kod - kod ktory w c mozna napisac duzo madrzej
> > > 
> > > same te 'wynalazki' c są dużo mądrzejsze
> > > i robia nawet wlasnie imponujace mozna
> > > pwoiedziec wrazenie (mz programowanie robi wrazenie samo w sobie, c po swojej stronie robi mozna powiedziec nawet osobne wrazenie jako sposob programowania), (choc i w c znalazly sie pewne flaws, (mysle np o wskaznikach na funkcje i na pewnych kwestiach zwiazanych ze wskaznikami w c w ogole) te flaws trudno mi ejdnak porownac do tych z c++ bo sa generalnie 'duzo trudniejsze' tj mz duzo trudniej jest powiedziec co dokladniej byloby dobre na ich miejsce)
> > 
> > Co jest Twoim zdaniem nie tak ze wskaźnikami w C (i w szczególności ze wskaźnikami na funkcje)?
> 
> sęk w tym ze trudo wlasnie jest dokladnie powiedziec co jest zle (jesli mowa o wskaznikach) ale moim zdaniem da sie zauwazyc ze cos tu jest zle
> 
> jedna z rzeczy ktore chyab moge wymienic 
> to prawdopodobnie takie rzeczy jak:
> 
> int*** x;
> 
> gdzie aby zapisac cos do do celowego inta piszesz ***x = 10;
> jest to prawdopodobnie zle, lepiej (prawodopodobnie) bylob by tym docelowym x'em bylo x
> 
> int*** x;
>  x = 10;
> (a te dodatkowe wskazniki byly by pewnie dostepne przez &x &&x i &&&x)
> 
> jednakowoz jest to trudny temat i troszke ciezki w romowie

Nie mam tego zbyt głęboko przemyślane, ale "z daleka" wygląda mi raczej na kwestię kosmetyczną. Thompson i Ritche zresztą raczej by zalecali styl deklaracji

int ***x;

który lepiej uwypukla symetrię pomiedzy deklaracją a użyciem (tzn. że ***x jest typu int).

Pominę kwestię, że w rzeczywistym kodzie rzadko kiedy korzystam z więcej niż dwóch poziomów przekierowania.

> co do tego co jest zle we wskaznikach na funkcje to jest nieco prostsze choc tez nie calkiem, jedna z rzeczy jest to ze takie wskazniki na funkcje jak w c (z takim pilnowaniem typu) sa dosyc malo uzyteczne, inna rzecz to ze np te nazywy typow uzywane w c sa po prostu zle (chyba  nawet zaloze watek na comp.lang.c z pytaniem/propozycja przemyslenia jak to poprawic, tak ze jak kolega zainteresowany mozna tam rzucic okiem czy cos z tego watku wyjdzie)

Rzuciłem okiem, ale nie mogę powiedzieć, żebym coś z tego zrozumiał :]

W moim odczuciu wskaźniki na funkcje są najbardziej użytecznym i elastycznym środkiem abstrakcji w języku C (no i też trudno sobie wyobrazić przenośnego UNIXa bez tego mechanizmu, gdzie deskryptor plików to - może w pewnym uproszczeniu - krotka wskaźników na funkcje (read, write, ioctl)).

Może pewnym kłopotem jest to, że składnia deklaracji faktycznie nie jest zachwycająco prosta - pod tym względem chyba najkorzystniej wypadają języki funkcyjne w rodzaju Haskella czy MLa (tylko że w ich przypadku to są "nie do końca wskaźniki").

Ale też nie jest to problem, z którym nie dałoby się poradzić (zwłaszcza jeżeli się umiejętnie korzysta z typedefów)
Technical Details
Message-ID: <2ffc823d-7f45-4f5d-9b0e-6310c0ae3eab@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.albasani.net!news.mixmin.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <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> <r48ppk$aoi$1@dont-email.me> <89cfb34d-bd57-4a7a-8c94-c2dcdeb02e03@googlegroups.com> <r49vg7$fa1$1@dont-email.me> <31adf521-11e2-4e85-ae62-2e9bb7b9f0a6@googlegroups.com> <20200311150044.15019d69@mateusz> <28159a83-93d5-40d1-b647-3409548b1c98@googlegroups.com> <20a2f3c6-1f50-4824-b775-ead2e7af388c@googlegroups.com> <0881b575-25ff-4ed3-82b2-eb1d2fd0375e@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a37:4a14:: with SMTP id x20mr2708795qka.357.1585140448344;        Wed, 25 Mar 2020 05:47:28 -0700 (PDT)
X-Received: by 2002:a5b:391:: with SMTP id k17mr4788205ybp.333.1585140447978; Wed, 25 Mar 2020 05:47:27 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.albasani.net!news.mixmin.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Wed, 25 Mar 2020 05:47:27 -0700 (PDT)
In-Reply-To: <0881b575-25ff-4ed3-82b2-eb1d2fd0375e@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: google-groups.googlegroups.com; posting-host=31.60.139.23; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 31.60.139.23
References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <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> <r48ppk$aoi$1@dont-email.me> <89cfb34d-bd57-4a7a-8c94-c2dcdeb02e03@googlegroups.com> <r49vg7$fa1$1@dont-email.me> <31adf521-11e2-4e85-ae62-2e9bb7b9f0a6@googlegroups.com> <20200311150044.15019d69@mateusz> <28159a83-93d5-40d1-b647-3409548b1c98@googlegroups.com> <20a2f3c6-1f50-4824-b775-ead2e7af388c@googlegroups.com> <0881b575-25ff-4ed3-82b2-eb1d2fd0375e@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <2ffc823d-7f45-4f5d-9b0e-6310c0ae3eab@googlegroups.com>
Subject: Re: Coroutines w (GNU) C
From: Maciek Godek <godek.maciek@gmail.com>
Injection-Date: Wed, 25 Mar 2020 12:47:28 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit