Replies To Web Articles and Discussions

Updated: 7/26/2002


OTUG 1/15/2002 Meeting

The Object Technology Users Group has posted meeting notes that summarize a discussion of my OOP Criticism article. Their notes can be found at http://www.otug.org/meeting/200201.html.

First, I would like to thank the members of OTUG for their opinions and feedback. Even if we don't agree, we may still learn something from each other.

I would note that the polls taken of the participants do not offer very much information on why our opinions differ, other than confirm our differences. In my opinion such a meeting would be more fruitful if fewer topics were covered in more detail and depth. The most fruitful debates that I have been in come about when one issue or example is focused on and "beaten to death".

The rest of my comments are presented in the order of the meeting notes.

  • Summary of the article was given (see-attached document) with the intent of discussing 3,7,9,11,15,20 in the Fishbowl Panel.

    I am not sure what document is being referred to here.

  • There was a general consensus that the author of the article, although is specifically using the term OOP throughout the article, is using OOP interchangeably with Object Orientation (OO).

    I never find agreement on what definitions of OO, OOP, OOA, OOD, etc. are. If anybody has good, clear definitions, I would like to run them by comp.object (newsgroup) to see if there is a general consensus there. The meeting notes even later state: "Furthermore, it was acknowledged that even experts in the OO fields have not been able to come to a consensus of what exactly constitutes the OO Paradigm."

  • Lack of training was determined as the leading cause of this confusion.

    Even (self-proclaimed) experts can't seem to agree on these questions. Training seems to have little to do with it. How can the experts train the "truth" if they don't have consistent opinions themselves? If it is an opinion, then it should be stated as such.

    Sometimes experts will claim that others experts who do not agree with them are not "trained properly". I have no easy way to solve these. They appear to be fundamental differences in philosophies rather than lack of knowledge based on my observations of comp.object debates.

  • As far as application of OO principles in varying project sizes and industry types is concerned, one of the participant quoted Jacobson "OO applies in some situations better than the other " . This, the group agreed, is specifically true for industry types.

    That might be true, but there is no consensus on what industries. (Except for maybe CAD/CAM, see below.)

  • [Protocol coupling] was strongly defended by OO enthusiasts present for this discussion. "Coupling leads to better understanding of relationships, provides for implementation hiding through API and increases reuse".

    I would like to see more evidence or demonstrations of this. I have since added a portion to my website titled Coupling Needed for Reuse?. Basically it says that you don't have to convolute the interface to use other protocols internally. In other words, reuse and exposure of coupling are not locked together.

  • Several members still reserved the thought that the [database] mismatch might have been solved for CAD/CAM applications where OODBMSs are used extensively and rightly so, but general enterprise business apps still face that problem.

    I have heard similar suggestions that OODBMS's have worked well for CAD/CAM databases. I don't dispute that. However, CAD/CAM is outside my domain of criticism. But, for business applications, RDBMS seem here to stay for quite a while, and the "impedance mismatch" is a tax that must be accepted as part of the cost of OO.

  • How [his criticism] relates to the OO Paradigm was still a confusion in everyone's mind. Nevertheless, applying good code and design practices like refactoring were discussed in the business-programming context. With an industry case study of approx. 5000 tables in a business application, the participants agreed that although iterations as part of the development are generally not bad, refactoring persistent data iteratively is a bad idea.

    I am not following this. Is it saying that OOP code refactoring is simpler than relational structure refactoring? Is it an anecdote about a system with 5000 tables? As far as specifics about those summary points listed, almost all are explained in more detail in examples on the same page or on links given on the same page. If the group wants to pick one of those topics to focus on at a time, I would happily guide them to the areas with more detail on them.

  • Everyone in unison agreed that OO promotes and requires modeling the real world.

    This is curious, because on comp.object (newsgroup), it seems to be roughly 70 percent of OO fans against the notion that OO is about trying to model the "real world". (Even Bertrand Meyer does not seem to hold a real-world-model- heavy view). I don't know how to account for this apparently large difference between pro-OO groups.

  • As part of this requirement, business knowledge is embedded in the system model. Since modeling is promoted, reuse factors in implicitly as part of system design.

    I am not sure how trying to fit the real world by itself promotes reuse. I see no connection between the two nor know of any "cliche examples" that promote this idea. Nor am I convinced OOP inherently better models the real world. Nouns often don't "self-handle" themselves in the real world.

  • That "proper" behavior of classes or objects in a system should be ascertained in any paradigm and not just in OO was the prevalent thought. OOP should not be looked as carrying this extra burden, this should happen as a part of any paradigm being used for s/w development.

    This seems to contradict the prior "promotes and requires modeling the real world" statement.

  • Finally, the group agreed that the OO models around nouns and not verbs. This [makes] the model more true and close to the real world as opposed to the procedural world where functional verbs are used for function/procedure naming convention.

    I don't see how nouns are more "real world" than verbs. Both need to be used in conjunction and appear to be roughly equal in importance in language. I have more to say about this at OOP Better Models Sentences?

    Perhaps OO fans think internally more around nouns. I cannot verify this. My working assumption/conclusion is that paradigm preference is probably subjective. IOW, OOP may better model the way OTUG members think. But, individuals and industry must be careful not to extrapolate this onto everybody else. Otherwise, people may get really upset and start writing anti-OO webpages.


