pouët.net

OOP Criticism

category: general [glöplog]
Hey guys!

As a web developer, I often found that OOP in web development only adds problems.
However, I am not a strong desktop coder, so I would like to show you a curious website.

http://www.geocities.com/tablizer/oopbad.htm

In my opinion, it offers very strong arguments and I would like to hear comments of more experienced programmers than myself on this.

What do you think?
LOL.
added on the 2009-10-12 15:25:24 by Rob Rob
OOP is not ASM, so it must suck.
added on the 2009-10-12 15:35:42 by kusma kusma
Funny site :)

To me OOP is more about adding a layer to allow some implementation changes while the interface remains the same. Ie forcing interface definition.
The dynamic dispatch thing is solvable in other ways that virtual functions.

AFAIK in functional languages you don't really need OOP, but objects may be still there (ocaml, Scala). So i don't know if OOP is a real need or just a set of good practices having reached success.
added on the 2009-10-12 15:38:48 by ponce ponce
Everyone knows pure functional languages are the future...
added on the 2009-10-12 16:02:56 by xernobyl xernobyl
"Why OOP Reminds Me of Communism" hahahaha
added on the 2009-10-12 16:08:13 by stijn stijn
Or imperative languages with purity and closures.
added on the 2009-10-12 16:09:01 by ponce ponce
I'm waiting for OOP HLSL so that I can support communism by coding shaders.
added on the 2009-10-12 16:13:27 by Rob Rob
Wacky OOP criticism aside, there was an interesting article about alternative paradigm for high performance application http://gamedeveloper.texterity.com/gamedeveloper/200909/?folio=43#pg45

Author disses OOP, but actually presents a viable alternative.
added on the 2009-10-12 16:46:32 by vestige vestige
every so often someone runs into that Geocities-hosted pile of nonsense again :)

i'll skip the interesting article too and retreat to my commie corner.
added on the 2009-10-12 16:52:27 by superplek superplek
OOP digests a number of 40 year old good ideas and fuses the result into a single steaming monolith. Then it adds one unique feature into the heap, causing immensely rich ecosystem around it.
added on the 2009-10-12 17:22:39 by 216 216
superplek: I must say I stumbled upon that site quite some time ago. But since then I am sticking with it and I believe it to be very good reasoning.
Also, your reaction so far is very typical. Calling something nonsense is really of not much help to me. I do not understand why someone would call it nonsense. Are there any other arguments apart from name calling?
The OOP Criticism site offers very well put arguments. I would like to see whether there are any counterarguments.

aizen: This guy also offers a very good alternative - Table Oriented Programming. I personally find this concept very interesting, in fact, to me it is more natural thinking.
Go make a table oriented programmed demo about it and release the source code to demonstrate how awesome it is.
added on the 2009-10-12 17:38:34 by Rob Rob
it's a matter of not wanting to invest my proper reasoning into a problem that will solve itself eventually anyway

(e.g you finding out that said good arguments are largely useless)

go with whatever you like and we'll talk about this in another 2 years.
added on the 2009-10-12 17:44:01 by superplek superplek
oh and i'm not an OO-zealot, might you have gotten that warped idea - like any good programmer i opt for pragmatism

but be a doll, just skip this, and invest your time in development instead, in time it will yield a better understanding than reading articles about pros, cons and alternatives
added on the 2009-10-12 17:46:53 by superplek superplek
hmm... I don't think it really offers any arguments for anything at all.. basically all his long rant rant is saying is, that OOP is not the perfect technology for solving every problem.. which is correct.. if you feel that OOP is not suitable for web development, then don't use OOP; use whatever you like...
hooverphonique: not everyone agrees on that. I actually have most people tell me it is nonsense and that OOP should be used in all applications, you just have to "implement it correctly".

Anyway, the point of this post was to ask experienced programmers to comment on the site's arguments. Perhaps, people are too busy to do that or not interested in the question, but I am not here to defend a position of mine, I am here to ask questions.
you shouldn't listen to people who tell you to *always* do something a certain way, unless they're talking about opening a door or wiping your ass - but even that's debatable

i think you can draw a conclusion based on the posts here *without* somebody having to go through the tedium of debunking that "article"

in Dutch i say to you "niet zo eigenwijs zijn jongen"
added on the 2009-10-12 18:26:22 by superplek superplek
Quote:
i think you can draw a conclusion based on the posts here *without* somebody having to go through the tedium of debunking that "article"


true. but I've made this conclusion out of my own experience already. I am interested in the specifics. I believe that generalizing conclusions in tech fields are not enough - at least for me.

On the other hand, as I said, I understand if nobody is interested in the subject enough to actually spend time discussing it. After all, this is a forum, not technical support.
well i've felt this one pretty fucking well for one

Quote:
Myth: Most things fit nicely into hierarchical taxonomies
that "myth" only becomes a hindrance when you forcefully try to fit everything into a homogenous model

(as with many of those points, they're beyond proper common practice)
added on the 2009-10-12 19:08:32 by superplek superplek
louigi, it's mostly about maintainability and reuse to my experience; grouping pieces of data and the operations that act on them together is no necessity for making something that works, but it sure helps finding stuff back a year later.

If you hack websites together and you're the only coder and you typically add new features and don't fix up old ones, yeah then probably doing a decent OOP design first gives you a lot of extra barriers without getting much back. Then a more procedural approach is probably a lot simpler.

But then again, the moment you're adding more structure to your procedural website structure, you'll be adding little things commonly associated to OOP. Such as prefixing functions that act on related data with the same string, and putting them together in a PHP file (for instance). That's how C programmers do it, that's how the Drupal guys do it, and it's not that far off from OOP (it's essentially object-based programming with a bit more manouvering space).

Unless you do this very strictly, though, I doubt you'll be able to easily explain how your application is structured to other coders, a year into development, however. And I doubt the author of that article is able to explain anything complicated to anyone.

I doubt anyone here will want to actively try to comment on that website's arguments, because he seems to be on a crusade against the OOP religion, if such exists at all. Anybody saying that <method A> is good for everything is a moron, so he's right in that respect. Then again, anyone saying that <method A> sucks balls for everything is just as big a moron, so he really is a moron after all.

The idea that OOP is only good for GUI programming is ridiculous btw. Quite the opposite, it is very often applied very well in, for example, embedded systems. As an example, one would typically make a class representing every object in the real world that has its own behaviour. That would be a class for the entire microwave you're controlling, but also a class for the microwave door and a class for the rotating disc inside, and classes for every sensor and every actuator that are part of these sub-parts again. This way, if in a new version of the product family you replace the timer-knob by a different sensor, you only have to replace that particular class that maps to that sensor. Similarly, if you start an oven product line that uses the same timer knob as the microwave has, you can reuse that code. If you have three rotary knobs doing different things (time, watts, mode), you may use inheritance to do the hardware reading while specializing for the actual values that are reported to the other components.

If you can do that without relying extensively on inheritance and polymorphism you might just as well code it in C or such (which many of the embedded guys seem to prefer), but the design will still be inherintely object oriented. I seriously cannot imagine any reason why that is bad. And the geocities guy keeps ranting on about databases and set theory so I doubt he's had a good look at the world.
added on the 2009-10-12 19:12:43 by skrebbel skrebbel
Oh and just so you know: this is essentially what, for instance, NXP (ex Philips Semiconductors) does in all their embedded code. It's mostly C, but clearly object based. So yeah, there's working industrial code for you, doing direct world-to-class mapping.
added on the 2009-10-12 19:15:00 by skrebbel skrebbel
Quote:
Then again, anyone saying that <method A> sucks balls for everything is just as big a moron, so he really is a moron after all.


I do not think so. Here, he writes:
I have been programming small and medium custom business applications for most of my career. Most of my complaints against OO are related to this rather large niche. Perhaps OO is good for other niches.

Very calm position, it seems to me.

Quote:
The idea that OOP is only good for GUI programming is ridiculous btw.


I cannot find a place where he states so. He says that many non-programmers think so.


Anyway, about half a year ago when I raised this question among friend programmers their reaction was negative. Here I see that reaction is moderate.
I must point out that in the "market", that is when you are searching for a job, in most cases there is a request of an OOP programmer.

Also, today I talked to one notable game developer and was amazed to hear him say that he mostly agrees with what this site says and that for their new game they are using a programming language with no OOP.
Quote:
grouping pieces of data and the operations that act on them together is no necessity for making something that works, but it sure helps finding stuff back a year later


I can group things into functions, it doesn't make my code OOP in nature. It could be possible you are not working in "proper" OOP, but that your code is procedural in nature - something I've seen quite a lot in web development.

login