Article View: pl.comp.objects
Article #15327Re: Generyki w Javie [tylko dla ludzi o mocnych nerwach]
From: Sektor van Skijlen
Date: Mon, 04 Sep 2006 20:27
Date: Mon, 04 Sep 2006 20:27
67 lines
4459 bytes
4459 bytes
Dnia Sat, 2 Sep 2006 22:56:02 +0200, Michal Przybylek skrobie: > "Marcin Stefaniak" <matmis@gazeta.SKASUJ-TO.pl> wrote: > > Tak mi się w każdym razie wydaje. > Nie tu chodzi o cos innego. Duzo bardziej fundamentalnego. > Roznica jest duzo bardziej fundamentalna. C++ nie ma parametrycznego > polimorfizmu tylko makrogenerator, ktory niejako przypadkowo okazal sie miec > funkcjonalnosc rownowazna parametrycznemu polimorfizmowi. lol ;) merytoryczne aż do bólu. > W paramatrycznym polimorfizmie istotne jest to, ze mamy _jedna_ dostatecznie > bogata funkcje o porzadnych wlasnosciach. Na tej samej zasadzie można udowadniać, że polimorfizm w programowaniu obiektowym polega na tym, że mamy _jedną_ dostatecznie bogatą klasę o porządnych właściwościach. > W C++ dostajemy "szablon funkcji", z ktorego kompilator moze nam usluznie > wygenerowac konkretna funkcje (ale nie wygeneruje, np. kiedy napisalismy > specjalna wersje z reki). Zawsze mnie bawiło, jak ktoś mówił o "generowaniu funkcji" przez kompilator. > Standardowy parametryczny polimorfizm ma ladna interpretacje kategoryjna > (np. w modelach PER) - jest to faibracja, w ktorej morfizmy sa _pojedynczym_ > zyjatkiem (np. w PER _jedna_ klasa rownowaznosci), nie zas kolekcja zyjatek, > z ktorej wyciagamy to co nam jest potrzebebne po typie. Tłumacząc ten śmieszny bełkot na normalny język: w Javie aby można było zastosować dany typ jako parametr wzorca, to musi mieć on na starcie odpowiednie właściwości gwarantowane (jeśli są wykorzystywane; przykład z List<String> jest przykładem, gdzie akurat nie są wykorzystywane, poza samym faktem, że String musi być typem klasowym). Nawiasem mówiąc, w C++ kiedyś też tak było (z tą tylko różnicą, że nie można nadawać tych gwarancji przez deklarację koncepcji). Ja tam na upartego dopatrywałbym się wspólnego źródła generyków Javy i wzorców w C++, ale dalej te języki wybrały inne drogi. Można dyskutować o tym, jakie są odpowiednie wady i zalety obu rozwiązań. Różnica jest mniej więcej taka, jakby mieć programowanie obiektowe oparte na klasach oraz programowanie obiektowe nie oparte na klasach, tylko każdy obiekt dostaje arbitralnie określony komunikat i ma na niego odpowiedzieć (albo zgłosić błąd). Drugie rozwiązanie jest bardziej generyczne, bo nie wprowadza zależności od definicji klasy. Ale rozwiązanie z klasami jest lepsze pod tym względem, że lepiej porządkuje kod. Oczywiście w implementacji statycznej ten fakt ma znacznie mniejsze znaczenie. Ale z wami przecież nie da się dyskutować inaczej, niż plując na wszystko, co reprezentuje sobą C++, wzbogacając wszechogarniającą - jak to się p. Andrzej Lewandowski raczył wyrazić - amatorszyznę. > > dlaczego dla ludzi o mocnych nerwach? :-) > Nie chce isc do pierdla, kiedy Sektor popelni samobojstwo dowiedziawszy sie > kolejnej straszliwej prawdy... Jasne - gdybym się przejmował takim bełkotem, jak tu powyżej to zaprezentowałeś, to prawdopodobnie nigdy byś nie widział mnie na tej grupie. -- // _ ___ Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl> \\ L_ |/ `| /^\ ,() <ethouris(O)gmail.com> // \_ |\ \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx "I am allergic to Java because programming in Java reminds me casting spells"
Technical Details
Message-ID:
<edi26k$mgc$1@kujawiak.man.lodz.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.man.lodz.pl!not-for-mailReferences:
<edbn1a$80t$1@atlantis.news.tpi.pl> <edcmgq$kip$1@inews.gazeta.pl> <edcq4g$lbv$1@nemesis.news.tpi.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.man.lodz.pl!not-for-mail
From: Sektor van Skijlen <ethouris@guess.if.gmail.com.is.valid.or.invalid>
Newsgroups: pl.comp.objects
Subject: Re: Generyki w Javie [tylko dla ludzi o mocnych nerwach]
Date: Mon, 4 Sep 2006 20:27:00 +0000 (UTC)
Organization: LODMAN - Metropolitan Area Network in LODZ, Poland
Lines: 67
Sender: Michal Malecki <sektor@zly.kis.p.lodz.pl>
Message-ID: <edi26k$mgc$1@kujawiak.man.lodz.pl>
References: <edbn1a$80t$1@atlantis.news.tpi.pl> <edcmgq$kip$1@inews.gazeta.pl> <edcq4g$lbv$1@nemesis.news.tpi.pl>
NNTP-Posting-Host: zly.kis.p.lodz.pl
Mime-Version: 1.0
X-Trace: kujawiak.man.lodz.pl 1157401620 23052 212.191.89.2 (4 Sep 2006 20:27:00 GMT)
X-Complaints-To: abuse@man.lodz.pl
NNTP-Posting-Date: Mon, 4 Sep 2006 20:27:00 +0000 (UTC)
User-Agent: tin/1.6.2-20030910 ("Pabbay") (UNIX) (SunOS/5.9 (sun4u))
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit