Article View: pl.comp.lang.c
Article #310081Re: Coroutines w (GNU) C
From: M.M.
Date: Wed, 29 Jan 2020 12:58
Date: Wed, 29 Jan 2020 12:58
81 lines
6145 bytes
6145 bytes
On Tuesday, January 28, 2020 at 11:30:09 PM UTC+1, Mateusz Viste wrote: > 2020-01-28 o 22:37 +0100, heby napisał: > > Czyli jednak religia. Coś z okolic "C++ zajmuje dużo" i jakiś inny > > tego typu krap którego pełno na necie. > > C++ to mocno skomplikowana kobyła, która ulega regularnym zmianom... nie > każdemu to odpowiada. #muremzamaćkiem :) > > > Masz prawo do zdania odmiennego od reszty świata. > > Nie *całej* reszty świata, bo jest nas co najmniej dwóch. A jak by > dobrze poszukać, to myślę że i trzeciego by się dało znaleźć. > > > Lutownicą też się da wbijać gwoździe w papę, dziadek tak robił. > > Być może szybciej wbijać lutownicą którą się ma w ręku, niż młotkiem > który leży pod drabiną? Tak tylko gdybam. No właśnie, są pewne okoliczności w których lepiej użyć C, albo użycie C++ niewiele wniesie, i są to nie aż tak dziwne okoliczności jak 'akurat w ręku trzymam lutownicę' - o czym na dole. > > Bo przerwania, bywa, przychodzą za szybko. Szczególnie jak się w nich > > robi zbędną algorytmikę. Bywa że przychodzą *za* szybko. > > Nie wiem jak to wygląda w ARMie, ale w x86 int handlery są > domyślnie nieprzerywalne. ARM ma inaczej? > > > W niczym. Przy bardzo dużej uwadze, wyszarpaniu sobie żył i głebokiej > > modlitwie masz szansę napisać cały program na side effectach przez > > zmienne globalne i może nawet cudem zadziała. W końcu jakoś te > > programy w BASICu na 8-bit pisali. > > Obsługa przerwań w BASICu? Nie przypominam sobie. W ASM lub jakimś > Turbo C ze wstawkami to i owszem, zabawa przednia. Teraz już takich > fajnych rzeczy się nie robi, inna moda, inne komputery, no i ludzie > jacyś tacy mniej cierpliwi... Przytoczmy kilka faktów: 1) Chyba każdemu odpowiada pisanie takich samych programów krótszym czasie? Pisząc takich samych mam na myśli tak samo wydajnych, tak samo zdebugowanych, tak samo przetestowanych, tak samo funkcjonalnych. 2) W C++ mamy praktycznie to samo co w C, plus wiele dodatkowych rzeczy. Więc jakby nawet się uprzeć, to w C++ można programować tak jak w C jeśliby te dodatkowe cechy nic nie wnosiły. Ściśle, sam ten fakt powoduje, że C++ nie może być gorszy od C w sensie z punktu pierwszego - o czym już ktoś wspominał że C++ kompiluje C. Ale potocznie zazwyczaj ma się na myśli programowanie w C++ pełną gębą. 3) C++ znacznie szybciej się rozwija niż C i jest ogromny. Jeśli chcemy programować w C++, to w czasie gdy uczymy się nowych fitcherów tegoż języka, byśmy mogli sporo kodu naklepać w prostym i małym języku C. Ostatnio np. googlałem jak Lambdę przekazać jako parametr template, nigdy wcześniej tego nie robiłem. W C bym dane rzutował na void* i użył wskaźnika na funkcję - banalne. 4) Gdy się naprawdę PORZĄDNIE projektuje i implementuje ( i może optymalizuje ) kod w C++, szczególnie w celu re-używania, to nakład czasu w przypadku użycia C++ jest większy, ponieważ mamy do wyboru znacznie więcej elementów. W C mamy do wyboru wskaźnik na funkcję, makro i copy-paste-modify. W C++ mamy ponadto funkcję wirtualną, wskaźnik na funkcję składową, lambdę jako argument metody lub szablonu, no i mamy jeszcze do wyboru szablony, a może zwykłym dziedziczeniem problem by się dało załatwić bez metod wirtualnych. Gdy te możliwości przemnożymy przez wygodny interfejs do reużywania, to ogarnięcie małego problemu robi się lekkim wyzwaniem. 5) Biblioteki - używanie gotowych i dobrych bibliotek w C++ jest znaaaacznie szybsze, znaaaacznie łatwiejsze, a jeśli używanie bibliotek ma dawać wydajny kod, to dzięki szablonom w C++ można mieć łatwiejszy w utrzymaniu i lepiej zdebugowany kod. Ale pisanie kodu to nie tylko 'używanie biblioteki', ale też zrozumienie problemu który biblioteka realizuje, zapoznanie się z dokumentacją, przeczytanie jakiś przykładów, bo nawet w C++ nie można optymalnie używać bibliotek jeśli używa się intuicyjnie. Przecież tragedii żadnej nie było gdy się pisało w C w WinAPI, w OpenGL, albo gdy pod DOS się robiło własne GUI z menu i okienkami - i potem się tego reużywało. Pozdrawiam
Technical Details
Message-ID:
<1a207604-09fa-43f2-8d0a-e3ff51b183f4@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!feeder1.feed.usenet.farm!feed.usenet.farm!feeder.usenetexpress.com!tr2.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!g89no10743087qtd.0!news-out.google.com!w29ni944qtc.0!nntp.google.com!g89no10743077qtd.0!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>Show Full Headers
Complete Article Headers
X-Received: by 2002:aed:29a2:: with SMTP id o31mr6428280qtd.279.1580302698033; Wed, 29 Jan 2020 04:58:18 -0800 (PST) X-Received: by 2002:a81:a642:: with SMTP id d63mr20658344ywh.202.1580302697791; Wed, 29 Jan 2020 04:58:17 -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!feeder1.feed.usenet.farm!feed.usenet.farm!feeder.usenetexpress.com!tr2.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!g89no10743087qtd.0!news-out.google.com!w29ni944qtc.0!nntp.google.com!g89no10743077qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Wed, 29 Jan 2020 04:58:17 -0800 (PST) In-Reply-To: <20200128233003.4bf9d9eb@mateusz> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=178.37.229.117; posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj NNTP-Posting-Host: 178.37.229.117 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> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <1a207604-09fa-43f2-8d0a-e3ff51b183f4@googlegroups.com> Subject: Re: Coroutines w (GNU) C From: "M.M." <mmarszik@gmail.com> Injection-Date: Wed, 29 Jan 2020 12:58:18 +0000 Lines: 122 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit