Article View: pl.comp.lang.c
Article #267655Re: Ciemna strona C++
From: Seweryn Habdank-Wojewódzki
Date: Wed, 07 Nov 2007 21:50
Date: Wed, 07 Nov 2007 21:50
139 lines
7296 bytes
7296 bytes
Witam
Seweryn Habdank-Wojewódzki wrote:
> 11 -- pozostawię bez komentarza, bo Pan Felix poprosił się o kłopoty, a
> kompilator wykonuje o co go poproszono. Skąd niby kompilator ma wiedzieć
> sam od siebie, że ktoś ma lub nie podstawy do tworzenia tak bardzo
> zagnieżdżającego się szablonu? Pomijam fakt, że to jest problem
> kompilatora, a nie języka. Ciekawy jestem, czy Panu Felixowi wpadł do
> głowy pomysł, że pętla typu int i = 0; while(1) { x = new Type[i]; ++i } w
> dowolnym języku tak samo pośle do piachu program, tudzież jej wersja
> rekurencyjna.
void foo (int & i)
{
++i;
x = new Type[i];
foo (i);
}
W każdym języku takie będzie kłopotem.
13 -- jakiś obłęd, co on chce pokazać?
14 -- pierwszy faktycznie jest problematyczny. Drugi, już był o tym flame.
auto_ptr, już nie raz potrzebowałem tego wskaźnika w takiej wersji jakiej on
jest, czyli aby "szkodliwe" przenoszenie referencji zadziałało tak jak
działa w auto_ptr. Jak mu auto_ptr szkodzi, niech go nie używa.
Co on chce od iteratora, w innym wątku kiedyś pokazałem jak wzbogacić
iterator, aby wiedział o obiekcie, ale Pan Felix w swojej "sprawności"
kodowania przykładzików nie wpadł na pomysł jak dociążyć iterator.
Uwaga o at i [] jest nie uzupełniona o informację o wydajności at i [].
Informacja o nie możności wołania z konstruktora wirtualnych metod jest dla
mnie dziwna, bo nie widzę projektowych podstaw aby wykonywać taką sztuczkę,
ale może Pan Felix jest arcy designerem i miał coś konkretnego na myśli.
16 -- wymieszał konstruktory i destruktory oraz ich kłopoty w jednym
tygielku, ten slajd jest do poprawy, bo tylko miesza.
17 -- był już flame.
18 -- jak dla mnie to jest specyfikacja auto_ptr, a nie wykazywanie wad. Jak
mu nie pasuje niech używa shared, scoped, czy innych. Podkreślę jeszcze raz
te "wady" w jednym projekcie u mnie są zaletami, bo stosowne wskaźniki są
właśnie przenoszone i jedne nadobiekty oddaja własność drugim nadobiektom,
do swoich podobiektów.
19 -- o czym on mówi? Czy on może chce, aby iterator był dołączony do
obiektu, a może jak obiekt ma 5 MB, to też ma wszystko wiedzieć o
pojedynczym obiekcie? A jak tych obiektów w kolekcji jest dzikie mnóstwo
to, co? Ile informacji potrzebuje mieć iterator, aby wszyscy przestali się
czepiać, że on czegoś nie wie. Jeden powie, że chce wiedzieć czy obiekt się
zmienił, inny, że jest inny typ polimorficzny jeszcze ktoś zarząda, aby
iterator znał rozmiar kontenera, a ostatni zażąda, aby iterator za niego
myślał i pisał programy. Zresztą banalne jest związanie iteratora i
kontenera wrapując oba w jednym obiekcie.
20 -- o co Panu Felixowi chodzi. Po co funkcja at(), jeśli operator[]
robiłby to samo?
21 -- może powinien jeszcze napisać, że w konstruktorze nie może
użyć "this", to byłby komplet życzeń.
22 -- dorzucam, że można zrobić takie coś:
gdzieś w odległym headerze globalnie stworzony zestaw define:
#define private public
#define protected public
#define const
#define volatile
#define class struct
oh, oh, ale podniecenie, ileż to można zrobić złych rzeczy.
23 - 31 -- jak napiszę w innym języku:
baz = foo.bar(3) to też nic nie wiem. Do tego są możliwości, że kod jest tak
napisany, że ta "3" staje się jakąś wartością globalną, czy mam za to
besztać te inne języki?
SPECYFIKACJA i OPIS KLAS jest od tego aby wyjaśnić dokładnie co się dzieje.
32 i 33 -- zapomniał Pan Felix o const, czy to go boli? Czy jeśli żąda
czegoś innego od referencji niż od wartości, to może operować constem.
A może ma jeszcze coś innego na myśli?
34 i 35 -- Super. Język ma być łatwy! Też tak, chce, aby Haskel i Lisp były
łatwe, aby asembler był łatwy. Jakoś jest tak, że język, który oferuje
więcej niż Logo, musi być nieco trudniejszy. Ten Pan ma jakieś kłopoty
chyba z uczeniem się w ogóle, bo takie zarzuty można kierować do każdej
nauki zaczynając od jej wysokości królowej nauk (matematyka) ona to daje
popalić. W szkole dodajemy, mnożymy, dzielenie w słupku jest trudne (?).
Potem coś dalej jakieś gimnazjum , każą potęgować i liczyć pola figur --
toż to przecież jest zamach na łatwość życia, powinny takie rzeczy być już
policzony, a my powinniśmy wysłuchać , że ktoś to policzył. I tak aż do
końca studiów słuchłamy, że ktoś coś zrobił, ale sami trudu nie wkładamy w
naukę. Potem pensyjkę żądamy 6 cyferek (w skali roku). Ale świat jest
brutalny mało znam ludzi którzy całe życie mają podane na tacy. raczej znam
takich co pokonując trud nauki i pracy osiągają stosowne pensje. Wracając
do języków. Proste języki np. Logo, HTML są albo dedykowane i nadają się
świetnie do wąskich zadań, a trudne języki są do zadań szerzej określonych.
36 -- zgada się, tylko co to wnosi?
37 -- 1: bzdura; 2: nie wiem o co chodzi (na czym polega rzeczywisty
kłopot); 3: a specyfikacje funkcji to Pan Felix czytuje?
38 -- mówił, że lubi C, a tam są te same problemy i na dodatek łata się je o
wiele gorzej niż w C++.
39 -- o jaki ten Pan mądry, wpakował kod języka C, do funkcji C++ beż
żadnego opakowania i płacze. To są łatwe do wychwycenia błędy. Znam gorsze
w środowisku wielo wątkowym, które są kłopotliwe nie zależnie od języka.
40 -- no tak, a kto tak projektuje kod nawet w języku C. Co to za zwyczaj,
aby obiekt kasował nie ten co go przydziela?
... męczące jest zastanawianie się ile można brzydkich przykładów podać w
dowolnym języku programowania ... bo w każdym to jest możliwe.
47 -- chłopina rzutuje obiekt foo na bar a potem dziwi się, że "mu to nie
działa". Mi to w ogóle ten kod nie działa, a jak go poprawiłem to mi działa
dobrze.
>> Pomijąc fakt, że to, co napisałeś, niebezpiecznie zbliża się do
>> kwestii Kaowca: "Nie słyszałem piosenki, więc chciałem powiedzieć parę
>> słów na jej temat".
>>
>> Tak wytykam, a i mnie się zdarza 8-)
Masz rację, że wytykasz :-).
Pozdrawiam.
--
|\/\/| Seweryn Habdank-Wojewódzki
\/\/
Technical Details
Message-ID:
<fgtb6j$nur$1@news.vectranet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.vectranet.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>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.vectranet.pl!not-for-mail From: Seweryn Habdank-Wojewódzki <shw_mail@wp.pl> Newsgroups: pl.comp.lang.c Subject: Re: Ciemna strona C++ Date: Wed, 07 Nov 2007 22:50:47 +0100 Organization: VectraNET - http://www.vectranet.pl Lines: 140 Message-ID: <fgtb6j$nur$1@news.vectranet.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> Reply-To: shw_mail@wp.pl NNTP-Posting-Host: 078088193244.osw.vectranet.pl Mime-Version: 1.0 X-Trace: news.vectranet.pl 1194471443 24539 78.88.193.244 (7 Nov 2007 21:37:23 GMT) X-Complaints-To: usenet@news.vectranet.pl NNTP-Posting-Date: Wed, 7 Nov 2007 21:37:23 +0000 (UTC) User-Agent: KNode/0.10.5 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit