Wpis z mikrobloga

Object Oriented Programming is an expensive disaster which must end

I run into this when I go to a job interview. It does not matter if I interview for a Ruby job, or a Java job, or a PHP job, the job interviewers ask me if I know what OOP is. They ask me to define “encapsulation” and “polymorphic dispatch”. These are standard questions, to which I am expected to give the standard answers. And when they ask me “What are the benefits of OOP?” I find myself wanting to give an awkwardly long answer, which consists “These are the 12 things that are supposed to be the benefits of OOP, but really OOP has no unique strengths.” And so I am writing this essay, and in the future, when I’m asked questions like this at a job interview, I’ll simply directly people to what I have written here.

#interfacesmieci
#java #csharp #ruby #php #scala

Postanowilem porzucic rakotworze tagi programowanie i informatyka na rzecz innych, mniejszych, bardziej specyficznych tagow.

Drugi podobny artykul - Programming without objects
  • 31
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@interface: takie ranty purystow sa bardzo interesujace, ale jednak w zdecydowanej wiekszosci przypadkow to biznes weryfikuje slusznosc danych rozwiazan. najdynamiczniej bedzie sie rozwijac ta dziedzina, gdzie jest kasa, a tutaj akurat wiadomo, co przoduje ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@paziu: pytanie jak bardzo jest cos sluszne, bo zostalo zaadoptowane przez biznesy. Mamy dluga historie rozwoju web, zaczynajac od perla5 i cgi-bin, ktory potem zastapiony byl przez php, php przez jave, teraz c# wypiera jave, w ciagu kilku lat c# bedzie zastepowany przez cos innego, na horyzoncie jest elixir, scala i go, zmierzamy w coraz mniej OOP kierunku. Slusznosc akceptacji rozwiazan jest tez dyktowana przez dostepnosc programow danych technologii na
  • Odpowiedz
@interface: ja wcale nie twierdze, ze rynek zawsze wybiera sluszne rozwiazania. tylko w programowaniu na 1 artyste przypada 10 rzemieslnikow (DZD, ale chyba wiadomo, o co chodzi) i to w znacznym stopniu determinuje rozwoj technologii. rzemieslnikow (czyli rowniez mnie) za specjalnie nie interesuje, co podoba sie Torvaldsowi, DHH czy innemu autorytetowi, oni maja za zadanie efektywnie dostarczyc produkt. done is better than perfect.

nie umniejszam wartosci tym dyskusjom, bo prezentuja
  • Odpowiedz
trzeba być przegrywem żeby pisać (coś większego; ew z wyjątkiem kernela)


@safehouse:

A number of companies are using Elixir in production, including Discord, Puppet Labs, FarmBot, and Bleacher Report. Many other projects are built with Erlang, including WhatsApp, Facebook’s chat service, Amazon’s CloudFront CDN, Incapsula, Heroku’s routing and logging layers, CouchDB, Riak, RabbitMQ, and about half of the world’s phone systems. src
  • Odpowiedz
@interface: Tylko powodzenia napisać cokolwiek w pełni wydajnego co jednak wymaga masy operacji, nie wyobrażam sobie gigantycznego serwisu, a tym bardziej jakiejś gierki w samymi immutable, czy bez większości tego co oferuje OO, już wolałbym użyć języka strukturalnego niż funkcyjnego w takim wypadku :D Ciągle zmiany danych zwyczajnie zabiłby wydajność tam gdzie ona jest potrzebna. Immutable jest fajne, ale nie wszędzie, przecież nie będę tworzył nowej mapy gry za każdym
  • Odpowiedz
@GotoFinal: ej ej ale java i cshap ostro skrecaja w stronie immutable-only! To nie od javy8 Date stalo sie ummutable? A niedlugo maja zniknac int, float i double na rzecz Integer, Double, Float?

http://stabyourself.net/mari0/

No i te języki funkcjonalne są dla mnie strasznie niewygodne, kod wygląda trochę jak w brainfuck, zamiast zmienie sobię klawiaturę by mieć na środku same nawiasy i symbole, a literki dam sobie gdzieś z boku pod
  • Odpowiedz
@interface: gdzieś ty takie bzdury wyczytał że mają zniknąć prymitywy? przecież to by zabiło język, czytałem tylko o planach pozbycia się różnić w pisaniu int/Integer na rzecz tego że kompilator sam to ogarnie, ale... nie ogarnie wszystkiego, w końcu też jest Integer[]/int[] różnica w wydajności jest ogromna, to czuć w nawet mniejszych rzeczach, no i różnica w działaniu, w końcu masz nulle zamiast 0.
A ten link to brawo, wielka gra... no sorry, ale coś takiego to możesz napisać używając najgorszej dostępnej technologii i dalej będzie śmigać.

Immutable jest fajne, i pomaga, ale są miejsca gdzie potrzeba jednak wydajności, a przecież nie będę kopiował listy 400 elementów po 100 razy na sekundę, czy nie będę tworzył od nowa array z 60k elementami.
Czasem w javie nawet trzeba iść na takie dziwne kompromisy, ostatnio widziałem w innym projekcie ciekawą zmianę... zamiast interfejsu i 2 klas, ~Location, MutableLocation, ImmutableLocation, zrobili 2 klasy: MutableLocation z nie-finalnymi polami, i ImmutableLocation rozszerzające MutableLocation o settery.
Różnica? wszelkie operacje na Location wykonują się 2x szybciej, bo gettery nie są już wirtualne, a kiedy 20 razy na sekundę musisz przetwarzać jakieś 100 000 takich obiektów, to różnica
  • Odpowiedz
FB jest/byl w PHP i co z tego, PHP to i tak gowno.


@safehouse: PHP jest szybki, bezpieczny i ma ogromną społeczność. Właściwie nie ma żadnej konkurencji jeśli chodzi o webdev. Jest to najszybszy język skryptowy i jednocześnie jeden z najmniejszym progiem wejścia. A popularne strony które nie są napisane w PHP zwykle mają backend w językach które nie są typowe dla webdevu typu C++. No jest też i Scala
  • Odpowiedz