Hi Marcus,

On Jan 12, 2015, at 6:59 AM, Marcus Denker <marcus.den...@inria.fr> wrote:

> 
>> On 11 Jan 2015, at 18:50, Chris Muller <asquea...@gmail.com> wrote:
>> 
>> It has been a while since I read the paper, but my memory is that
>> Slots lets you define features and/or constraints on inst-var's.  For
>> example, assigning default values or restricting the set of valid
>> values.
>> 
>> This would probably be appealing for folks coming from languages like
>> Java or C++, because they're used to all of their "slots" being
>> statically typed.  It does seem ironic that where those static
>> languages have been trying to move toward being more dynamic, Pharo
>> newbies would find themselves arrived at a language which is trying to
>> make something that was purely dynamic into something more static.
> 
> It is *possible* to implement a kind of TypedSlot, but I do not think that
> this is what people will use Slots for. And for sure there will be no TypeSlot
> by default in Pharo.
> 
> For Slots there are two levels
> 
> 1) having objects that describe variables instead of strings. This is very 
> powerful
> already and will allow us to e.g. do watchpoints/breakpoitns in variables 
> very easily
> 
> This is already in Pharo3, but Pharo4 enhances the API and provides with the 
> LinkWrapper
> slot a way to transparently hook into variable access. This will be very 
> powerful.
> 
> 2) provide a way to declare that a slot is described by a special subclass of 
> Slot. This is what this
> change is about
> 
> This is what we use Slots for are three directions:
> 
> 1) active slots that announce when the are set. Replacing the whole 
> ValueHolder stuf to some extend.
> (This is where Slots + their Meta Object Protocol allow one to implement the 
> special variables in Tweak
> very easily. It is interesting that there, one had to copy the whole compiler 
> and do many, many hacks.
> 
> 2) Allow optimizing memory representation. E.g. look at Morph. Many flags are 
> needed, but each takes a
> whole pinter to true of false. So we have MorphExtension. And then on top of 
> that a property dictionary.
> With Slots, flags (sots that can only store true or false) can be realised 
> very efficiently (31 boolean slots
> of the hierarchy map to one ivar). With a PropertySlot, one can have values 
> that are used seldomely 
> encoded in a way that they take no space.
> 
> 3) Slots + Magritte. Magritte now relies of conventions and methods added to 
> the class side. But what it
> is: meta descriptions for ivars. I think there will be something very 
> powerful in combining Magritte and Slots.
> 
> 4) Experiments. One way to see Pharo is that it is suppose to be flexible 
> enough to allow experiments
> to be done fast and easy so we can explore many ideas easily.
> These experiments will often be just that: experiments. But some of them will 
> be so good that they will
> turn out to be useful.


I hope we'll also be able to follow a 5th direction, of allowing one to specify 
a slice or a trait or a package that just adds an inst var to a class instead 
of having to provide the whole class definition just to add an inst var.


> 
>> My understanding is that specifying a certain Slot-type can save the
>> need to write, i.e., initializing or validating methods.  In exchange,
>> the number of concepts inherent in the language that must be learned
>> and remembered is increased.  Standard Smalltalk is only about 2 or 3
>> concepts -- sending messages and assigning pointers.  Period.  There's
>> something exciting about that because even Grandma can grok 2 or 3
>> concepts.  No other language is so simple.
> Slots do not really increase the concepts: they just are meta objects that 
> have the
> definition of the behaviour of assignment, turning assignment into message 
> sends.
> 
>> By introducing the implicit behaviors of slots, the number of
>> different conceptual interactions between code and the slots it
>> references increases exponentially with the number of slot-types.  I
>> fear trying to explain them to Grandma will have her eyes starting to
>> glazeā€¦
> I do not see now an active slot is harder to understand than e.g. a 
> ValueHolder.
> or  a BooleanSlot should be easier to understand than doing all that 
> explicitely?
> 
> 
>    Marcus
> 

Reply via email to