Article View: pl.comp.lang.c
Article #267758Re: Ciemna strona C++
From: Sebastian Kaliszewski
Date: Tue, 20 Nov 2007 14:57
Date: Tue, 20 Nov 2007 14:57
227 lines
10462 bytes
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-mailReferences:
<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