Hacker News new | ask | show | jobs
by pasabagi 3033 days ago
Can you expand on this? To me, Plato seems like a fairly good fit for the computer world. I also think that, from the perspective of analytic philosophy, OO patterns make some kind of sense - since they allow us to clarify problems as being subsets of more general ones.
2 comments

> Can you expand on this? To me, Plato seems like a fairly good fit for the computer world.

That is exactly the issue - computing is the closest thing we will ever have to Platonic Idealism. You can create simple, elegant, symmetric worlds. Many people instead assume that whatever poorly designed programming language is around at the moment is the be-all, end-all Platonic world that they must inhabit, and then proceed to come up with all kinds of dumb workarounds because the programming language does not model whatever they are trying to express, all the while patting themselves on the back for being clever and creating "abstractions."

OO patterns do not make any kind of sense. There is no "generality" or "abstraction" about Singletons or Factories. They are made-up nonsense terms for ad-hoc techniques people hacked together to work around the problems they had trying to apply certain classes of OO languages to modeling certain kinds of problems in the real world.

So the contrast should be between different philosophic schools - if patterns (and OO inheritance) is like Platonism, what would materialism be? I think DSLs and DDD is a kind of materialist view on computer programming. And DDD's emphasis on clear and precise naming and concepts is very much what analytic philosophy is also concerned with.

>OO patterns do not make any kind of sense.

Isn't this a matter of perspective, though? I've been thinking recently that programming languages are kinda like hexidecimal numbers or logarithms - essentially shorthands that allow us to handle stuff the human brain isn't built for. In this sense, object oriented thinking shouldn't be any worse than any other kind of thinking, provided the practitioner finds it useful for making the problem at hand tractable.

I can see there would be two obvious problems with this kind of relativism - if there were performance implications, or maintenance implications. But I don't see OO stuff causing these in and of itself.

I'm sure that most people who have studied OO would find many similarities with Plato's forms. The same could be said of Spinoza's attributes, however the latter is much more abstract (to say the least).

Without digressing too much from the topic however, I think OO has it's place. Sometimes it's rather like constructing scaffolding prior to building a small dog house, unnecessarily complex.

I’d think that inheritance makes oo closer to Aristotle’s categories.