Article View: pl.comp.lang.c
Article #267701Re: Ciemna strona C++
From: Sebastian Kaliszewski
Date: Wed, 21 Nov 2007 17:27
Date: Wed, 21 Nov 2007 17:27
69 lines
4062 bytes
4062 bytes
Seweryn Habdank-Wojewódzki wrote: >>>Ale wracając do zadania, w innym miejscu tego wątku podałem rozwiązanie >>>tego zadania utrzymując konwencję tablic i całego ich spadku. >> >>W dobrym języku problemu po prostu nie ma. Bo tablica to tablica a >>wskaźnik to wskaźnik > > Nie kapuję. Narazie obserwuję, że języki generalnie chowają to wszystko do > jednego wora jedni mówią o referencjach (mając na myśli wskaźniki) inni o > magii (mając na myśli wskaźniki). Tablice, cóż działają jak jak kontenery > wysokiego rzędu, albo zgoła w takich językach nie ma tablic. Bo tablica jest kontenerem, typem złożonym. Wskaźnik nie. Tak masz w Adzie, Javie, Pascalu, C# itd. >>>Już nie ma żadnych problemów, a Pana F. nadal uważam za dywersanta i >>>mąciwodę. >> >>Bo wytyka oczywistę błedy projektu języka :) > > Błędy może są oczywiste (dla mnie nie), ale to co jest dla mnie oczywiste, > to bardzo dziwna konstrukcja przykładów, daleko odbiegająca od standardów > pisania programów w C++. Tymbardziej, że jak widzisz np. dołożenie jednej > linii do przykładu na slajdzie 47 leczy go całkowicie. Leczy z czego? To jest przykłąd pułapki języka. MAsz dwie funkcje pisane przez niezalężnych proigramistów, w różnych modułach. Jedna oczekuje na polimorficzny wskaźnik do obiektu, inna na tablicę -- połączenie jednego z drugim do UBecja. > A błąd wynika, z > faktu, że statycznie Pan F. przekazuje tablicę obiektów foo, Nie. > a pobiera > wskaźnik do obiektów bar -- tam wykonuje ordynarne rzutowanie. Nie wykonuje żadnego rzutowania. W C++ do zwykłej funkcji *nie można* przekazać tablicy. Statycznie przekazuje wskaźnik i to jest tego efekt. > Tymbardziej, > że po dodaniu szablonowego parametru program działa poprawnie, czyli > kompilator dobrze wie jakiego typu jest przekazywana tablica. Wie tylko czasem. Ren trick z szablonem ma jedną zasadniczą wadę -- można przekazać tylko i wyłącznie tablicę której rozmiar jest znany (co C++ stara się maksymalnie utrudnić) i dla każdego rozmiaru tablicy jest osobna instancja szablonu (czyli niesamowite marnotrastwo). Czyli to jest mało użyteczny trick. > Jednak > pomimo, że kompilator to wie, Pan F. wymusza rzutowanie, to jest błąd Pana > F. Język pomyślany jest tak, żeby w większości praktycznych sytuacji kompilator nie wiedział. > W żadnym języku z mi znanych takie coś nie przechodzi. Jakto? Przechodzi w C i w C++. [...] pzdr \SK
Technical Details
Message-ID:
<fi1ot2$24s$1@bozon2.softax.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.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> <fh206f$2d6$1@news.supermedia.pl> <fh2ma2$rd0$1@news.vectranet.pl> <fh2po8$d0c$1@news.dialog.net.pl> <fh9v4k$mss$2@bozon2.softax.pl> <fhaest$9or$1@news.vectranet.pl> <fheq5d$iot$1@bozon2.softax.pl> <fhhfae$bj$1@news.vectranet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.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: Wed, 21 Nov 2007 18:27:47 +0100 Organization: Softax news server Lines: 69 Message-ID: <fi1ot2$24s$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> <fh206f$2d6$1@news.supermedia.pl> <fh2ma2$rd0$1@news.vectranet.pl> <fh2po8$d0c$1@news.dialog.net.pl> <fh9v4k$mss$2@bozon2.softax.pl> <fhaest$9or$1@news.vectranet.pl> <fheq5d$iot$1@bozon2.softax.pl> <fhhfae$bj$1@news.vectranet.pl> NNTP-Posting-Host: 83.18.189.42 Mime-Version: 1.0 X-Trace: nemesis.news.tpi.pl 1195666185 3103 83.18.189.42 (21 Nov 2007 17:29:45 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Wed, 21 Nov 2007 17:29:45 +0000 (UTC) User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050322) X-Accept-Language: en-us, en In-Reply-To: <fhhfae$bj$1@news.vectranet.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit