🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Coroutines w (GNU) C

#310123
From: M.M.
Date: Fri, 31 Jan 2020 12:07
462 lines
25115 bytes
On Thursday, January 30, 2020 at 10:45:28 PM UTC+1, heby wrote:
> On 30/01/2020 04:40, M.M. wrote:
> >> Ten przykład nie tłumaczy problemów w C++ tylko w białku.
> > W jakim białku?
> 
> Problemy z C++ to głównie problemy białkowe:
> a) muszę używać new bo inaczej się nie da
> b) szwagra kumpla zięcia ciotka to miała taki przypadek że zainkudowała 
> coś i exec zrobił się bilin razy większy
> c) void* jest czytelniejsze niż Foo*
> d) po C++ krowy mleka nie dają
> e) ten sam asembler, ale jest wolniejszy bo szwagier sprawdzał
> f) "mam swoje powody"
> 
> >> W sensie że jest bardziej restrykcyjny? Słyszałme kiedyś że to wada. Do
> >> dzisiaj nie wiem dlaczego.
> > Podałem przykład, ale Ty na to coś o jakimś białku.
> 
> Bo wszystkie problemy jakie padły w tym wątku sa białkowe.
> 
> >> Napisałem Ci że nic nie musisz szkolić poza "chłopaki, od dzisiaj w
> >> każdym przerwaniu na arma na początku ma stać scoped_interrupt_disable
> >> sid(); i h...". A jak któryś podskoczy to w łeb. Koniec szkolenia. Po
> >> roku nie dadzą sobie tego siła odebrać.
> > To faktycznie nie rozmawiamy o C++, tylko o czymś w rodzaju co napisałeś
> > "wystarczy jeden ficzer z C++". Co dobrego z takiej rozmowy wyniknie?
> 
> Być może komuś uratuje dupę jak zampomni postawić sei() przy returnie "w 
> przerwaniu ARMa".
> 
> Jeden mały ficzer ratujący dupę wydaje się być całkiem sensowny jak za 0zł.
> 
> Ale nie, bo "mam swoje powody".
> 
> >> Kiedyś ludzie uważali BCPL za spełenienie marzeń. Sam się kompiluje,
> >> można zrobić bootstrap na dziwnym systemie, architektura wręcz zdjęta z
> >> tablicy uczelni, *uproszczona* składnia.
> > Niestety nie miałem przyjemności z BCPL.
> 
> Śladowe ilości można było odszukać, najbliżej, w Amidze; w okolicy 
> połowy lat 80. DOSa miała napisanego w BCPLu. Skutkiem ubocznym 
> wszystkie pointery API DOSa wymagały arytmetyki >>2 <<2. H... wie po co :D
> 
> > Nie wiem jak używasz określenia białko.
> 
> Jako decydowanie o technologii na podstawie pozaracjonalnych doświadczeń 
> przez ludzie składających się z białka z domieszką uprzedzeń. Jedną z 
> najbardziej zdumiewających rzeczy jakie zrozumiałem o porogramistach 
> jest to że to ludzie bardziej uprzedzeni do wszystkiego niż przeciętny 
> wyborca konserwatystów.
> 
> >> Mam takie a takie doświadczenia, widziałem to i tamto, wnioskuje z tego
> >> to i owo.
> > Nie wiem w czym problem.
> 
> W tym że podejście racjonalne polega na czymś zgoła odmiennym.
> 
> >> A na koniec okazuje się że programy w C++ nie dość że są czytelniejsze
> >> od tych w C, to często są szybsze, łatwiejsze w analizie i refaktoringu.
> > Sekundę. Programy w C++ mogą być czytelniejsze od tych w C i to mogą być
> > znacznie czytelniejsze, tak samo jak mogą być łatwiejsze w analizie i
> > refaktoringu.
> 
> Nie, one *zazwyczaj* są. Pozawalają wyrazić algorytm bez pieprzenia się 
> z pisaniem go w asemblerze, do którego w gruncie rzeczy sprowadza się C, 
> a szczególnie taki poprzetykany void*.
> 
> > Ale jeśli są mocno zoptymalizowane pod kątem szybkości
> > działania, to na pewno nie są ani czytelne, ani łatwe w analizie, a już w
> > ogóle są fatalne w rozbudowie i refaktoringu.
> 
> Obawiam się że w programowaniu ważniejsza jest złożoność algorytmiczna 
> nad hackerskie optymalizacje kodu. Tym zajmuje się kompilator.
> 
> I uwaga: wszystkie sztuczki z C++ z szablonami generują równie szybki i 
> równie hackerski kod co C. Tyle że łatwiej to czytać, rozumieć i 
> refaktorować niż sieczkę kwadratowych kół w C.
> 
> >> I co to ma w ogóle do dyskusji o tym że zmiana z gcc na g++ dodaje od
> >> razu za darmo masę możliwosci które w C wymagają pisania kwadratowych kół?
> > Już pisałem jaka jest analogia i nie przeczyłem możliwościom C++. Nie można
> > jednej technologii ulepszać bez końca, a już na pewno nie można stałym
> > nakładem kosztów/pracy ulepszać o stałą wartość, efekty stają się coraz
> > mniejsze, a języki programowania są ulepszane od dawna. Dopóki  nie
> > będzie jakiegoś przełomu w technologiach wytwarzania oprogramowania, to
> > nie należy się już spodziewać, że taki czy inny zestaw nowych ficzerów
> > znacząco udoskonali technologię. W moim przypadku dobre biblioteki najbardziej
> > przyspieszają tworzenie oprogramowania.
> 
> Na 99% masz do nich dostęp w C++. Nastepny pusty argument.
> 
> > Bajeranckie cechy języka... to
> > nawet spowalniają, bo programista myśli czego lepiej użyć.
> 
> Odwrotnie. Programista nie myśli jak jest zbudowany std::container, 
> używa move i ma najszybszą z możliwych implementację. Pisanie w C++ 
> opiera się na pewnych obietnicach: napisz co chcesz a my zrobimy to tak 
> dobrze jak się da, albo przynajmniej najlepiej jak potrafimy.
> 
> Bibliteki nie są doskonałe. Ale są coraz doskonalsze a lata 90 słusznie 
> mineły.
> 
> > Bez kontekstu nie wiem jak się o to spierać. Templates można porównywać do
> > błędogennych makrodefinicji i void*.
> 
> Nijak się nie da. Templates nadają sens wskaźnikom. void* odbiera ten 
> sens. To tak jak byś pisał we wspomnianym BCPLu. Wszystko jest "wordem" 
> i sam se zgaduj co dostałeś jako argument. No wiec masa programistów C 
> pisze właśnie w takim BCPLu. Wszystko jest void* i tylko cicha modlitwa 
> pozwala upewnić się że to jest jednak Foo*.
> 
> >> Tylko że ja się o to nie spieram. Ja tylko protestuje przeciwko
> >> bredzeniu o tym że zmiana z gcc na g++ jest niemozliwa, bezsensowna
> >> i
> >> korutyny nie muszą mieć stosu a programiści muszą się szkolić z używania
> >> prymitywnego RAII.
> > Nie wiem, moje korutyny mają stos i są odporne na wątki - chyba że to co
> > ja mam jeszcze nie nazywa się korutyną.
> 
> Korutyna ma mieć stos. Piszą to w pierwszym zdaniu o korutynach na wiki.
> 
> Ale Maciek ma inny internet, inzynierię i wszechświat. U nie go nie 
> muszą. Stąd cała dyskusja, która tradycyjnie już odpłyneła w kierunku 
> nastepnego nudnego flame starych dziadków. Przypuszcalnie za 30 lat 
> będziemy się spierać w sanatoriach waląc się laskami po łbach.
> 
> >> Wieć programowanie w C++ to programowanie z dowolnym ficzerem dostępnym
> >> w g++ a niedostepnym w gcc. Na przykłd z użyciem RAII, które to jest
> >> swoją drogą krytycznie potrzebne w embedded i jednoczesnie skandalicznie
> >> olewane przez embedded. Bo kwadratowe koła łatwiej się produkuje niż
> >> kupuje okrągłe. 
> > A wyżej napisałeś że spieramy się o wyższość języka C nad C++ lub odwrotnie.
> 
> Bo tak wyszło. Pierowtny temat to napisanie kilku mark w celu emulacji 
> czegoś czego autor nie pojmuje jak ma działać.
> 
> > Język to nie jeden ficzer, a w praktyce nawet spór o cały język jest jałowy, bo
> > co komu nawet z najlepszego języka jak nie ma do niego narzędzi?
> 
> Do C++ jest całkiem sporo narzędzi. Nie narzekałbym.
> 
> >>>> Użycie składni obiektowej (struct/class) nie oznacza że używa się
> >>>> obiektowości.
> >>> Dlaczego?
> >> Bo obiektowośc wymaga *OBIEKTÓW* a nie klas.
> > Nie wiem, a co z tego rozgraniczenia dobrego dla Ciebie i dla mnie?
> 
> To dośc istotne przycięcie powoduje że ludzie przestają widzieć C++ jako 
> "coś gdzie obowiązkowo używa się new".
> 
> >> Że traits< int >::max to nie jest programowanie obiektowe, natomiast to
> >> jest programowanie w C++.
> > Też nie wiem co z tego dobrego dla mnie i dla Ciebie.
> 
> Dla innych może wynikać. Na przykład mogą w swoim zdumieniu zobaczyć że 
> powyższa linijka nie kompiluje się do milairda megabajtów. Ona się 
> kompiluje do ... niczego.
> 
> Zazwyczaj programiści C właśnie tak widzą C++: dużo pisania więc 
> wolniej. Nie przychdozi im do głowy że to pisanie jest po to aby 
> kompilator sprawdzał typy a nie generował kod.
> 
> >> Nie, znalezienie bładu w szablonach który ujawnia się w runtime jest
> >> naprawdę wyższą szkoła jazdy. Zrobienie błedu w void* który ujawnia się
> >> w runtime to trywializm.
> > Programowałem i z użyciem szablonów i z void*. Tyle że szablonów zwykle używam
> > do poprawy wydajności. Swoją osobistą statystykę mam zdecydowanie na korzyść
> > void* - w sensie że mniej błędów popełniałem. Ale powtarzam, ja czasami używam
> > szablonów zupełnie inaczej niż 90% programistów.
> 
> Mam doświadczenia dokładnie odwrotne. W dodatku moje są zbliżone do 
> obserwacji ludzi zajmujacych się teorią programowania - silne typy są 
> bezpieczniejsze niż uniwersalne dane. U mnie liczy się jakość, nie 
> wygoda pisania.
> 
> >> I w tym momencie zamieniasz gcc na g++. Znalazłeś jeden powód aby użyć
> >> C++ to go używasz, jest za darmo.
> > Nie rozumiem w jakim momencie, gcc szablonów nie kompiluje, a rozmawialiśmy w
> > tym akapicie o szablonach.
> 
> "gcc" to tylko taki koncept kompilatora C. Jak się uprzesz to oczywiście 
> za pomocą gcc skopilujesz plik .cpp (z pewnymi detalami, ale pal sześć). 
> Tu chodzi o metaforę: zamień swój kompilator z C na C++, to jest za darmo.
> 
> >>> gdy jeden szablon jest parametryzowany kilkoma innymi szablonami
> >> Poniżej promila z promila zastosowań szablonów wymaga takich wygibasów.
> > Jeśli podajemy jawnie wydajność jako zaletę templates, to zwykle używa
> > się tego typu wygibasów.
> 
> *W* środku biblitek. U klienta? Nie, raczej nie. Tam się to kończy 
> std::shared_ptr< Foo > a to że w środku ktoś sprawdza trywialnosc 
> konstruktora wielopoziomowymi szablonami to nie jest ani istotne ani 
> widoczne.
> 
> >> Ale dla user końcowego jest wręcz bajecznie prosta.
> > Tak, o to właśnie chodzi. Moje mikro-biblioteki też są w jakimś stopniu proste,
> > ale są wierzchołkiem góry lodowej. Niewidoczna część pod wodą stanowi
> > pierdylion eksperymentów z szablonami, makrami, opcjami kompilatora, z
> > oczekiwaniem na koniec pracy kompilatora, z uganianiem się za syntax error w
> > innym pliku niż pokazał kompilator....
> 
> Sprawdź co oferuje clang w kwesti przejrzystości błedów. gcc już od 
> dawna nie ma nic wspólnego z wygodą kompilowania. Da się? Da.
> 
> >> Te szablony w szablonach to taka Baba Jaga dla niegrzecznych
> >> programistów C. Straszy się nią i jak widać skutecznie.
> > Nie wiem do czego nawiązujesz.
> 
> Do bredzenia o tym że cośtam powiększa aplikacje o magabajty "bo trzeba 
> rozwijać szablony". Łomatko. Rozwijam szablony i raz mam 0 bajtów a raz 
> gigabajty. Na tego typu opinie nalezy natychmiast mówić "Stop". Generują 
> tylko atmosere podobną do antyszczepionkowców. Podobno użycie RAII 
> powoduje autyzm.
> 
> >>> pozbawionego błędów. Tak się mówi że szablony stanowią antidotum na błędy, bo
> >>> porównuje się je zwykle do najbardziej błędogennych konstrukcji języka, jak
> >>> wlaśnie do makr, albo do rzutowania na void*.
> >> Stanowią warstwę chroniącą przed pewną klasą problemów. Akurat tych
> >> upierdliwych, bo w runtime.
> > Może tak naprawdę spieramy się o to, że Ty uważasz iż szablony bardzo
> > usprawniają technologię oprogramowania, a ja że usprawniają ją w mniejszym
> > stopniu?
> 
> To zdajnie powyżej to nawet nie do końca się do szablonów odnosi. 
> Bardziej do silnych typów. Tak silnych że drą japę na kompilacji, czego 
> void* nie potrafi.
> 
> > Nie zgadzam się też, że trudno popełnić błąd w runtime programując z
> > wykorzystaniem szablonów.
> 
> Kawestia oceny. Przypadki kiedy typ nie pasuje są u mnie zredukowane do 
> prawie 0.
> 
> > Nie wiem, trudno mi się wypowiedzieć, bo od wielu lat void* zdarza mi
> > się użyć może raz na rok. Może z 15 lat temu używałem regularnie, też
> > dawałem radę. I nie chcę powiedzieć po prostu że kiedyś bez papieru
> > dawali radę, ale że jak dawali radę, to ten papier toaletowy nie jest aż
> > takim panaceum, tylko jakimś kolejnym małym ulepszeniem.
> 
> I jest za darmo. Znaczy nie papier tylko C++.
> 
> >> Myśle że 90% konstrukcji z boosta jest trywialna.
> > Pisałeś też że się napracowali przy booście, czy miałeś na myśli że
> > napracowali się przy pozostałych 10ciu procentach?
> 
> Nie jest istotne kto się naprawcował *przy* booscie. Istotne jest ile 
> napracuje się klient tego API. No więc niewiele. O wiele mniej niż 
> straszy się młodych studentów oferujac im w zamian łupanie kamieni void*.
> 
> >>> Gdy każde jeszcze ma jakieś parametry i
> >>> typy - to naprawdę zazwyczaj dostawałem oczopląsu gdy analizowałem swój własny
> >>> kod po krótkim czasie. Myślę że każdy programista uznałby za łatwiejszy w
> >>> analizie kod np. Javy.
> >> Więc masz kiepskie doświadczenia wynikające z kiespkiego doboru przykładów.
> > Czysta złośliwość czy kryje sie za tym coś konstruktywnego? Co to są
> > kiepskie doświadczenia?
> 
> Kiepskie przykład to na przykład analiza closures w boost::spirit. Tam 
> jest cieżko. I jestem pewny że jeśli ktoś chciałby mi złośliwie wykazać 
> że boost jest trudny to wyjmie przykłąd z okolicy boost::spirit, mpl czy 
> fusion. To są złe doświadczenia. Przy uzywaniu takim jak na początku 
> watku, czyli "małych kawałeczków C++ usprawniajacych pracę" takie 
> kobylaste szablony nie tylko się nie trafiają ale i sensu nie mają. 
> Przyjdzie czas to ktoś to doceni. Na razie wolałbym aby embedowcy 
> zauważyli że ktoś w zeszłym wieku wymyślił RAII. To już by było naprawdę 
> miłe.
> 
> >> Używam C++. W tym szablonów. Szablony są od dziesiątek lat coraz lepiej
> >> wspierane przez kompialtory (komunikaty błedów) i debuggery (pokazywanie
> >> zawartości). Nijak nie wiem czemu foo<int> miało by być bardzie
> >> skomplikowane do debugu. Jedyna przeszkoda to czasem dłuższe nazwy
> >> typów. Tylko że tam się zagląda raz na rok.
> > Na razie rozumiem, że dobre doświadczenia są wtedy gdy się tam zagląda
> > raz na rok, a gdy ktoś akurat nad tym pracuje, to nabiera kiepskich
> > doświadczeń.
> 
> Nie, to oznacza że kłopoty z debugiem kodu szablonowego praktycznie nie 
> wystepują w praktyce. Czasem się tam zagląda, w 50% przypadków brakuje 
> const albo miał być pointer a jest referencja. Ale to widać od razu, bez 
> debugowania. Ostatni raz rozwijałem mapę stl jakieś 2 lata temu szukając 
> dlaczego nie działa. Kodu biblitecznego stl/boost praktycznie sie nie 
> debuguje mimo że mój kod jest nimi przesiąknięty na wylot.
> 
> > Miałem na myśl nie nie tylko śledzenie linia po linii wykonania kodu w
> > programie do debugowania, tyko generalnie usuwanie błędów. Gdy oglądam
> > kod z 'wirtualnym typem' który dopiero w trakcie kompilacji będzie na
> > kilka sposobów konkretyzowany, to wcale nie jestem bardziej pewny jego
> > bezbłędności, niż gdy patrzę na kod zwykłej procedury. W zasadzie to
> > chyba mam odwrotnie, co do zwykłych procedur szybciej nabieram przekonania
> > że są poprawne. A swoją drogą w programach do debugowania też było
> > sporo błędów i gorzej sobie radziły na szablonach.
> 
> Znowu chciałem przypomnieć że lata 90 słusznie mineły.
> 
> >>> nie mam z nimi problemów. Ale gdy np. cały algorytm genetyczny parametryzuję
> >>> kilkoma klasami, to nawet nie mam wsparcia ze strony edytora, bo
> >>> edytor nie wie jakie metody będą miał parametry.
> >> Masz zły edytor.
> > Może, a jaki Ty masz?
> 
> Np. VS + Visual Assist. Visual assist poniekąd potrafi domyślać się 
> detali związanych z szablonami, i prawidłowo podpowiadać. I gubi się 
> czasem, tak. Trudny język, ciężko o dobry edytor, ale nie jest tak że 
> nie ma *nic*.
> 
> >> Mam młotek, ale lepiej wbijać gwoździe lutownicą.
> >> Mam szablony, ale przecież void* to tylko kilka wad z którymi da sie żyć.
> > Nie, nie to chciałem powiedzieć. Mam szablony, używam szablonów, ale jestem
> > świadomy że z void* też działało, więc te szablony to nie żadne panaceum, ale
> > jakieś kolejne ulepszenie.
> 
> Tu jest zupełnie inaczej. Silne typy są lepsze niż void*, mniej więcej 
> zawsze. Mimo to ludzie używający void*, czasami wymieniając ich wady, 
> dalej nie widzą sensu zmieny na silne typy. Problemem jest brak 
> logicznego argumentu dlaczego. W dodatku wielu reaguje skrajnie 
> alergicznie na pytanie "Dlaczego używasz void* skoro silne typy są za 
> darmo". To jest religia białkowa.
> 
> >> Ja rozumiem jeszcze jak by za używanie szblonów trzeba było płacić.
> > Bo trzeba, nic nie jest za darmo. Tą opłatą była/jest:
> >   - konieczność szkolenia personelu,
> 
> Używają int, float. Nagle muszą użyć Foo. To jakaś katastrofa?
> 
> >   - konieczność nabrania doświadczenia przez personel,
> 
> Mieli na to ostatnie 40 lat.
> 
> >   - wiele lat implementacji w kompilatorach,
> 
> Które od wielu lat je mają.
> 
> >   - problemy bo kompilatory różnie to wspierały,
> 
> Zaznaczam po raz kolejny że lata 90 słusznie mineły.
> 
> >   - targi o to jak powinny wyglądać w standardzie,
> 
> Zakończone standardem.
> 
> >   - próby łamania standardu przez niektóre firmy,
> 
> Które nie wpływają na 99.9% kodu pisanego w C++ najmniejszym stopniu 
> oraz identyczne problemy występują w każdym, dowlnym języku i kompilatorze.
> 
> >   - o wydłużonym czasie kompilacji, zwiększonym rozmiarze kodu i słabym
> 
> Atari 65XE słabo się sprawdza jako ciągła integracja, podobnie klikanie 
> w "rebuild".
> 
> >     pokazywaniu właściwej linii z syntax error - już pisałem.
> 
> To dobrze, bo w clangu też to zauważyli
> 
> >   - o tym jak to wygląda z punktu widzenia kogoś kto przygotowuje
> >     wygodny szablon - też już pisałem.
> 
> Ale to nikogo nie obchodzi po stronie klienta.
> 
> >> Szablony rozwiazują dobrze kreśloną klasę problemów z jakością kodu.
> > Zgoda, ale wprowadzają też inne problemy.
> 
> Nie. Ich naduzywanie może generować problemy. Zastapienie void* silnym 
> typem nie tylko jest oczywistym rozwiązaniem problemów z jakoscią kodu 
> ale wręcz zmusza do poprawy jego jakości podczas pisania.
> 
> Perwsze słyszę aby silne typy miał jakieś wady vs void*.
> 
> Na marginesie: void* to nie brak typu. To typ. Coś jak by pisać w javie 
> kastujac wszystko do Object i spowrtoem za każdym razem. Po h.. ?
> 
> > Choć podsumowanie dziś wypada na
> > korzyść szablonów, to po odjęciu wad, to podsumowanie nie jest rewelacyjne.
> 
> Stosujesz typową metodę dyskutowania: będę wyważony, to będę brzmiał 
> mądrze. Tylko że te "nie jest rewelacyjne" jest troche smutne w 
> zderzeniu z faktem że szablony są <division by zero exception> razy 
> lepsze od void*.
> 
> >> W C nie ma nic co mogło by to zastapić poza modlitwą.
> > Zewnętrzne programy narzędziowe pełny rolę generyków, sam jeden większy
> > generator napisałem do generowania sieci neuronowych. No i był void* i
> > makra ;-)
> 
> Kto komu broni generować kod z void*. Pisanie void* z palca jest porażką 
> a nie generowanie.
> 
> >> Jesteś pewien że masz wszystko dobrze że masz potrzebę pełnej rekompilacji?
> > Bym musiał napisać (i potem pilnować) specjalne pliki make, które uwzględniają
> > kompilację warunkową.
> 
> I robisz to co 30 sekund? Czy może robi to ciągła integracja?
> 
> > Nie wiem co gorsze, modlić się czy nie mam błędu w
> > pliku make, czy czekać te 30 sekund.
> 
> To nie ty czekasz. To ciągła integracja czeka. Ty popijasz kawę, albo 
> robisz coś innego.
> 
> >> Masz kiepski przypadek, przypuszczalnie jest on na tyle specyficzny że
> >> nie powinien być uważany za reprezentacyjny.
> > Nie wiem czy kiepski przypadek, sam przyznałeś że ludzie od boosta
> > się napracowali ciężko...
> 
> Nie widzę związku.
> 
> Zmieniasz globalnego define. Wymaga to rekompilacji wszystkiego. 
> Argument że wtedy jest wolno jest taki sam w C jak i w C++.
> 
> >> Z faktu że ktoś kiedyś robił kupę bez papieru nie wynika że papier jest
> >> zbędny obecnie.
> > No nie, mamy papier, żyje się trochę lepiej, ale musimy za niego zapłacić,
> > go produkować, oczyszczać [...]
> 
> Niekiedy daleko idace analogie są błedne.
> 
> C++ jest za friko.
> 
> Napisanie Foo* zamiast void* jest za friko.
> 
> RAII jest za friko.
> 
> W ogóle wszystko jest za friko.
> 
> Upierdiwy profesor powie że plik kompiluje się 1.7ms dłużej. I będzie 
> miał rację. Ten 3-ci rodzaj racji. Coś jak uszczędzanie na plastikowych 
> słomkach w prywatnych samolotach.
> 
> >>>> Na patrz, a ja miałem Amigę z 2MB pamięci chip i na tej konfiguracji
> >>>> poganiałem SaSC w trybie C++ pisząc obiektowe programy GUIowe. Może to
> >>>> czary?
> >>> Może czary, a może to (w jakimś stopniu) dzięki void* ?
> >> Nie, C++ z szablonami. SaSC miał translator z C++ na generowany C.
> > Tak. Były generyki i w C, tylko na poziomie narzędzi a nie języka.
> 
> Nie rozumiesz. SasC to był również normalny C++. To że w środku 
> konwertował to na C i kompilował, to detal. Nieistotny. Niewidoczny.
> 
> Miałem więc kompilator C++ na 2MB RAMu bez swapa i dało się w tym pisać 
> obiektowe i okienkowe aplikacje o przyzwoitej wydajnosci. Ba, o 
> wydajności zbliżonej do tej z C. Róznica była głównie w tym że ten 
> konwerter był *bardzo* kiepski.
> 
> >> Stawiam wniosek: obecnie rozpasanie programów nie ma *NIC* wspoónego z
> >> wyborem języka C czy C++. Ma związek jedynie z kiepskimi programistami,
> >> przyrostem danych i rozbudową OSów.
> > Też mi jest trudno się wypowiedzieć, w sumie nie biorę udziału w
> > programach których kod wynikowy nie mieści się na DVD. Myślę jednak
> > że zdublowanie kodu ma największy wpływ.
> 
> Całe szczęscie C++ nie dubluje kodu sam z siebie jesli ludzie nie piszą 
> byle jak.

