On Wednesday, January 29, 2020 at 11:41:53 PM UTC+1, heby wrote:
> On 29/01/2020 22:48, M.M. wrote:
> >> A jak im pewnego dnia podmienisz gcc na g++ to co się stanie? A jak
> >> pewnego dnia dorzucisz im do kodu class scoped_interrupt_disable to co
> >> się stanie? Wybuchnie im? Odmówią pracy bo niekoszerne? Do spowiedzi pójdą?
> > Nie wiem co się stanie. Prosiłeś o przykład, więc podałem.
>
> Ten przykład nie tłumaczy problemów w C++ tylko w białku.
W jakim białku?
>
> > Wszystko ma
> > swoje wady i zalety, nawet C++ ma wady względem C
>
> 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.
>
> >, a jako nadzbiór nie
> > powinien mieć wad. Koszt przeszkolenia jest nie do przeskoczenia.
>
> 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?
>
> > nastąpił rozwój technologii wytwarzania oprogramowania, ale po pierwsze nie
> > wierzę że ten rozwój nie wpadał i nie wpada w ślepe uliczki
>
> 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.
> I wiesz co, trafiłem kiedyś przez zupełny przypadek na kolesia który nie
> dość że pisał jeszcze koło 2000 roku w tym cudzie to jeszcze przez
> nastepne 10 lat miał do niego straszny sentyment.
>
> Widzisz, to co piszesz to białko.
Nie wiem jak używasz określenia białko.
> Mam takie a takie doświadczenia, widziałem to i tamto, wnioskuje z tego
> to i owo.
Nie wiem w czym problem.
> 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. 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.
> Tylko że białko. Białko wie lepiej, szczególnie jak się na czymś nie zna.
Pierdolisz.
> No więc dowiedziałem się że C to gówno. BCPL był lepszy.
>
> Białko ...
>
> >, a po drugie,
> > jest takie prawo w ekonomii którego nazwy już nie pamiętam, ale mówi ono o
> > tym, że od pewnego momentu trzeba niewspółmiernie dużo pracy włożyć w
> > udoskonalanie, aby uzyskać minimalnie lepsze efekty. Jak myślisz, ile pracy
> > trzeba włożyć, żeby przyspieszyć trabanta rozpędzający, a ile, aby
> > przyspieszyć najszybszy samochód na świecie i tym samym pobić rekord prędkości?
>
> To teraz z tej analogi zrób casta na konkret.
>
> To jaki język jest tym najszybszy na świecie?
>
> Rust chyba obecnie jest na karuzeli terndów?
>
> 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. Bajeranckie cechy języka... to
nawet spowalniają, bo programista myśli czego lepiej użyć. W Javie się
szybciej programowało, ale efekt w C++ jest lepszy.
>
> >> Czyli mówisz o czymś innym niż ja. Spieraj się więc z kimś innym.
> > Spokojnie, ja jeszcze nie jestem pewny o co się spieramy :)
>
> Podobno o wyższość C++ nad C i odwrotnie.
Bez kontekstu nie wiem jak się o to spierać. Templates można porównywać do
błędogennych makrodefinicji i void*. Templaty można robić po to, aby pomóc
kompilatorowi w wykrywaniu błędów na etapie kompilacji. Ale też templates
można porównywać do ładnego kodu z metodami wirtualnymi i templaty można
pisać w celu agresywnej optymalizacji kodu pod kątem czasu wykonania. Niby
to samo, a za każdym razem zupełnie inna sytuacja. A co dobrego z tej rozmowy,
to zupełnie nie wiem... Ktoś kto nie wie że templaty mogą posłużyć do
optymalizacji kodu, ale taki kod tylko w banalnych przypadkach jest
czytelny - to się dowie. Ja na razie nic się nie nauczyłem.
> 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ą.
> > Napisałem o tym z jakim sposobami używania określenia 'programowanie w C++'
>
> 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.
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?
> >>>> W ogóle nie ma tutaj obiektowości poza użyciem jej w celu
> >>>> obsługi *ewentualnych* szablonów, bo tak to się robi w C++.
> >>> Nie rozumiem.
> >> 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?
>
> >> Składnia ta bowiem przydaje się w szablonach, jest wręcz
> >> podstawą pisania z użyciem generycznych typów w C++. Nie mających nic
> >> wspólnego z programowaniem obiektowym.
> > Chyba nadal nie rozumiem. A jakie wnioski z tego płyną?
>
> Ż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.
>
> I tego faktu nie zmienia to że gdzieś w nagłówku jest [...] class traits
> [...].
>
> "class" mogło by się nazywać "type" i być może tą prostą sztuczką ludzie
> przestali by bredzić że używanie klas w C++ to pisanie obiektowe.
>
> >> Mam buga który ukrywał się w void* przed ponad 10 lat. Przed oczami
> >> doświadczonych programistów. Jedyny powód że udało się go znaleźć to
> >> *przypadek*.
> > A ja zapewne mam niejeden taki błąd w szablonach.
>
> 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.
>
> Szablony powodują że błedy w runtime stają się sporadyczne. Przenoszone
> są na kompilacje.
>
> Wiadomo, nie każdy potrafi czytać komunikaty błędów. Ale naprawdę od
> kilkudziesiąciu lat jest coraz lepiej z jakością błedów. Proponuje
> zobaczyć co wyświetla clang w przypadku błedów kompilacji. Jest bardzo,
> bardzo dobrze.
>
> >> traits< int >::max
> >> to jakaś okropna składnia? Nie czerpiesz aby przypadkiem wiedzy o
> >> szablonach z jakiś grup anonimowych pisaczy w c?
> > Racja, takie proste przypadki są bardzo przejrzyste.
>
> 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.
> > Miałem na myśli sytuacje
> > 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.
>
> Dam przykład: boost::spirit.
>
> To jest bardzo skomplikowana bibliteka na bardzo pokręcoanych szblonach.
>
> 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....
> 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.
> > takich sytuacjach mocno tęsknię za minimalistycznym C++ albo za Javą
>
> Prawie cały boost to ukrycie skomplikowanych szablonów za bajecznie
> prostymi interfejsami.
Co nie znaczy że proces jego powstawiania (czytaj: technologia tworzenia
wysokiej jakości oprogramowania z użyciem szablonów) był tak samo
majestatyczny jak efekt końcowy dla ostatecznego użytkownika. Nawet to
są różne spojrzenia na to samo magiczne słowo 'template'. Raz tworzymy
oprogramowanie korzystając szablonów, drugi raz przygotowujemy szablony do
reużycia.
> Pewnie, możesz zobaczyć boost::mpl czy fusion i pokazać mi przykłady
> gdzie jest cieżko.
>
> Ale oni naprawdę się napracowali aby to całe mpl było *bajecznie* proste
> po stronie usera mimo komplikacji w środku.
I widzisz, może zgadzamy się co do wszystkiego. Dotarliśmy w końcu do mojego
statystycznego punktu widzenia :D Też się kilka razy w życiu ciężko
napracowałem, żeby reużycie było bajecznie proste i jeszcze dawało wydajny
program. Z punktu widzenia osoby która się napracowała, praca z szablonami
nie jest taka bajeczna, jak z punktu widzenia osoby używające ich.
> Najwyczajniej, powtarzasz mity.
Nie powtarzam, nie rozumiemy się po prostu. Niby i Ty, i ja piszemy o
szablonach. Ale na szablony można patrzyć z kilku perspektyw, do mojej
chyba przed chwilą dotarliśmy.
> C++ moze byc skomplikowany.
Zależy jak porównywać, np. względem Javy jest koszmarnie skomplikowany.
> Ale boost pokazał że ta komplikacja nie musi przeciekać do usera.
A no właśnie, to inne porównanie i zgadzam się z Tobą że nie musi. A jakie
miłe jest programowanie z użyciem QT, naprawdę bardzo podobnie do Javy.
> > 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? Nie zgadzam się też, że trudno popełnić błąd w runtime programując z
wykorzystaniem szablonów.
> Stanowią jeszcze wiell innych rzeczy, ale void* nie jest alternatywą dla
> szablnów. Za void* nie ma żadnych sensownych argumentów.
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.
> >> Całe szczęscie wielokrotne dziedzidzenie szablonów występuje głównie w
> >> bajkach i ksiązeczkach dla niegrzecznych programistów c.
> > Wielokrotnie w sensie że jedna klasa (szablon) dziedziczy z bezpośrednio z
> > kilku to owszem rzadko spotykana konstrukcja i niekoniecznie zalecana.
>
> 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?
> > Ale pośrednie wielokrotnie dziedziczenie, typu X dziedziczy z Y, Y z Z, a Z
> > może z kolejnych - to sytuacja częsta.
>
> Prawie nie spotykana w kodzie usera. Używa się jej w booscie czy stl,
> ale mechanizmy widoczne jako API są strywialziowane.
Ok, to już opisałem wyżej, nie rozumieliśmy się, bo pisałem z punktu
widzenia kogoś kto takich konstrukcji używa.
> > 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?
> >> Robie to codziennie od kilkudziesięciu lat i cieżko mi się zgodzić.
> > Może zwykle używasz szablonów po bożemu, a nie do optymalizacji kodu?
>
> 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ń.
> Znowu deminizujesz. Debug kodu z szblonami wyglada tsak samo jak w C. No
> może przesadzam: w C używając void* jesteś w d... od razu.
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.
> > 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?
> > To wszystko prawda, choć z review to zależy gdzie :-) Nie chciałem
> > absolutnie powiedzieć, że macie olać szablony i wrócić do void*.
> > Chciałem powiedzieć, że jeśli sobie radzono bez szablonów i system
> > operacyjny z GUI działał na 16MB RAM i pentium I 160MHz - to nie
> > ulegajmy złudzeniu, że te szablony aż tak niesłychanie dużo wnoszą.
>
> Znowu to samo.
>
> 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.
> 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,
- konieczność nabrania doświadczenia przez personel,
- wiele lat implementacji w kompilatorach,
- problemy bo kompilatory różnie to wspierały,
- targi o to jak powinny wyglądać w standardzie,
- próby łamania standardu przez niektóre firmy,
- o wydłużonym czasie kompilacji, zwiększonym rozmiarze kodu i słabym
pokazywaniu właściwej linii z syntax error - już pisałem.
- o tym jak to wygląda z punktu widzenia kogoś kto przygotowuje
wygodny szablon - też już pisałem.
>
> Ale są za friko.
>
> To PO CO ich nie uzywać?
To nie do mnie pytanie, ja mówię żeby ich używać, tylko studzę emocje, bo
nie są, nie były całkiem za friko, a w przypadku płatnych bibliotek nigdy
nie będą za friko i nie są aż takim wybawieniem skoro na void* też działało.
> > nie traktować szablonów jako czegoś dzięki czemu technologia wytwarzania
> > oprogramowania przyspieszyła o kiladziesiąt procent, bo bez szablonów była
> > już całkiem szybkim samochodem, który trudo przyspieszać w nieskończoność.
>
> Szablony rozwiazują dobrze kreśloną klasę problemów z jakością kodu.
Zgoda, ale wprowadzają też inne problemy. Choć podsumowanie dziś wypada na
korzyść szablonów, to po odjęciu wad, to podsumowanie nie jest rewelacyjne.
> 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 ;-)
> >> Jesteś nastepnym developerem w tej dyskusji z Atari 65XE jako ciągłą
> >> integracją?
> > Nie, po prostu czasami mam w kodzie nasrana pełno szablonów, jeden szablon
> > jest parametryzowany innymi, te inne też są parametryzowane jeszcze innymi, a
> > niektóre są w kilku wersjach. Jeśli zmieniam warunki kompilacji warunkowej to
> > muszę czekać 30 sekund na pełną rekompilację
>
> Przyznam że "pełna rekompilacja" to zjawisko niepotykane przy prawidłowo
> opisanym projekcie.
>
> 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ą. Nie wiem co gorsze, modlić się czy nie mam błędu w
pliku make, czy czekać te 30 sekund.
>
> >> Pracuje na *zaje...e* ogromnej bazie kodu w C++. Kompilacja najdłuższego
> >> i najbardziej popieprzonego pliku (zawiera głównie boost::spirit)
> >> napisanego z palca trwa coś pod 3 sek. Uwierz mi, to jest makabrycznie
> >> dużo zaawansowanego C++ i *tylko* 3 sekundy. Czy już umarłeś z nudów?
> > Ja przed chwilą dodałem do kompilacji -DOPCJA_X i czekałem na pełną
> > kompilację z 30 sekund na dwóch rdzeniach. Jak jeszcze jest pomiędzy
> > kompilacją -fprofile-generate i -fprofile-use to czekam 2 minuty aby
> > zrobić 30 sekundowy test.
>
> Czyli to nie jest noramlna praca w programowanie. To wyjątek, kiedy
> robisz redefinicję.
Dla mnie to jest norma zawsze wtedy, gdy pracuję pod wodą góry lodowej.
Poza tym owszem, to jest wyjątek.
> 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...
>
> >>> Kolejna wada, trzeba udostępnić kod źródłowy gdy się
> >>> udostępnia bibliotekę napisaną w postaci szablonów.
> >> Brednia.
> > To chętnie się dowiem dlaczego, myślałem że szablony to nagłówki niezbędne
> > do wygenerowania konkretnej wersji kodu, jak to udostępnić w wersji
> > binarnej bez źródeł?
>
> usenet to za mało aby to opisać bo zależy od sytuacji.
>
> Kod nie musi akceptować *dowonych* szablonów na przykład. I biblioteka
> udostępnia impelemntcje dla tych kilku przypadków.
>
> Mniej wiecej to to samo co biblioteka w C. Masz funckje przyjmującą inty
> i floaty. To samo w C++, możesz podać szablon z intem i floatem.
>
> To jeden z przykładów że *NIE* musisz *zawsze* udostępniać kodu
> szablonowego.
Nie rozumiem, ale ok, poszukam, poczytam, może coś jest na
>
> >>> Następna wada, kompilatory
> >>> czasami wskazują błąd daleko od jego wystąpienia.
> >> Brednia w 99% wypadków.
> > U mnie w około 30% przypadków jest to prawda.
>
> Użyj clanga.
Ostatnio używam g++, ale wiem że powinienem spróbować i clanga.
> >>> Podsumowując, kiedyś szablonów używano rzadko albo w ogóle nie używano
> >> Podobnie jak z papierem toaletowym.
> > Tylko że papier toaletowy nie ma nic wspólnego z programowaniem, a (nie)używanie
> > szablonów ma sporo.
>
> 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ć w oczyszczalniach ścieków, musimy iść po niego
do sklepu, musimy go wypakować z paczki i powiesić koło kibla, kto wie czy
nie ma jakiś ustaw prawny o papierze (na pewno jest, bo to może rzutować na
stan zdrowia), a jak się uzależnimy od papieru i raz zapomnimy go kupić, to
chodzimy z obsraną dupą do czasu użycia starej metody. Podobnie są koszty
użycia szablonów, Ty to nazywasz kiepskim przypadkiem, a ja mam poczucie
pełnego obrazu gdy też te kiepskie przypadki wezmę pod uwagę, bo biblioteki
szablonów same nie powstają i nie zawsze są darmowe.
>
> Najzwyczajniej kiedyś go nie było.
>
> Podobnie jak kiedyś nie było C++.
>
> >> 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.
>
> 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.
>
> >> A po chwili się budzisz i okazuje się że ten sam program kompilowalny w
> >> C i C++ generuje dokładnie taki sam kod asemblerowy.
> > Przecież to jest oczywiste
>
> Nie jest. Dla znacznej częsci wyznawców C, bazujących na opiniach z
> facebooka świat wygląda tak że "C++ dużo zajmuje". Ta taka kolejna
> teoria spiskowa obok antyszczepionkowców i niejedzących.
>
> >, że każda konkretyzacja szablonu oznacza nie
> > tylko różny kod, ale nowy dodatkowy kod.
>
> Nie. Tak. Zależy.
Ok, chyba i tak, i tak nic pożytecznego z tej rozmowy. Pewnie byśmy
musieli wyprodukować jeszcze z 10 postów żebyśmy się dobrze zrozumieli.
Jak do tego czasu nerwy by nikomu nie puściły, to może potem byłaby jakaś
nauka ;-)
Pozdrawiam