[squeak-dev] SimpleMorphic

Edgar J. De Cleene edgardec2005 at gmail.com
Wed Nov 10 19:01:12 UTC 2010




On 11/10/10 3:46 PM, "Juan Vuletich" <juan at jvuletich.org> wrote:

> Hi Folks,
> 
> A few days ago I released SimpleMorphic for Pharo. SimpleMorphic is the
> Morphic implementation in Cuis. It is much smaller and simpler than the
> one in Pharo (and in Squeak). Please see
> http://lists.gforge.inria.fr/pipermail/pharo-project/2010-November/035302.html
> . A link to the code (for Pharo 1.2) is included.
> 
> While this release of the code is for Pharo, it shouldn't be a big deal
> to make it run on Squeak. My hope is that the Pharo community studies it
> in detail, adopts it, and eventually remove the old Morphic. For Squeak,
> maybe the same happens. Or perhaps there would be 2 Morphic UIs for
> Squeak: FullMorphic+Etoys and SimpleMorphic... So, what do you think?
> 
> I also sent this comment to the Pharo mail list recently, trying to make
> clear why SimpleMorphic is useful:
> 
> "Size of 4 core classes (Morph, MorphExtension, PasteUpMorph and
> WorldState)
> Pharo / Squeak / Cuis
> totalIvars:  39 / 46 / 26
> totalClassVars: 15 / 10 / 5
> totalInstMethods: 1170 / 1764 / 663
> totalClassMethods: 55 / 71 / 16
> 
> Size of the whole Morph hierarchy
> Pharo / Squeak / Cuis
> totalClasses: 197 / 331 / 58
> totalIvars:  649 / 1063 / 257
> totalClassVars: 54 / 138 / 28
> totalInstMethods: 6651 / 9186 / 2115
> totalClassMethods: 303 / 858 / 127
> 
> SimpleMorphic is much smaller. Core classes are simpler and easier to
> understand, fix and extend. The most important part is that this is not
> blind removal of unused code. A lot of the functionality has been
> redesigned to make it simpler, and the removal was done with great care
> to result in a consistent system. This work started in 2004, so we're
> talking of about 6 years of careful work. All this means that
> SimpleMorphic does not support all the features that Pharo or Squeak
> might support. Please use the browsers and other tools in Cuis to check
> what it indeed can do.
> 
> Talking about complexity, let's take for example, morph layout. This is
> started with #doLayoutIn: in Pharo and #doLayoutIfNeeded in SimpleMorphic.
> 
> In Pharo, this method calls #adjustLayoutBounds: (19), #layout:in:
> (149), #layoutProportionallyIn: (10),
> #computeCellArrangement:in:horizontal:target: (87),
> #computeGlobalCellArrangement:in:horizontal:wrap:spacing: (31),
> #computeCellSizes:in:horizontal: (30),
> #computeExtraSpacing:in:horizontal:target: (136), #layoutLeftToRight:in:
> (91), #layoutTopToBottom:in: (91), #placeCells:in:horizontal:target:
> (70). The numbers in parenthesis are the sum of the lines of code of the
> implementors. Total lines of code for layout (taking only these most
> important methods) is 714. I doubt there are many people who really
> understand all of this code.
> 
> In SimpleMorphic (Cuis), this calls #layoutSubmorphsIn: (10),
> #applyLayoutFrameIn: (11), #layout:in: (24). Total lines of code is 45.
> I believe any smalltalker could understand these in just minutes."
> 
> Cheers,
> Juan Vuletich
> 


Excellent as always.
When back at home from Smalltalks2010 see if could take it for
SqueakLight3/SqueakCore.

By the way, notices about works with Andreas and Pavel for smaller and
modular image ?

Edgar





More information about the Squeak-dev mailing list