I did analyse some of these "memory pumping effects" in Pharo. Come from overuse of "inheritance", that causes big objects with hundreds of methods to be created and garbaged, just for short tasks.

Better: "Composition over inheritance"!!!

Second problem is the "Liskov problem":

Let q(x) be a property provable about objects x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T.

See PetitParser. Universal Tool. Fine. Blowing up memory unnecessarily. Moose ... ugh.

These *are* design flaws.

best, have fun, Guido Stepken

Am 13.02.2012 14:20 schrieb "Schwab,Wilhelm K" <bschwab@anest.ufl.edu>:
There is no question that over-use of inheritance (failure to understand composition) is a classic beginner mistake. ��That said, don't underestimate the value of inheritance. ��Granted, the example I have in mind is perfect for specialization, but beyond that, failure to use (extensive) inheritance can at times lead to lots of duplicate code (which is really bad). ��Say it once - inheritance can help one do just that (policy up, implementation down, etc.).

Bill