Object Oriented Programming Reality
There are a raft if internet crank and anti-OO trolls who continously rant about the myths and failures of OO. There arguments sometimes gain traction with those ignorant of Object Oriented Software. The most common arguments are strawmen constructed by those with little grasp of OO. They fall into two types; the will fully ignorant and those fearful of the paradigm shift from dated approaches. The clearest evidence of this are the Objected Oriented Myths; any OO authority would never proclaim these, some just don't make sense, some are 'clearly' miss-quotes or misrepresentations of what OO advocates do claim. That these are myths is only claimed by the self-styled anti-OO lobby are demonstrably strawmen arguments.
Alleged Myth: OOP is a proven general-purpose technique
- Where is the evidence that it is not? His own pet hate about the massive growth of OO over the last decade directly contradicts this claim. I've used an OO approach successfully to produce many types of systems including, databases, real time, calculations, GUI's & parsers, print engines, utilities. Numerous largest projects are written in OO languages like C++ (Microsoft Office), Java (IBM MoveX).
Alleged Myth: OOP models the real world better
- Better than what ? OO readily models Physics, the most fundamental 'real world' model in existence. An Object can abstract anything, real or theoretical.
Alleged Myth: OOP makes programming more visual
- Strawman, Smalltalk was invented to make programming WIMP (Windows Icons Mouse Pointer) operating system for Xerox PARC.
Alleged Myth: OOP makes programming easier and faster
- This claim should be qualified as over the full life cycle of a system; the design may be longer than a traditionally 'hacked' project. However the iterative nature of an OO development more than make up for it during elaboration & maintenance phases, the most important phases in bespoke systems development.
Alleged Myth: OOP eliminates the complexity of “case” or “switch” statements Strawman
- This is an algorithmic issue; the Command pattern is one OO approach to achieve this, there are non OO approaches that could also do the same (function pointers in C) if it is warranted. It was with Win SDK message crackers for instance.
Alleged Myth: OOP reduces the number of places that require changing Strawman
- OOP aids a reduction in coupling. Reduced coupling improves a system in a number of ways, including maintenance.
Alleged Myth: Inheritance increases reuse Strawman
- There is a lot more to reuse in OO than inheritance. Encapsulation, polymorphism, aggregation/ composition.
Alleged Myth: Most things fit nicely into hierarchical taxonomies. Strawman
- As I just said there is a lot more to OO than inheritance.
Alleged Myth: Self-handling nouns are more important than self-handling verbs ?!?!
- This miss-represents a rule of thumb used to aid the learning of OO; 'more important', this does not make proper sense.
Alleged Myth: Only OOP has automatic garbage collection Strawman
- Garbage collection and OO are not synonymous, not all OO languages include [automatic] garbage collection, procedural & functional languages do include automatic garbage collection. it's probably only really essential in functional languages.
Alleged Myth: Components can only be built with OOP
Alleged Myth: Only OO databases can store large, multimedia data
Alleged Myth: OODBMS are overall faster than RDBMS
Alleged Myth: C is the best procedural can get
Alleged Myth: OOP would have prevented Y2K problems
- Strawman No, just made it easier to fix by localising the problem
Alleged Myth: Implementation changes significantly more often than interfaces
Alleged Myth: Procedural/Relational ties field types and sizes to the code
Alleged Myth: Procedural/Relational programs cannot “factor” as well
- Regarding the unanswered challenge, the old philosophy of science adage, that the absence of evidence is not evidence of absence, says more than I ever could.