🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Coroutines w (GNU) C

#310097
From: M.M.
Date: Fri, 31 Jan 2020 11:59
80 lines
6622 bytes
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. 


Kiedyś jak napisałem na egzamin coś w C++, to dostałem zjeby bo 
pójdę pracować do biedniejszej firmy, albo na liunxa, a tam C++ 
nie ma, a jak użyłem new to już w ogóle dostałem takie zjeby, bo 
new jest łogroooomne a mój program na zaliczenie ma tylko 10 linijek, 
więc new stanowi jego 99% kodu wynikowego. Co gorsza miało to
na mnie zbyt duży wpływ, potem zadawałem sobie nie raz bezsensowny 
trud żeby rozwiązać coś przy pomocy prostszych narzędzi. Ale to
była historia, ostatnio na mikrokontroler pisałem program w
C++ z szablonami i dzięki temu łatwiej mogłem zarządzać eksperymentami i
wybrać najmniejszą wersję która w ogóle mieściła się w pamięci
mikrokontrolera. W C bym uzyskał podobny efekt i to nawet podobnym
nakładem pracy, ale do zarządzania eksperymentami na pewno bym musiał 
dużo więcej się napracować w Co.


Wracając do teorii, jeśli mamy nadzbiór fitczerów, to język nie może
być gorszy. A jednak jeśli według rankingów 5-7% programistów wybiera 
czysty C i według tych samych rankingów 12-15% wybiera najpopularniejszy
język w danym czasie, to z czym mamy do czynienia? Wszyscy programiści
programujący w C dokonali złego wyboru czy coś jest na rzeczy? 

Kiedyś myślałem że ludzie grający w lotto to idioci, bo esperancja mówi
wyraźnie, że średnio tracimy 50%. W przypadku lotto rzecz w tym, że czasami
3 złote (czy tam ile na kupon) nie jest 100tys razy mniejsze od potencjalnej
wygranej 300tys, tylko np. milion razy. Choć 300tys / 3 = 100tys, to w
pewnych (i to częstych sytuacjach) z uwzględnieniem korzyści jakie można
mieć z 3 zł i z 300tys zł, włąśnie 300tys / 3 = milion. Jak ktoś opłacił
rachunki i ma na jedzenie, to ma jeszcze parę groszy w kieszeni, to za
te parę groszy nic sensownego nie może zrobić, nawet jakby je wrzucał do
skarbonki przez lata. Po głębszej analizie gracze w gry które teoretycznie
są przegrane przestają być osobami które dokonują błędnych decyzji.

Może jakby się głębiej przyjrzeć programistom C, to ich wybór też wcale
nie jest bezsensowny? Mi się narzucają dwa argumenty o których już 
pisałem:
 1) Mniej fitczerów oznacza mniej zastanawia się nad sposobem rozwiązania 
    danego problemu, piszemy sztancowo, z szablonu, a code review częściej
    przechodzi.
 2) Koszt szkolenia, czas na szkolenie, czas na zdobycie doświadczenia. W 
    C++ niedoświadczony programista może wpaść w wiele pułapek.
 3) Gdzieś słyszałem argument, że wolą programistów w C, bo są tańsi od 
    programistów w C++.
 4) Jeśli jest masa fitczerów i masa pułapek, to w każdej firmie, jeśli
    nie w każdym projekcie, jest narzucane co można, a czego nie można.
    Przychodzi doświadczony programista z firmy A do firmy B. Robi w
    istniejącym projekcie kawałek dobrej roboty. A potem dowiaduje się że
    u nas nie można protected, szablony maksymalnie tylko z jednym 
    parametrem, zakaz wielodziedziczenia, w takich przypadkach w 
    ogóle agregacja zamiast dziedziczenia, itd. Zanim zmieni nawyki, minie
    trochę czasu, albo się nawet zniechęci.


A tak jeszcze co do szkolenia... Dużo programuję w C++. Lambdę użyłem w
praktycznym problemie może jeden raz w życiu. Potem chciałem użyć 
ponownie. Minęło tyle czasu, że zapomniałem składnie. Musiałem odszukać w
dokumentacji. Nie wiem czy z uwzględnieniem czasu na szukanie informacji o
składni bym nie rozwiązał danego problemu szybciej ze starymi wskaźnikami na
funkcję. 


Pozdrawiam
    
Technical Details
Message-ID: <f758b0ad-39d4-46bc-8b7e-72ca20a7702e@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-mail
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>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:620a:143a:: with SMTP id k26mr10419561qkj.450.1580471999412;        Fri, 31 Jan 2020 03:59:59 -0800 (PST)
X-Received: by 2002:a81:a642:: with SMTP id d63mr7585753ywh.202.1580471999204; Fri, 31 Jan 2020 03:59:59 -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 03:59:58 -0800 (PST)
In-Reply-To: <20200131085246.0fe01529@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> <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>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f758b0ad-39d4-46bc-8b7e-72ca20a7702e@googlegroups.com>
Subject: Re: Coroutines w (GNU) C
From: "M.M." <mmarszik@gmail.com>
Injection-Date: Fri, 31 Jan 2020 11:59:59 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit