Article View: pl.comp.lang.c
Article #310112Re: Coroutines w (GNU) C
From: Maciek Godek
Date: Fri, 31 Jan 2020 12:54
Date: Fri, 31 Jan 2020 12:54
40 lines
5441 bytes
5441 bytes
W dniu piątek, 31 stycznia 2020 13:00:00 UTC+1 użytkownik M.M. napisał:
> On Friday, January 31, 2020 at 8:52:47 AM UTC+1, Mateusz Viste wrote:
> > 2020-01-30 o 16:44 -0800, (fir) napisał:
> > > qsort z c byl dpsyc wolny 250 ms, std::sort z c++ 111 ms, i niech
> > > teraz usenetowy kolega zgadnie ile zajal w stosunku do tego c++owego
> > > std::sorta kawalek prostego c (nie moj, znaleziony w necie)...
> >
> > No ale wojna hebo-maćkowa dotyczy wyższości C++ nad C. heby zresztą
> > słusznie zauważa, że gdyby zupełnie wyeliminować z tego całego
> > programowania człowieka, to C++ byłby bardzo fajny. Trochę jak
> > socjalizm.
> >
> > Ty natomiast porównujesz implementację jednego libc do drugiego - a to
> > już coś zupełnie innego, związek z językiem jest bardzo luźny i odległy.
>
> C++ jest (nie licząc drobiazgów) nadzbiorem C, więc nie może być
> gorszy.
To zależy pod jakim względem.
Stosunkowo niedawno napisałem takie coś, i się okazało jakoś bardzo popularne.
https://www.quora.com/Is-it-still-worthwhile-to-learn-C-given-that-C-can-do-almost-everything-better/answer/Panicz-Godek
Jednym z problemów, jaki mam z C++, dość dobrze opisał wcześniej Mateusz: że najpierw jest noga w drzwi ("po co w C, skoro jest C++, i wystarczy zamienić gcc na g++?"), a później równia pochyła ("no, to skoro już mamy C++ to użyjmy jeszcze przeciążania operatorów i skorzystajmy z tego, że preprocesor szablonów jest Turing-complete")
I finalnie wychodzi, że kod jest niespójny, bo jakaś młodzież zapragnęła wcisnąć jakieś nowe ficzery, ktoś kiedyś wziął coś z boosta, a teraz weszło do standardu, ale nikt nie ma czasu tego zrefaktoryzować, czasy kompilacji jednego modułu przekraczają pół godziny, a komunikat o błędzie związanym z brakiem średnika nie zmieściłby się na rolce papieru toaletowego (i to tego, co do którego producent deklaruje, że ma długość czterech rolek)
A mówiąc jeszcze szerzej, baza kodu w C++ jest mocno niespójna.
I na przykład w Windowsowych nagłówkach do Bluetootha można znaleźć rzeczy w rodzaju:
template <typename D> typename consume_Windows_Devices_Bluetooth_GenericAttributeProfile_IGattSession<D>::SessionStatusChanged_revoker consume_Windows_Devices_Bluetooth_GenericAttributeProfile_IGattSession<D>::SessionStatusChanged(auto_revoke_t, Windows::Foundation::TypedEventHandler<Windows::Devices::Bluetooth::GenericAttributeProfile::GattSession, Windows::Devices::Bluetooth::GenericAttributeProfile::GattSessionStatusChangedEventArgs> const& handler) const
{
return impl::make_event_revoker<D, SessionStatusChanged_revoker>(this, SessionStatusChanged(handler));
}
A że ludzie uczą się przez naśladowanie wzorców, to potem sobie wyobrażają, że tak powinny wyglądać profesjonalne programy.
Dodatkowo masz taką sytuację, że w jednym języku masz ficzery, które wzajemnie się kłócą. Na przykład: możesz sobie w C++ używać setjmp/longjmp. No, chyba że używasz RAII, to wtedy zmiana kontekstu staje się "undefined behavior", czy, jak to śpiewała Anita Lipnicka, "wszystko się może zdarzyć"
Technical Details
Message-ID:
<01ea6e01-2163-47a0-9c27-4cde159e3e5e@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!weretis.net!feeder7.news.weretis.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-mailReferences:
<4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0k8i5$ifg$1@dont-email.me> <ce3f0b08-658f-4248-b82c-09f093a7f20c@googlegroups.com> <r0kq6d$v6h$1@dont-email.me> <748c5d16-f4a8-43a0-8a56-bea0800e1e04@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> <c9ada043-010e-41c1-8362-385fcab97fbb@googlegroups.com> <r0sm9p$r2m$1@dont-email.me> <35023603-9392-414e-9ad2-dfb5ddf4a850@googlegroups.com> <r0t1ne$3re$1@dont-email.me> <91b73c11-aadd-4e8f-9a1b-a3ea1da6adc3@googlegroups.com> <r0vipi$i8e$1@dont-email.me> <cef97639-4030-4213-9ad0-c4ad4e2819ea@googlegroups.com> <20200131085246.0fe01529@mateusz> <f758b0ad-39d4-46bc-8b7e-72ca20a7702e@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 2002:ac8:47cc:: with SMTP id d12mr10593064qtr.246.1580475248756; Fri, 31 Jan 2020 04:54:08 -0800 (PST) X-Received: by 2002:a81:8405:: with SMTP id u5mr7602507ywf.93.1580475248474; Fri, 31 Jan 2020 04:54:08 -0800 (PST) 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!weretis.net!feeder7.news.weretis.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: Fri, 31 Jan 2020 04:54:08 -0800 (PST) In-Reply-To: <f758b0ad-39d4-46bc-8b7e-72ca20a7702e@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=213.192.68.153; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r NNTP-Posting-Host: 213.192.68.153 References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0k8i5$ifg$1@dont-email.me> <ce3f0b08-658f-4248-b82c-09f093a7f20c@googlegroups.com> <r0kq6d$v6h$1@dont-email.me> <748c5d16-f4a8-43a0-8a56-bea0800e1e04@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> <c9ada043-010e-41c1-8362-385fcab97fbb@googlegroups.com> <r0sm9p$r2m$1@dont-email.me> <35023603-9392-414e-9ad2-dfb5ddf4a850@googlegroups.com> <r0t1ne$3re$1@dont-email.me> <91b73c11-aadd-4e8f-9a1b-a3ea1da6adc3@googlegroups.com> <r0vipi$i8e$1@dont-email.me> <cef97639-4030-4213-9ad0-c4ad4e2819ea@googlegroups.com> <20200131085246.0fe01529@mateusz> <f758b0ad-39d4-46bc-8b7e-72ca20a7702e@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <01ea6e01-2163-47a0-9c27-4cde159e3e5e@googlegroups.com> Subject: Re: Coroutines w (GNU) C From: Maciek Godek <godek.maciek@gmail.com> Injection-Date: Fri, 31 Jan 2020 12:54:08 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit