-
X-Received: by 10.140.37.161 with SMTP id r30mr264qgr.38.1392803915437; Wed, 19 Feb
2014 01:58:35 -0800 (PST)
X-Received: by 10.140.37.161 with SMTP id r30mr264qgr.38.1392803915437; Wed, 19 Feb
2014 01:58:35 -0800 (PST)
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!goblin1!goblin.stu.neva.ru!c10no30967375igq.0!news-out.google.com!s3ni
24178qas.0!nntp.google.com!k15no24049182qaq.0!postnews.google.com!glegroupsg200
0goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Wed, 19 Feb 2014 01:58:35 -0800 (PST)
In-Reply-To: <4...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=89.67.189.218;
posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 89.67.189.218
References: <ldaa9r$3j5$1@speranza.aioe.org>
<9...@g...com>
<52fccceb$0$2362$65785112@news.neostrada.pl>
<6...@g...com>
<52fceef0$0$2140$65785112@news.neostrada.pl>
<1...@g...com>
<ldv7fu$3vq$1@dont-email.me>
<6...@g...com>
<a...@g...com>
<ldvj3g$28c$1@dont-email.me>
<6...@g...com>
<ldvqkt$bnu$1@dont-email.me>
<4...@g...com>
<c...@g...com>
<2...@g...com>
<d...@g...com>
<e...@g...com>
<le0d01$46k$1@dont-email.me>
<b...@g...com>
<le1kk8$flv$1@dont-email.me>
<4...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b...@g...com>
Subject: Re: David West: OOP is Dead
From: g...@g...com
Injection-Date: Wed, 19 Feb 2014 09:58:35 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:205199
[ ukryj nagłówki ]W dniu środa, 19 lutego 2014 09:41:57 UTC+1 użytkownik firr napisał:
>
> wydaje mi sie ze mozliwosci scislej przedmiotowej
> i konkretnej rozmowy sie tu mw wyczerpaly a w gadanie
> na poziomie bajek o pikselach i prostokatach i 11
> klientach z kapadocji jest troche nie dla mnie
>
> rozumiem tez ze nie jestes nieststy rzecznikiem
> opu tak ze nie umialbys odpowiedziec na moja pytania
> ktore ew komus kto by za takiegop rzecznika mogl robic
> moglbym jeszcze zadac, a brzmialyby one tak:
>
> jak rozumiem sensem tego sposobu pisania jest
> wytworzenie w programie siatki obiektów które
> wzajemnie widza sie poprzez poustawiane jako
> swoje pola referencje, TAK CZY NIE?
>
> jezeli nie to o co chodzi jesli nie o to a jezeli
> tak, to jak rzecznik opu ustosunkowywuje sie do tego
> ze oprócz takiego wypracowanego w koncu grafu
> objektów (który moglbym zrozumiec) w takim oopie
> funkcjonuje (chyba na zasadzie wysypiska na smieci)
> drugi poziom gdzie dane obiekty nie sa zawieszone w
> czystej prózni ale poosadzane w roznych zakamarkach
> kodu i jeszcze do tego ich setup i konfiguracja
> jest tez nieczysto uwikłany w cały code-flow
>
> innymi slowy czy ta zewnetrzna warstwa opu stanwi
> dla wyznawcow opu jakas atrakcje sama w sobie
> (gdzie upatruja jakichs mozliwosci robienia czegos
> ciekawego) czy jest tylko odrzutem potrzebnym do
> ustawienia grafu obiektów?
>
> moze zapytam o to na innym forum - choc nie interesuje
> mnie to szczerze mowiac za bardzo
>
> jako ze to nie jest moja działka, moglbym sie
> dowiadywac tylko z ciekawosci jak ci zwolennicy opu
> to widzą
>
> albo moze uzytkownik gode by umial na to odpowiedziec?
> (o ile uzywa opu bo juz
> nie pamietam) - jesli rozumie co mam na mysli
> piszac o wewnetrznej i zewnetrznej stronie opu
Nie jestem pewien, czy rozumiem. Ale wydaje mi sie, ze
celem OOP jest przede wszystkim podzial oprogramowania
na komponenty, z ktorych kazdy posiada okreslone
kompetencje. Ten podzial manifestuje sie zarowno w kodzie
zrodlowym (w jezykach wspierajacych obiekty poprzez
uzycie klas albo prototypow), jak i w samej analizie,
tj. sposobie myslenia o problemie.
W kontekscie OOP czesto mowi sie o "polimorfizmie",
"hermetyzacji (=enkapsulacji)" i "dziedziczeniu".
Zaczne od ostatniego pojecia, gdyz wydaje mi sie
najbardziej uzyteczne. Idzie o to, ze tak jak klasy
odpowiadaja pojeciom, a obiekty -- bytom, stwierdzenie
"X dziedziczy po Y" mozna rozumiec jako taksonomiczne
"X jest rodzajem Y". (W kontrascie do dziedziczenia
mowi sie tez o agregacji, gdy w definicji klasy
wystepuje pole majace przechowywac obiekt innej
klasy; taka sytuacja partonomicznemu "Y sklada sie
[m.in.] z X")
Moim zdaniem dobrze jest moc wyrazac te relacje w jezyku.
Jezeli idzie o pojecia hermetyzacji i polimorfizmu,
to sa one ze soba zwiazane. Hermetyzacja to idea, ze
szczegoly implementacyjne zwiazane z jakims zagadnieniem
ukrywa sie za publicznym, dobrze okreslonym interfejsem.
Polimorfizm zas, to taki pomysl, ze jezeli mamy rozne
klasy, ktore implementuja ten sam interfejs, to mozna
ich uzywac w takim samym kontekscie (sa ze soba zastepowalne
-- moze nie w sensie funkcjonalnosci, ale w sensie mozliwego
uzycia)
I co do tych kwestii, to mam juz nieco wiecej zastrzezen.
Po pierwsze, idea hermetyzacji moze byc odebrana jako
komunikat do programisty: "masz tylko zaimplementowac
taki-a-taki interfejs. Jezeli masz przy tym smietnik
w swoim kodzie, nie interesuje nas to". Czyli sama hermetyzacja
nie jest wytyczna dotyczaca tego, jak nalezy pisac kod.
Po drugie, czasem bywa tak, ze koniecznosc zastosowania
wymienionych tu mechanizmow obiektowych wynika stad, ze
tworca programu nie udostepnia swojego kodu zrodlowego.
W tej sytuacji, zeby dalo sie w ogole z systemem
wspolpracowac, rzeczywiscie podstawa sa dobrze zaprojektowane
interfejsy, ale w wielu wypadkach cena jest taka, ze
system jest duzo bardziej zlozony, niz moglby byc.
(A i tak zawsze bedzie mniej elastyczny niz wowczas,
gdy po prostu udostepni sie dobrze napisany kod zrodlowy
-- bo jego elastycznosc bedzie tylko tak duza, na ile
pozwolila wyobraznia jego tworcow)
Wydaje mi sie, ze jezeli chce sie stworzyc system bazujacy
na jakiejs persystencji, to stosowanie analizy obiektowej
jest jak najlepszym pomyslem. Jednak jezeli tylko mozna
unikac stanow mutowalnych (przypisan, zmiany wartosci
zmiennych -- you name it), to najlepiej pisac jak najwieksze
polacie systemu czysto funkcyjnie, bo taki kod jest duzo
prostszy w analizie, bo analizujac jego przebieg, nie trzeba
zapamietywac wartosci zmiennych.
(Mozna tez sie spotkac w srodowiskach funkcyjnych z bardziej
radykalnymi pomyslami. Programisci Haskella, a zdaje sie, ze
rowniez autorzy ksiazki o programowaniu gier w Rackecie
"How to design worlds" prezentuja takie podejscie, ze sercem
projektu gry powinna byc "czysta" funkcja, ktora pobiera biezacy
stan swiata + sterowanie, i zwraca nowy stan swiata. Ciekawy
wydaje sie tez pomysl "functional reactive programming", ale
przyznam, ze jeszcze w calosci go nie zglebilem)
Tak by wygladal mniej wiecej moj poglad na te kwestie.
Inna rzecz, ze programisci czy projektanci OOP stosuja
rozne wynalazki, ktorych nigdy nie rozumialem, albo ktore
wydawaly mi sie zawsze niepotrzebnym komplikowaniem prostych
rzeczy (jak np. schematy UML czy tzw. "wzorce projektowe").
Następne wpisy z tego wątku
- 19.02.14 11:30 firr
- 19.02.14 12:01 firr
- 19.02.14 14:32 firr
- 19.02.14 15:51 A.L.
- 19.02.14 16:10 A.L.
- 19.02.14 18:26 g...@g...com
- 19.02.14 20:20 A.L.
- 20.02.14 04:19 A.L.
- 20.02.14 04:27 A.L.
- 20.02.14 04:30 A.L.
- 20.02.14 07:42 toslaw
- 20.02.14 07:58 g...@g...com
- 20.02.14 08:27 g...@g...com
- 20.02.14 10:27 g...@g...com
- 20.02.14 10:30 firr
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2024-12-21 Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 2024-12-21 Ideologia Geniuszy-Mocarzy dostępna na nowej s. WWW energokod.pl
- 2024-12-21 ciekawy układ magnetofonu
- 2024-12-21 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2024-12-21 Warszawa => Java Developer <=
- 2024-12-21 Zalesie Borowe => Medical Equipment Service Engineer <=
- 2024-12-21 Żerniki => Specjalista ds. Employer Brandingu <=
- 2024-12-21 jak tacy debile
- 2024-12-20 Precedensy politycznie motywowanego nie wydawania w UE
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-20 czyste powietrze
- 2024-12-20 Katowice => Analyst in the Trade Development department (experience wi