🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Ciemna strona C++

#267701
From: Sebastian Kaliszewski
Date: Wed, 21 Nov 2007 17:27
69 lines
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-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> <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