🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Ciemna strona C++

#267758
From: Sebastian Kaliszewski
Date: Tue, 20 Nov 2007 14:57
227 lines
10462 bytes
Seweryn Habdank-Wojewódzki wrote:
>>>>>W Pythonie są jedyne słuszne rozwiązania np. jedyna słuszna lista i
>>>>>nie płaczesz?
>>>>
>>>>W Pythonie mam rozwiązania bardziej elastyczne.
>>>
>>>A jaka niby elastyczność jest zaimplementowana w Pythonowej liście?
>>
>>Taka, że możesz ją podstawić czymkolwiek co "kwacze tak jak lista" i
>>będzie dobrze.
> 
> 
> To jest elastyczność algorytmów, tudzież kodu pracującego na liście a NIE
> listy. Sama lista jest zamknięta!

Tzn? Jest po pierwsze bardziej uniwersalna niż lista w C++, jest lepiej 
wpasowana do języka a w razie czego podstawienie zamiast niej czegoś 
własnego nie wpływa mi na miejsca użycia.


>>W Pythonie masz pełno "use any file-like object here and 
>>you'll be fine, use any iterable collection there, etc).
> 
> Tak, wiem, ale to nie są ficzery tych kawałków języka, tylko samego języka,
> generalnie komponenty języka Python nie są
> wytyczalne/kustomizowalne/zmienialne.
> 
> Pokaż mi jak pięknie Python obsłuży kodowanie np. maziovii lub UTF-16?

Już ci napisali. Zrobienei kodeka nie jest strasznie trudne, Zaś UTF-16 już 
jest gotowe. Spróbuj zrobić własne locales w C++, życzę udanej zabawy :)


>>To po całym chrzanieniu się w zrobieniu traitsów, localesów, itd, tego
>>stringa, który niezależnie od platformy trzyma punkty kodowe unicode w
>>jednym znaku, nie użyjesz nigdzie, poza wypisywaniem i czytaneim ze
>>strumieni, gdzie biblioteka standardowa standardowo oczekuje stringa.
> 
> Super masz 100% racji, jeden bidny string po pierwsze nie jest kontenerem
> jako takim.

Ależ jest :)

>>>>Coś mi się zdaje, że zapomniałeś o której stornie pisałeś.
>>>
>>>Cały czas pisze o 47.
>>
>>Ale w tym na co ja odpowiadałem pisałeś o zupełnie inny slajdzie.
>>Straciłeś tracking.
> 
> Nie. Cały czas piszę o tym slajdzie. Tylko raz skomentowałem 3.

Pisałeś o wielu różnych slajdach, nawet podawałeś numerki. To tu nie było w 
żadnym razie przy numerku 47.


>>>>Włąmy to są przede wszystkim na domowe pecety, chodzące pod kontrolą
>>>>softu pewnego dużego producenta pisanego głównie w C i C++.
>>>
>>>Rozumiem że mówisz o UNIX np: Linux, Solaris, AIX czy HP-UX prawda? ;-)
>>
>>Źle rozumiesz ;)
> 
> To znaczy, że dobrze rozumiem, że to nie jest wina C++, tylko prywatnych
> spraw firmy o której myślimy i która większość softu na skrobnięte w C :-D.

To jest skutek użycia języka który nie pomaga w bezpieczym pisaniu.


>>>No więc w C++ będziesz miał smart_ptr, na razie są one w boost (i nie
>>>tylko np. g++ ma już w sobie mocną wersję tr1).
>>
>>Tyle że wbrew zasadzie you don't pay for what you don't use, w każdym
>>użyciu zapłacę za sychronizację wątkową choć 95% wskazywanych obiektów
>>nigdy pomiędzy wątkami nie będzie przekazywane.
> 
> Jak masz taki projekt to tak.

To jest sytuacja jak najbardziej typowa.

>>>Tego nie potrafię ocenić z punktu widzenia języka, który powstał w
>>>latach '80, wtedy języki w ogóle oferowały mnóstwo ficzerów, w
>>>szczególności Python miał stabilną wersję i C++ miał dobry wzorzec
>>>do "skopiowania".
>>
>>Akurat dynamicznych rozwiązań wtedy było duuużo -- wszelkie Lispy i
>>Smalltalki były u szczytu.
> 
> Smalltalk może był u szczytu i może napisano w nim tak wiele softu, że teraz
> uginamy się pod dziedzictwem tego języka -- w szczególności projektanci
> Javy to smaltalkowcy, którzy nie poprawili umierającego języka tylko
> zrobili lepsze C++ -- takie ono jest lepsze, że sam mówisz o nim źle.
> 
> A Lisp, no po prostu gigant softu król wyznaczający szosy dla maluczkich.
> Jak widać mamy w tym języku popisane systemy operacyjne, aplikacje
> multimedialne, GUI, łepsajty, aplikacje bankowe, gry, ... itd.

O maszynach lispowych słyszał? Gdy wszyscy babrali się w command-line to te 
cusie miały pełnoekranowy interfejs i bajery które reszta świata odkryła 10 
lat później.

> Słowem Gigant.

No właśnie tak!


>>>>2. Jeśli weźmiesz mechanizmy dynamiczne, to tu masz kolejne, poważne
>>>>spowolnienie, w dodatku algorytm zmniejszania rozmiaru jest arbitralny
>>>
>>>A tablice to sobie możesz zmniejsza?
>>
>>Tablica jest lżejsza. Natomiast w wektorze zmiany rozmiarów są arbitralne.
>>Przy dużych danych są też parszywie powoooolne (co powiesz na zamieranie
>>programu na kilka senund sic(!) -- zupełnie jak wczesne GC z Javy 1.0) --
>>i szybkie nie będą, ale przydałąby się możliwość trochę lepszego
>>sterowania niż .reserve().
> 
> 
> Mnie to wystarczy. Tak jak Piotr przewiduję liczbę elementów osadzanych w
> kontenerze i o stosowną liczbę go powiększam. Lepszym rozwiązaniem jest
> napisanie alokatora, ale tylko raz tak poważnie podszedłem do zadania więc
> nie mam wielkiego doświadczenia w pisaniu alokatorów.

Jak potrzebowałem pożądnego rozwiązania to zrobiłe sobie sam. Mam stukturę o 
niewiadomej wielkości (a skąd mam wiedzieć ile obiektów zaraz zamierza 
utworzyć program korzystający ze Śmieciucha) która często gwałtownie rośnie. 
Wbudowany vector nie ma regulkacji tempa wzrostu a kurczenie jest w ogóle 
arbitrane (i zwykle po prostu nie występuje) -- zrobiłem sobie swój.


>>>>(a co jest dobre do wszystkiego nie jest dobre w niczym).
>>>
>>>Rozumiem, że mówisz o liście w Pythonie.
>>
>>W Pythnie zwykle nie wymagam skrajnej wydajności. Na użycie C++ musi być
>>jakieś uzasadnienie.
> 
> 
> O widzisz i tu sam się ugryzłeś w ogon :-D. Ten język jest niebezpieczny, bo
> nie traci czasu na zabezpieczenia niebezpiecznych rzeczy.

Traci czas na duperele, takie jak synchronizacja shared_ptr której nie użyję 
w 95% wypadków.

> Jeśli chcesz je
> zabezpieczyć robisz to sam i według swojego uznania eliminujesz
> niebezpieczeństwa i używasz sposobów adekwatnych do sytuacji. 
> Np. po co w aplikacji jednowątkowej mieć synchronizację wątków? 
> Albo mając aplikację wielowątkową widząc gdzie się one spotykają
> synchronizujesz dokładnie to co jest wspólne i w sposób najbardziej
> odpowiedni.


Nie mam takiej możlwości ani w przypadku wbudowanego new i delete ani w 
przypadku shared_ptr, itd...

>>>Nie. Przykładzik pokazuje kod, którego nigdy żaden n00by nie napisze.
>>>To są hakerskie triki. Jeszcze raz podkreślam przykład na stronie 47 jest
>>>extra dziwny. Żaden n00by w C++ tak kodu nie napisze -- pomijam n00by C
>>>piszący w C++.
>>
>>Problemem nie są nooby robiące program na zaliczenie. Ale ludzie
>>doświadczeni, którzy dostali nowe wyzwanie -- nauczenie się C++.
> 
> Doświadczeni, czy Legacy people(tm)? Jak mnie nauka Haskella idzie opornie,
> to nie narzekam, że język jest do bani.

Haskell jest bardzo dobrze przemyślany, ale wymaga zupełnie innego 
"mind-set" niż języki imperatywne. C++ jest po prostu nieprzemyślany.


>>>>A od kiedy uważam J za dobry język? Toż to przerośnięte, ciężkie krówsko,
>>>>typowy overdesign.
>>>
>>>Ach! Dawno nie słyszałem takiego określenia. Poproszę jeszcze o jakiś
>>>przymiot na C# i może jakiś na Haskella.
>>
>>C# to krówsko nieco w stosunku do J poprawione, ale zato nie dające
>>wygonić się poza oborę MS.
>>
>>A Hakell? Tego, że tak powiem, słabo znam. Może: "Napisany przez
>>zboczeńców dla zboczeńców" ;)
> 
> Uh! Toś przywalił.

:)

>>Mam tu na myśli pozytywne znaczenie, nacechowane podziwem. Tak jak
>>podziwiam gości którzy myślą drzewkami i dla nich lispowe S-expressions są
>>de best. 
> 
> Szkoda, że tak nie piszesz o Spiricie i MPL.

Bo Haskell jest użyteczny, tylko wymaga od użytkownia określonego 
"zboczenia". A te dwa to jest jak Perl Golf i IOCCC.

>>>>>No to mnie pouczyłeś. Np. takie numpy jest napisane oczywiście w
>>>>>Pythonie ;-).
>>>>
>>>>Chodzi o to, że Python nie cierpi tak jak C++ z powodu śmieci z C.
>>>
>>>Cierpi, czy nie cierpi to jest kwestia tego jak elegancko śmieci są
>>>upchane pod dywan.
>>
>>Raczej czy mamy klapę od silnika, aby było ciszej i jak olej pocieknie to
>>żeby został pod klapą.
> 
> 
> Widzisz mnie to nie rajcuje, że jak olej cieknie to zostaje pod klapą.

Wolisz go mieć na sobie?

> Dla
> mnie pod klapą ma być równie czyściutko jak na klapie. W szczególności, że
> jak tak każdy zacznie olewać kiedy mu cieknie, byle nie na szybę, to
> będziemy jeździć na drogach posmarowanych olejem, a od tego do wypadków na
> szeroką skalę jest tylko krok.

W silniku nie jest czysto. Jak ktoś zgubi olej to niedojedzie. Ale lepiej 
żeby od razu nie został nim oblany. A jak się chłodnica zwali to ma nie 
oblać kierowcy wrzątkeim.
C++ to taki samochód, co przy pierwszej drobnej awarii traci hamulce, 
kierownica się blokuje a na kierowcę leci gorący olej i borygo.


pzdr
\SK
Technical Details
Message-ID: <fhurmu$5d9$1@bozon2.softax.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!news.internetia.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!bozon.softax.com.pl!not-for-mail
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh2lj6$qkh$1@news.vectranet.pl> <fha3as$pap$1@bozon2.softax.pl> <fhaj8u$e02$1@news.vectranet.pl> <fhf09d$ohq$1@bozon2.softax.pl> <fhfi9l$640$1@news.vectranet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!news.internetia.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!bozon.softax.com.pl!not-for-mail
From: Sebastian Kaliszewski <s@get.it.off.to.reply.informa.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: Ciemna strona C++
Date: Tue, 20 Nov 2007 15:57:16 +0100
Organization: Softax news server
Lines: 227
Message-ID: <fhurmu$5d9$1@bozon2.softax.pl>
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh2lj6$qkh$1@news.vectranet.pl> <fha3as$pap$1@bozon2.softax.pl> <fhaj8u$e02$1@news.vectranet.pl> <fhf09d$ohq$1@bozon2.softax.pl> <fhfi9l$640$1@news.vectranet.pl>
NNTP-Posting-Host: 83.18.189.42
Mime-Version: 1.0
X-Trace: nemesis.news.tpi.pl 1195570425 21070 83.18.189.42 (20 Nov 2007 14:53:45 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Tue, 20 Nov 2007 14:53:45 +0000 (UTC)
User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050322)
X-Accept-Language: en-us, en
In-Reply-To: <fhfi9l$640$1@news.vectranet.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit