> 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. Esteban > > my 2Kč, > > #Luc > > 2016-08-26 6:56 GMT+02:00 Tudor Girba <tu...@tudorgirba.com > <mailto:tu...@tudorgirba.com>>: > Hi, > > > > > On Aug 26, 2016, at 6:37 AM, stepharo <steph...@free.fr > > <mailto: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 > >>>>>>> <mailto: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 > >>>>>>>> <mailto: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 <http://www.tudorgirba.com/> > >>>>>> www.feenk.com <http://www.feenk.com/> > >>>>>> > >>>>>> "It's not what we do that matters most, it's how we do it." > >>>>>> > >>>>>> > >>>>>> > >>>> -- > >>>> www.tudorgirba.com <http://www.tudorgirba.com/> > >>>> www.feenk.com <http://www.feenk.com/> > >>>> > >>>> "Quality cannot be an afterthought." > >> -- > >> www.tudorgirba.com <http://www.tudorgirba.com/> > >> www.feenk.com <http://www.feenk.com/> > >> > >> "Every thing has its own flow." > >> > >> > >> > >> > >> > >> > >> > > > > > > -- > www.tudorgirba.com <http://www.tudorgirba.com/> > www.feenk.com <http://www.feenk.com/> > > "Every thing should have the right to be different." > > > > > >