Przepraszam, nie będę kontynuował, ponieważ za dużo tekstu bym musiał
napisać, żebym został zrozumiany tak jak wyobrażam sobie w chwili
pisania tegoż tekstu :) Zadam tylko pytanie: dlaczego według rankingów
aż około 5-7% programistów wybiera C, gdy język najbardziej popularny w
danym czasie wybiera np. 12-15%. Coś nie tak z tymi programistami od C
jeśli są tylko zalety z przejścia na C++, czy to jednak jakaś mądrość
tłumu? 

Pozdrawiam
Technical Details
Message-ID: <2c5f15fd-b0c0-466f-8961-a3e5b291657e@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!aioe.org!peer03.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!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>

Show Full Headers
Complete Article Headers
X-Received: by 2002:ad4:408c:: with SMTP id l12mr10170498qvp.164.1580472446985;        Fri, 31 Jan 2020 04:07:26 -0800 (PST)
X-Received: by 2002:a25:b8c5:: with SMTP id g5mr8049641ybm.504.1580472446605; Fri, 31 Jan 2020 04:07:26 -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!news.albasani.net!news.mixmin.net!aioe.org!peer03.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!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:07:26 -0800 (PST)
In-Reply-To: <r0vipi$i8e$1@dont-email.me>
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>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <2c5f15fd-b0c0-466f-8961-a3e5b291657e@googlegroups.com>
Subject: Re: Coroutines w (GNU) C
From: "M.M." <mmarszik@gmail.com>
Injection-Date: Fri, 31 Jan 2020 12:07:26 +0000
X-Received-Bytes: 30170
X-Received-Body-CRC: 3891819425
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit