Article View: pl.comp.objects
Article #15314Re: Jeszcze o C++ templates i ich zwiazku z ....
From: rwt
Date: Mon, 04 Sep 2006 16:36
Date: Mon, 04 Sep 2006 16:36
65 lines
3619 bytes
3619 bytes
Odpowiedź do listu Wielce Szanownej Pani / Szanownego Pana ‹Seweryn
Habdank-Wojewódzki›. Wysłannik wyższej inteligencji tako rzecze :):
> Tutaj właśnie pojawia się siła szablonów i programowania z ich użyciem.
> Kiedy w kodzie NIE zostanie użyta żadna funkcja foo to kiedy zaincludujemy
> pierwszy.hpp to i tak kod zostanie wyposażony w te funkje foo. W sytuacji
> kiedy zaincludujemy drugi.hpp to kompilator nie stworzy, żadnej
> konkretyzacji tej funkcji, a tatem kod ich nie będzie zawierał, przez co
> będzie lżejszy. Teraz proszę sobie wyobrazić ogólną bibliotekę, która
> została przygotowana pod kątem wielu różnych typów i klasycznie napisany
> kod będzie zawierał wszystkie metody, które zostały zaincludowane, a
> szablonowy kod, będzie zawierał TYLKO takie które "mają pokrycie" w kodzie
> programu - to sprawdza kompilator a nie programista, i kompilator
> wyoptymalizuje kod tak, aby był zgrabny i nie zawierał niepotrzebnego
> narzutu.
Czy nie jest tak, że trzeba posiadać tyle programów, że ich suma będzie
używać absolutnie każdej funkcji z biblioteki standardowej, więc
integracja (inline) funkcji standardowych w jednym programie (jeśli nie
są to małe funkcje, składające się z kilku instrukcji maszynowych)
prowadzi do zwiększenia sumarycznego rozmiaru oprogramowania?
> Autor publikacji jest nie objektywny, bo porównuje np.
>
> int myCleverFunction() {
> return 4;
> }
>
> is just a regular function, but
>
> template <int N>
> int myCleverFunction() {
> return N;
> }
>
> Porównywanie takiego kodu jest złe ponieważ obie funkcje są diametralnie
> różne, a to z prostej przyczyny, że gdyby chciał mieć wiele np. 30, 50, 100
> funkcji myCleverFunction, to musiałby je sam wygenerować - dowolnie wybraną
> przez siebie słudszną metodą, począwszy od pisania ręcznego, skońszywszy na
> mało sprytnych generatorach kodu. Natomiast szablon sam to za niego
static int N = 4;
int po_co_mi_ta_stala_w_funkcji( int n )
{
return n;
}
> Autor pisze o różnych kostrukcjach typu: fun h(a,b) = g(f(a,b)) szkoda, że
> nie napisał kodu w C++, którym takie złożenia sią robi, jakby przeczytał
> opis biblioteki standardowej to rozumiałby, że da się to zrobić bardzo
> efektywnie (przykład już podawałem w innym wątku).
Faktycznie– w C++ występuje efekt przenoszenia wyniku w strumieniu,
czyli typowo przy użyciu operatora przypisania bądź ‚<<’, tak samo jak w
uniksowych potokach. Czy o to chodziło? Lecz to tylko jednowymiarowa
liniowość a nie obiektowość.
Wasz
--
: qo |) =@=N%_g=v=a=g_ed_e=c()=d=8= %IGn@8're: w8in ad
: _x/ , H'%'a'h4'HA.XO'Xo'xo'xO.R %expo1ited: *-1 teh
: | ng __%-- __ -- __ -- __ -- __%/by$qVerCo: &GooMee
^.__ -- __ -- %yahoo.com group: opRWTng%/^v^'^ww^v^;_<E-O-F>
Technical Details
Message-ID:
<edhkn8$f5r$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<0elmf2h54pl11i82jrlrjeifeaue4np2i6@4ax.com> <edh580$bsi$1@tkdami.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: rwt <ratwithouttail@gazeta.pl> Newsgroups: pl.comp.objects Subject: Re: Jeszcze o C++ templates i ich zwiazku z .... Date: Mon, 04 Sep 2006 18:36:56 +0200 Organization: opRWTng Lines: 65 Message-ID: <edhkn8$f5r$1@inews.gazeta.pl> References: <0elmf2h54pl11i82jrlrjeifeaue4np2i6@4ax.com> <edh580$bsi$1@tkdami.pl> NNTP-Posting-Host: os-solna.bochnia.pl Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1157387816 15547 82.160.2.94 (4 Sep 2006 16:36:56 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Mon, 4 Sep 2006 16:36:56 +0000 (UTC) X-User: ratwithouttail Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit