"Marcin Stefaniak" <mat@gazeta.SKASUJ-TO.plwrote: 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. W paramatrycznym polimorfizmie istotne jest to, ze mamy _jedna_ dostatecznie bogata funkcje o porzadnych wlasnosciach. W C++ dostajemy "szablon funkcji", z ktorego kompilator moze nam usluznie wygenerowac konkretna funkcje (ale nie wygeneruje, np. kiedy napisalismy specjalna wersje z reki). 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. dlaczego dla ludzi o mocnych nerwach? :-)
Nie chce isc do pierdla, kiedy Sektor popelni samobojstwo dowiedziawszy sie kolejnej straszliwej prawdy...
mp
"Sektor van Skijlen" <ethou@guess.if.gmail.com.is.valid.or.invalid wrote: | 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.
Przeciez dalej to uzasadniam. To co jest w C++ to _nie_ jest polimorfizm parametryczny (a przynajmniej ja nie potrafie tego interpretowac jak polimorfizmu parametrycznego). Tylko jeszcze raz uwazaj. Ja nie wartosciuje tutaj szablonow z C++. To Ty jestes uprzejmy odbierac w bledny sposob to co pisze i zwiazywac podawane fakty z krytyka C++ (choc moim zdaniem sluszna, ale ten aspekt mnie kompletnie tutaj nie interesuje). | 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.
Przeciez dalej to uzasadnilem. To nie w ogole nie jest dowod czegokolwiek. Ja uzywam potocznego jezyka, ale tylko jako plaszczyka dla pewnych matematycznych pojec. W szczegolnosci, kiedy pisze to powyzsze mam w glowie dobry model (a raczej klase modeli) pewnego rodzaju polimorficznego rachunku lambda. | 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. Oczywiscie, ja sie nieslusznie odwoluje do implementacji jezyka. Ale tylko dlatego, ze jest to w tym przypadku dobrym zrozumieniem semantyki (ktorej "z reki" formalnie nie jestem w stanie podac ; sorry, semantyka szablonow z C++ jest mocno niestandardowa). | 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
Przeciez gdybys zadal sobie choc odrobine trudu, szybko bys odgadl, ze na pewno powyzszy fragment nie jest akurat o tym. A odgadl bys z tad, ze problem o ktorym piszesz wczesniej podniosl Marcin Stefaniak (to, ze w Javie mamy (F)bounded pp) i ja wlasnie na ten post odpowiadalem, ze moim zdaniem problem lezy duzo nizej. mp
zanotowane.pldoc.pisz.plpdf.pisz.plwpserwis.htw.pl
|