Wpis z mikrobloga

Programowanie obiektowe jest jak komunizm.

Miało okazać się rewolucją i ułatwić ludziom życie, a tymczasem jedyne co przyniosło, to cierpienia milionów obywateli i ogromne straty ekonomiczne ( ͡° ͜ʖ ͡°)

#programista15k #pracait #programowanie #informatyka
  • 23
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@enten: przeczytałem ten artykuł ale szczerze było to męczące doświadczenie jak czytanie obiektowego kodu napisanego przez stażystę. Dużo tekstu, mało treści i mało konkretów. Tak naprawdę jedyna słuszna krytyka OOP w tym artykule dotyczy:
- dziedziczenia, rozbudowanych hierarchii klas
- współdzielenia mutowalnego stanu, skomplikowanych grafów obiektów

Jeżeli zlikwidujesz ten pierwszy problem, to dostaniesz język taki jak Go, czyli OOP bez
  • Odpowiedz
https://betterprogramming.pub/object-oriented-programming-the-trillion-dollar-disaster-92a4b666c7c7


@enten: w sumie to przeczytałem tylko kilka pierwszy akapitów. wygląda na to, że gość nie ma pojęcia co mówi i ty też, skoro go popierasz. wcale nie musisz robić miliona abstrakcji, złożonych grafów obiektów, przeogromnych wielopoziomowych hierarchii dziedziczenia i mutowalnych obiektów programując obiektowo. właśnie chodzi o to, żeby tego nie robić i wiedzą to wszyscy od dawna, którzy zajmują się programowaniem zawodowo. no dobra, nie wszyscy, bo zawsze znajdą
  • Odpowiedz
@Moderatoo: ja sobie od czasu do czasu programuję w asemblerze jak i w językach obiektowych wysokiego poziomu dlatego stanowczo stoję na stanowisku, że do każdego zadania należy wybierać właściwe narzędzia, a nie kierować się modą, sympatią czy co gorsza, przyzwyczajeniem ()
  • Odpowiedz
@enten: i tak jak z komunizmem, to co wiekszość języków wspiera to nie jest prawdziwe OO. Prawdziwe OO to komunikacja między obiektami; jak w Erlangu albo Akkce.
  • Odpowiedz
@enten: Nie chce mi się czytać kolejnego ględzenia na OOP, bo po co czytać innych jak się wie lepiej xdd

a wiem lepiej, że:

* zależy z czym się kontrastuje: jak z programowaniem proceduralnym, to OOP ma oczywiste zalety – choćby enkapsulację
* NAJWAŻNIEJSZY aspekt OOP to jest polimorfizm: czyli możliwość podmiany implementacji
* a gadki o przerośnietych hierarchiach klas to są lata 90. Dzisiaj oczywiste jest, że composition over
  • Odpowiedz
NAJWAŻNIEJSZY aspekt OOP to jest polimorfizm: czyli możliwość podmiany implementacji


@MacDada: polimorfizm masz też w funkcyjnym i strukturalnym. Nadużywanie polimorfizmu jest takim samym grzechem jak nadużywanie dziedziczenia.
  • Odpowiedz
@Krolik: nieco inne rodzaje polimorfizmu. zresztą, nawet w obrębie OOP są przecież różnice między językami, a co dopiero paradygmatami.

anyway, wszystko ma zady i walety. mnie OOP bardzo odpowiada, w szczególności właśnie ze względu na polimorfizm (wymaganie zależności przez interface, wstrzykiwanie implementacji).
  • Odpowiedz
@MacDada: wątek jest głównie o OOP w stylu Javy / C#. Polimorfizm czasu wykonania sam w sobie jest użytecznym mechanizmem kiedy używa się go tam gdzie jest faktycznie potrzebny, ale zauważyłem że w większości programów pisanych w językach które mają polimorfizm czasu wykonania jako opcjonalny, jest on wykorzystywany niezmiernie rzadko. W 90% przypadków tam gdzie ludzie używają polimorfizmu w Javie lepszy byłby pattern matching i switch lub polimorfizm statyczny (którego
  • Odpowiedz
W 90% przypadków tam gdzie ludzie używają polimorfizmu w Javie lepszy byłby pattern matching i switch


@Krolik: Nie no, trochę mieszasz przyczynę ze skutkiem.

Polimorfizm ma właśnie zastąpić stado IFów/switchów. Czyli jest dobry tam wtedy gdy zestaw danych zmienia się rzadko, za to algorytmy zmieniają się często. Oczywiście „rzadko” i „często” w cudzysłowie -> bardziej chodzi o „podatność na zmiany” czy też po prostu liczbę
  • Odpowiedz