Richard Demers adds to his earlier comments on subsystems.
I discussed the last of those linked posts, and Richard responds in the comments.
The best answer I can give is that a subsystem remains an object, defined by a class, but with the property of "containing" objects it encapsulates at the next lower level of the emergence hierarchy -- with the property of "containment" enabled by an enhanced virtual machine. Subsystems, as objects, interact via messages, and I suspect that interactions are constrained to subsystems within the same hierarchical level. So what linguistic support is needed? Not much, but at least VM, class library, and tool support for the abstract class of Subsystems. [Richard Demers]
This description, which has echoes of the Python approach to modules (and almost everything else) of treating them as dictionaries, would lead me to similar conclusions to those of Runar Jordahl, but which are apparently a misunderstanding (see below). They also confirm that my introduction of Koestler into the conversation was justified, since this object-as-object-collection structure is definitely a holonic architecture (which is realised in software as the Composite design pattern).
Anyway, in response to Runar, Richard writes:
To me a subsystem is an entity at a level of an emergence hierarchy. Just as there is an emergence hierarchy of physical entities (atoms, molecules, organelles, cells, organs, etc.), so too is there an emergence hierarchy of software entities.In Smalltalk terms, objects are entities at only one level of the hierarchy. There are other entities, at both lower levels and higher levels of the software hierarchy. In this, I take a purely reductionist point of view (though it may be better to call it "constructionist" for software). [Richard Demers, Still More on Subsystems]
I suppose the confusion isn't entirely surprising since as far as I can get a grasp of it, Richard's subsystems while more than loadable chunks of code must also presumably be loadable chunks of code (or instances of loadable chunks of code). I still haven't got an image of what the sort of subsystem Richard has in mind might look like.
Biological analogy is all well and good, but I remain unconfortable with using it as more than inspiration. It is noteworthy with the emergence hierarchies both of the physical world and of biological systems that, while our understanding has progressed to appreciating the existence of such heirarchies, our understanding of how what goes on at one level results in the emergent features at the next level up is still limited. Effects over multiple layers (aggregated emergence?) are a closed book. If you don't believe this, show me someone who can explain brain function in terms of subatomic particle behaviour.
Emergence is slippery. Evolution does fantastically well at utilising emergence because selection based on phenotypic traits at high emergence hierarchy layers applies selection to much lower genotypic layers. As Richard observes, we construct software, we can't just let it happen and then take it apart and examine it, and come up with theories about how it works.
Don't get me wrong, I'm not dismissing the need for more advances in code grouping, subsytem building, utilisation of emergence in software. All of these things need pursuing. Richard, if you ever build or come across a concrete demonstration of your ideas, do please let me know.
Aside: I hadn't noticed that he'd Richard had responded to my comments in that last linked post; it hadn't occurred to me that I should check back on posts that I'd pinged. I could subscribe to the comments feed, but I have too much coming into my aggregator already. There's a need for a facility, probably at the aggregator end, to filter comments to only those on posts you've expressed an interest in, either by commenting or pinging yourself, or by simply telling the aggregator you're interested.
Hi!
I developer on AS/400 since 1996.
Many years I looked for this book
that you wrote in your article
/Subsystems not just loadable chunks of code/
Citing:
/if you can find a copy, the best intro I know of is an out-of-print book written by some of
the original S/38 developers: "IBM System/38 Technical Developments/
Please help me.
If you have, please send me e-book to the mail or tell where can I get it!!!
Sincerely, Andrew.
Posted by: Andrew | December 07, 2005 at 07:09 PM
No, sorry. If you come across it, please do likewise!
Posted by: Hamish Harvey | December 08, 2005 at 07:46 AM