Obiektowy szowinizm

2008-08-08 22:00

Od jakiegoś czasu najpopularniejszymi językami programowania są albo te stricte obiektowe, albo chociaż oferujące przynajmniej najważniejsze cechy tego modelu programowania (czyli dziedziczenie, polimorfizm i metody wirtualne). Prawdopodobnie większość powstającego kodu realizuje więc założenia OOP-u co najmniej w takim stopniu, że można go uznać za spełniający paradygmat obiektowy – albo chociaż podpadający pod obiektowość bardziej niż pod cokolwiek innego.
Ano właśnie: warto od czasu do czasu zauważyć, że oprócz OOP-u istnieje też “coś innego”, i że obiektowy model programowania wcale nie jest jedynym. Nie musi być on też ani ostatecznym, ani najbardziej uniwersalnym. A już tym bardziej nie jest on jedynie słusznym.

Jako koderzy podążający za wytycznymi programowania obiektowego często jednak tak uważamy – mniej lub bardziej świadomie. Zwłaszcza, że obecnie można zajmować się programowaniem całkiem długo i nawet nie słyszeć o innych paradygmatach niż obiektowy. A jeśli nawet ktoś na podobne “ciekawostki” lub na “dziwaków” opowiadających się na innym podejściem do kodowania, to najpewniej nie będzie to miało żadnego wpływu na jego dobre samopoczucie i przekonanie o wyższości OOP-u nad czymkolwiek innym.
Bo przecież łatwo znaleźć programistów myślących bardzo podobnie i bez wysiłku wyciągnąć całe mnóstwo silnych argumentów na poparcie swoich racji. Bodaj najczęściej wykorzystywanym jest ten mówiący o odpowiednim poziomie abstrakcji, który jest jakoby immanentną cechą programowania obiektowego. Z jednej strony jest on bowiem wyższy od brzydkiego programowania strukturalnego, dzięki czemu kod obiektowy łatwiej jest napisać i zrozumieć. Jednocześnie nie jest to też poziom zbyt wysoki, przez co nadal wiadomo, jak nasz program działa i jak z grubsza sprawuje się pod względem wydajnościowym. Tego samego nie można rzecz jasna powiedzieć wtedy, gdy kodujemy funkcyjnie czy deklaratywnie.

Wszystko to brzmi rozsądnie i wydaje się słuszne. W rzeczywistości jednak posługiwanie się takimi kryteriami jest zwykłym nadużyciem. Na takiej zasadzie można by narzekać na to, że nie da się przygotować omletu przy pomocy samego widelca (że pozwolę sobie posłużyć się analogią kulinarną ;]). Należy bowiem zawsze mieć na uwadze to, o jakim zastosowaniu mówimy. Programowanie nie jest przecież dziedziną abstrakcyjną, ale jak najbardziej praktyczną, niezależnie od tego, jak bardzo usiłowalibyśmy ją steoretyzować.
Dlatego też absurdem jest twierdzenie o wyższości programowania obiektowego nad innymi paradygmatami. Bo czy bawilibyśmy się w tworzenie klas w przypadku takiego oprogramowania jak firmware procesora czy karty graficznej, działającego w ścisłym powiązaniu ze sprzętem? I czy odpowiadałoby nam, gdyby zamiast określania za pomocą znaczników wyglądu fragmentów strony WWW bylibyśmy zmuszeni tworzyć dla każdego z nich osobny obiekt i ustawiać jego właściwości?…

Nie zamykajmy się więc w swoim obiektowym światku, nawet jeśli czujemy się w nim nadzwyczaj dobrze. Znajomość innych sposobów kodowania może nam bowiem tylko pomóc.

Tags: ,
Author: Xion, posted under Programming, Thoughts »


4 comments for post “Obiektowy szowinizm”.
  1. stały czytelnik:
    August 8th, 2008 o 23:14

    Świetny tekst, jak najbardziej popieram. Szkoda tylko, ze obecnie wszędzie na siłe stara się wciskać obiekty. Ja na przykład lubię relacyjne bazy danych, które sprawdziły się na rynku a od ich przeciwników słyszę tylko jeden argument – są do kitu, bo nieobiektowe. Ręce opadają.

    Pozdrawiam i oby więcej tego typu przemyśleń na Twoim blogu.

  2. polymorph:
    August 8th, 2008 o 23:57

    Jasne że nie można z OOP robić rozwiązania na wszystkie problemy w stylu głodu na świecie czy lekarstwa na raka ale można śmiało powiedzieć że w większości rozwiązań programowanie obiektowe jest najlepszym wyborem.

    A jeśli chodzi o znaczniki html to to był akurat wybitnie nietrafiony argument, bo znaczniki do opisywania stron są używane tylko z powodów historycznych i jak by ktoś stworzył coś nowego na tym polu (i nie mówię tu o żadnych półśrodkach typu java czy php a o całkiem nowym protokole) to wszyscy rzucili by się na to z krzykiem hura na ustach. I tak, uważam że i w tym przypadku OOP mogło by być dobrym rozwiązaniem.

  3. spaxio:
    August 9th, 2008 o 18:40

    Ja od dawna staram sie to uswaidomic innym, jednak oni chyba musza to zruzmimiec sami.

  4. Pi:
    August 10th, 2008 o 16:24

    Problem w tym, że niektórzy po prostu nie umieją pisać inaczej niż obiektowo, a większość osób boi się i wypiera tego co nie zna. Ja np. zdurniałbym jak ćma której ktoś gasi światło, gdyby ktoś zlecił mi napisanie ciut bardziej rozbudowanego programu strukturalnie ;) Myślenie ‘obiektami’ jest po prostu łatwe na poziomie projektowania systemu, stąd w 95% słuszne przekonanie o ich wyższości.

Comments are disabled.
 


© 2017 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.