On Fri, Aug 26, 2016 at 9:10 AM, Esteban Lorenzano <esteba...@gmail.com>
wrote:

>
> On 26 Aug 2016, at 08:49, Luc Fabresse <luc.fabre...@gmail.com> wrote:
>
> Hi,
>
> My point of view is:
>
> 1) in code/core, we should use (we already said that with Camille in the
> past ;-)):
>
> self environmentAt: #Blah
>
> Object>>environmentAt: aSymbol
>     ^ self class environmentAt: aSymbol
>
> Object class>>environmentAt: aSymbol
>   ...
>
> The idea is that we can then customize name resolution, per object, per
> class and per module in the future.
>
>
> +1
>
>
> 2) For scripting purpose, asClass is indeed useful (GTInspector, ...).
> I would start simple as said before, re-package it and add a rule as
> suggested by Denis.
> Now, I am not sure that making asClass supporting name resolution in
> another environment is really useful.
> And if we do it using thisContext, some developers may use that instead of
>  "obj environmentAt: XXX" which would be bad.
>
>
> I dislike a lot the thisContext resolution idea.
> If is bad is bad… and it will be bad also for scripting. I know, now it
> does not looks like adding value, but think about: #asClass is monolithic
> and #asClass with thisContext “looks monolithic”, IMO promoting a bad way
> of thinking problems in Pharo thus inducing confusion for non expert users.
>

This makes me think about DynamicVariables for some reason. Will we get
interference in that "context" ?

Phil


