Hi,

> On 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. 

No problem from my side. It was a proposal. I wanted to learn a bit and I was 
looking for concrete arguments to learn from because I am likely missing 
something. I still do not know why it is bad, but it is really not important 
for the current issue.

So, we agree that:
- move asClass together with all other in a separate package.
- introduce deprecation.

I created an issue:
https://pharo.fogbugz.com/f/cases/18987/Extract-asClass-and-friends-in-a-separate-package-and-deprecate

Doru



> 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."

--
www.tudorgirba.com
www.feenk.com

"Be rather willing to give than demanding to get."





Reply via email to