ActionScript.com - The Case Against OOP

This is an archived forum discussion at ActionScript.com about this website. Below are my replies to various statements.

  • After all, Flash is a very lightweight platform. Do OO techniques actually add value in a real-world context?

    I don't think size is really the issue. OOP does not better organize complexity in anything I have seen. (Perceptions of "better organized" can be very personal. Decent metrics are unfortunately lacking. Generally code-size and change-scenario-impact-analysis is used these days.)

  • If we could organize our code better, by using OOP, we've already come a long way.

    That is a big "if". Show me an example of OOP being better organized. I hear about such Unicorns all the time, but never see them with my own eyes.

  • I built all kinds of stuff to mimic named parameters behaviour as mentioned in the article. The fact that a language is OO, means you don't have too anymore.

    "Mimic"? Named parameters are not an invention of OOP. Perhaps your distaste for OOP is from using poor procedural languages. (Granted, there are fewer procedural choices because OOP hype is killing them off.)

  • The memory usage of an OO based enviroment exceeds a procedural one

    I would note that my criticism generally does not focus on machine resources or performance. It focuses more on human factors, like the effort to make given changes.

  • I personally am able to code faster, cleaner and more readable code using OOP techniques.

    I won't necessarily question this. It may all be subjective. However, the industry is assuming that OOP is objectively better and ignoring alternatives.

  • Although the author does make some valid points I'd like to point out that he is also being very one sided

    So? There is much one-sided about pro-OO literature. If you have good evidence that OOP is better, I shall gladly link to it.

  • By the way OOP isn't a law or dogma - it's just a simple think that human beings use since we build up our industrial world !

    This appears to be a variation of "OOP better models the way humans think". Humans think differently from each other. It may indeed better model your head, but please don't extrapolate that to everybody else.

  • A procedural built product with this kind of flexibility would probably be bigger.

    Prove it with side-by-side code, Mister!

  • Multiple (but similar) objects in a procedural program actually take up more memory than OO objects.

    Evidence?

  • Procedural components over OO components, I don't think so. The whole basis of the components is to make then extensible. Using the components, you can not only change the colour, but also the entire skin. You can easily go from the basic skin to something that looks like the Mac OS X style. Which is much than colors, David :) [....] With out the components being so OO as they, means they can be extended. OO allows you to alter and perform actions on something, without ever knowing what the something is. This is a huge advantage, instead of building code for this, you can build OO code that works with this*10 or this*whateverNumberYouWant - as long they all have certain properties.

    This sounds like typical OOP "brochure talk". I would like to see actual code of this happening. Often the examples given after such a request suggest that the author is not a very good procedural programmer and/or using a crippled language or tool-set.

  • Why use a complex and convoluted scripted solution when one involving simple actions and frame positions will do?

    I am not familiar with your particular language or domain. I don't know how your language handles procedural frames (or whatever they are), but just because that particular language gave you poor options does not mean that the fault is the paradigm itself. Don't throw the baby out with the bath-water.

    Even if by chance OOP is better at graphics scripting, that still does not make it better for all domains. State management restrictions may prevent use of relational tables in graphics scripting, so perhaps language-centric OOP structures may be the way to go. (Relational tables are a key to organizing complexity in my domain.) However, I would note even 64K CPM machines from the early 80's could fit reasonably sophisticated relational engines on them. I agree that there is a learning curve for proper use of relational techniques, but sometimes you have to bite the bullet if you want the power and flexibility. Easy-to-learn and easy-to-maintain are not necessarily the same thing.


OOP Criticism | Main