| No rhetorical trick intended. It's a definition thing, sure. But it's important to realize that there's no trickery going on here. There's a very important point. I get this all the time, and from all aspects of software engineering. As an example, it's become quite fashionable to say something along the lines of "use-cases suck!" However use-case analysis is just a way of thinking about system functionality. Most people, when pressed, actually mean "we hate these monstrous word templates and rigorous bullshit that people make us do and call them use cases" To which I do not disagree. But that's confusing the application with the tool again. To insist that they are the same is to throw out huge hunks of software engineering simply because a few people got into them and made them overly-complicated and onerous to use. Or put another way: I'm sure some folks would like to describe OOP in terms of overly-complex class diagrams, lots of wiring, un-manageable systems, yadda yadda. Some other folks would like to describe OOP in terms of small systems pragmatically created bottom-up. It can be any or all of that. OOP is actually constructing solution code in a pattern that supports encapsulation, polymorphism, information hiding, etc. The idea is a conceptual tool, a code construction pattern of thinking. The implementation can be all sorts of things. Various implementations suck to more or less degree. But that's really not important. What's important is whether this tool is useful right now, do I know how to use it, and which parts work and which parts get in the way of where I'm going. I understand that this can sound like sophistry, but it's not. |
Yeah except Alan Kay, you know that guy who invented OOP, says everything you mention there is the overly complex BS unOOP. OOP is late binding and message passing. It isn't the hair splitting you seem to think it is, it truly different philosophies about programming. What you are calling OOP is more like Structured Programming Redux, strong on the structure and light on the dynamic message passing and late binding.