Need feedback on simple idea
Markus Gaelli
gaelli at emergent.de
Fri Apr 11 09:25:17 UTC 2003
Diego,
You are my guy...
:-)
Alexandre changed the VM recently for his ClassBoxes
http://scgwiki.iam.unibe.ch:8080/SCG/559
so there is hope...
I am into test-composition, which would be possible,
if you had concrete pre-/postconditions put as assertions
into real instance-methods and _not_ in some external
test-methods.
See http://minnow.cc.gatech.edu/squeak/2996
Cheers,
Markus
--
Markus Gälli Software Composition Group
markus.gaelli at iam.unibe.ch University of Bern, Switzerland
Office: +41(0)-31-631-3313 Fax: +41(0)-31-631-3355
> Hi Stef,
>
> I think you know my feeling. WE NEED MORE RESEARCH!!!
>
> Let's go for the next step! What one is the next-step? I don't know at
> all... But we can't stay on the same state as 20 years ago.
>
> IMHO, there are a lot of thing to try-to-improve so we need a better
> environment to test ideas. Let me explain some ideas [*]
>
> Method Dictionaries in the object level (a la Visual-Smalltalk)
>
> - Replace the class reference in each object to a reference to a
> MethodDictionaryCollection
>
> - Each object has a collection of superclasses (the superclasses
> chain).
> Each class has one MethodDictionary. Each object has the collection
> of all
> the MethodDictionaries of all its superclasses.
>
> Example:
>
> Superclass3
> Superclass2
> Superclass1
> TheClass
>
> Each of these classes has one MethodDictionary. oneInstanceOfTheClass
> has
> a collection of methods dictionaries like {TheClass methodDictionary.
> Superclass1 methodDictionary. Superclass2 methodDictionary. Superclass3
> methodDictionary}.
>
> The collection CAN be shared between all instances of the class. The
> method dictionary of each class MUST be the same for any object that
> has
> the class in the superclass-chain.
>
> testPriorSentence
> "unit test to show the prior sentence written in poor english"
> | allInstances |
> allInstances := Object allSubInstances.
> self
> should: [
> allInstances
> allSatisfy: [:eachInstance |
> | superclassesChain methodDictionariesChain |
> superclassesChain := eachInstance class
> withAllSuperclasses.
> methodDictionariesChain := superclassesChain
> collect: [:eachClass | eachClass
> methodDictionary].
>
> eachInstance methodDictionaryCollection =
> methodDictionariesChain]]
>
> With this approach we have exactly the same behavior we have today.
> But...
> we can put in the MethodDictionaryCollection one more entry for
> instance-
> specific-behavior (or more than one to have super-instances a la Self).
>
> The VM has to be modified to look over the MethodDictionaryCollection
> instead of using the class.
>
>
> The other change is to "hack" the VM to check is the
> MethodDictionaryCollection is a real MethodDictionaryCollection.
>
> - If it's a real one: The normal method look-up is used.
>
> - If it is NOT a real MethodDictionaryCollection: The object (the one
> in
> place of the MethodDictionaryCollection) is asked for the method with
> some
> normal smalltalk message (example: #methodForSelector:andReceiver:).
> Then,
> the result of the prior message is "evaluated" with another normal
> message
> (example: #evaluateOnReceiver:context:).
>
> With these *relative* simple changes to the object struct and the VM,
> we
> open the door to research a lot of alternatives:
>
> - different methods lookups
> - behaviour in object level
> - different type of method activation (examples: accesors a la Self,
> MethodComposites, pre and post conditiona a la Eiffel, etc)
>
>
> Just my 2 cents,
>
> Diego Gomez Deck
>
>
> [*] Thanks to Alejandro Reimondo for infect me with these ideas!
>
>
>
>
>
More information about the Squeak-dev
mailing list
|