>
> Esteban
>
>
> my 2Kč,
>
> #Luc
>
> 2016-08-26 6:56 GMT+02:00 Tudor Girba <tu...@tudorgirba.com>:
>
>> Hi,
>>
>>
>>
>> > On Aug 26, 2016, at 6:37 AM, stepharo <steph...@free.fr> wrote:
>> >
>> > Thanks doru.
>> >
>> > I do not like when people think that we are complaining just because
>> something changes.
>> >
>> > It should change for the better and we all agree on that.
>>
>> Certainly. There are many points of view and many constraints. This is
>> why it is so important that we all bring forward those constraints because
>> only like this we can reach a global maximum.
>>
>> So, about asClass, everyone agrees that it should be moved to another
>> package. The open questions are:
>> - do we add an automatic deprecation for those that use it in code, or
>> - do we make use of thisContext to retrieve the environment?
>> (or both)
>>
>> Also, what about the asClassInEnvironment: method? Can it be used in
>> code, or do we better discourage its usage altogether? I am thinking that
>> if we have to write:
>>         #MyClass asClassInEnvironment: self class environment
>> is even longer than:
>>         self environment at: #MyClass
>> so, I think there is little point to it.
>>
>> In fact, for scripting what I find useful is not so much less characters,
>> but the lack of parentheses, hence unary methods. That is why asClass is
>> worth being salvaged for scripting (even with a solution that is slower
>> with thisContext), but the rest maybe can be removed. What do you think?
>>
>> Cheers,
>> Doru
>>
>> >
>> > Stef
>> >
>> >
>> >>>>>> Hi,
>> >>>>>>
>> >>>>>> There exists already a method for that:
>> >>>>>>  Symbol>>asClassInEnvironment:
>> >>>>>>
>> >>>>>> But, what if we introduce:
>> >>>>>>
>> >>>>>> Symbol>>asClassFrom: anObject
>> >>>>>>  ^ self asClassInEnvironment: anObject class environment
>> >>>>>>
>> >>>>>> ?
>> >>>>> The problem is asClass unary.
>> >>>>>
>> >>>>> All the tools should be parametrized by an environment.
>> >>>> Yes, but asClassFrom: would not be unary but would save us from
>> typing an extra "class environment"  :).
>> >>> Yes I see.
>> >>> But inside Pharo core tools we are ready to type
>> >>> environment as a message that dispatch to something else than a
>> symbol.
>> >> Sure.
>> >>
>> >>>>>> This would allow us to still script and be dynamic.
>> >>>>>>
>> >>>>>> Furthermore, as #asClass is meant to be mainly used for
>> convenience, not performance, I would also propose to make it lookup in
>> thisContext and take the environment from there. I know that his might
>> sound like magic, but it would be the default that we are looking for (to
>> always lookup through the current environment dynamically).
>> >>>>> argh I will die....:)
>> >>>>> No use of thisContext or only in the scripting package.
>> >>>>> :D
>> >>>>>
>> >>>>> Yes, yes. I just talked with Guille. Moving these scripting methods
>> outside of the Kernel is clearly a must.
>> >>> I think that each time you use them we will preempt cross compilation
>> and others.
>> >> Yes, we agree that this method should not be used inside code.
>> >>
>> >>>>> I was just thinking that we can make it so that we do not break any
>> code while still making it dynamic.
>> >>> I do not like your definition of dynamic. Sending a message to an
>> object is dynamic.
>> >>> What you imply is compact. I can understand it when typing in
>> playground.
>> >> By dynamic I meant the dispatch through “self class environment” or
>> “self environment” which is what people will use by default.
>> >>
>> >>
>> >>>>>  Like with scripting solutions there is a performance penalty, but
>> that is fine if people choose to pay it (like in the case of
>> Symbol>>#value:).
>> >>> Yes for scripts. Not for core code.
>> >>> Since people tend to be a bit lazy I think that having rules will
>> make sense.
>> >> Definitely.
>> >>
>> >> Doru
>> >>
>> >>>>> Cheers,
>> >>>>> Doru
>> >>>>>
>> >>>>>
>> >>>>>> What do you think?
>> >>>>>>
>> >>>>>> Cheers,
>> >>>>>> Doru
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>> On Aug 25, 2016, at 8:34 AM, Yuriy Tymchuk <yuriy.tymc...@me.com>
>> wrote:
>> >>>>>>>
>> >>>>>>> Just my 2 cents:
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> instead of
>> >>>>>>>
>> >>>>>>> #name asClass
>> >>>>>>>
>> >>>>>>> we have to use
>> >>>>>>>
>> >>>>>>> self class environment at: #name.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Maybe instead of #at: we can have #classNamed:? Or something
>> similar? Because 1) it’s not obvious that the method will give you a class,
>> what if in the future and environment can also have a mapping of something
>> else like packages?
>> >>>>>>>
>> >>>>>>> Uko
>> >>>>>>>
>> >>>>>>>> On 25 Aug 2016, at 07:21, stepharo <steph...@free.fr> wrote:
>> >>>>>>>>
>> >>>>>>>> Hi guys
>> >>>>>>>>
>> >>>>>>>> We got a meeting at ESUG with all the compiler guys and james
>> from gemstone.
>> >>>>>>>>
>> >>>>>>>> Our goal is to have a full tool suite that can be parametrized
>> by environments (so that
>> >>>>>>>>
>> >>>>>>>> we can compile code in other space, or compile other code inside
>> pharo).
>> >>>>>>>>
>> >>>>>>>> I personnally started this effort one decade ago. Now the
>> introduction
>> >>>>>>>>
>> >>>>>>>> of #asClass and friend is simply destroying all our efforts.
>> There was a discussion
>> >>>>>>>>
>> >>>>>>>> in the past but we are not listened.
>> >>>>>>>>
>> >>>>>>>> We will
>> >>>>>>>>
>> >>>>>>>>   - packaged these extensions in a separate package
>> >>>>>>>>
>> >>>>>>>>   - add rules to ban the use of such method in Pharo
>> >>>>>>>>
>> >>>>>>>>   - fix all the use (again) to use the correct way to do it.
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> I can understand that for scripting this is easier but it cannot
>> be at that cost and impact.
>> >>>>>>>>
>> >>>>>>>> I hope that we will understand but we have to do something else
>> than
>> >>>>>>>>
>> >>>>>>>> fixing code that breaks our effort.
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> Stef, Marcus, Guille and Luc
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>> --
>> >>>>>> www.tudorgirba.com
>> >>>>>> www.feenk.com
>> >>>>>>
>> >>>>>> "It's not what we do that matters most, it's how we do it."
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>> --
>> >>>> www.tudorgirba.com
>> >>>> www.feenk.com
>> >>>>
>> >>>> "Quality cannot be an afterthought."
>> >> --
>> >> www.tudorgirba.com
>> >> www.feenk.com
>> >>
>> >> "Every thing has its own flow."
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >
>> >
>>
>> --
>> www.tudorgirba.com
>> www.feenk.com
>>
>> "Every thing should have the right to be different."
>>
>>
>>
>>
>>
>>
>
>

Reply via email to