On Sat, Feb 1, 2014 at 3:25 PM, Pharo4Stef <[email protected]> wrote:
> Andreas
>
> did you realise that pools are just static cached version of (simple
> value) returning messages?
>
But they are not. They are combinations of a getter and a setter; pools
are pools of *variables*, not *constants*. So one variable is replaced by
one variable and two methods, in turn adding two symbols.
Personally I want to continue to be able to write
opcode caseOf: {
"Noops & Pseudo Ops"
[Label] -> [maxSize := 0].
[AlignmentNops] -> [maxSize := (operands at: 0) - 1].
[Fill16] -> [maxSize := 2].
[Fill32] -> [maxSize := 4].
[FillFromWord] -> [maxSize := 4].
[Nop] -> [maxSize := 1].
...
not
opcode caseOf: {
"Noops & Pseudo Ops"
[CogRTLOpcodes label] -> [maxSize := 0].
[CogRTLOpcodes alignmentNops] -> [maxSize := (operands at: 0) - 1].
[CogRTLOpcodes fill16] -> [maxSize := 2].
[CogRTLOpcodes fill32] -> [maxSize := 4].
[CogRTLOpcodes fillFromWord] -> [maxSize := 4].
[CogRTLOpcodes nop] -> [maxSize := 1].
...
And I don't want to have to define the accessors. It's bloat. It's less
readable. Theres still a pool involved (CogRTLOpcodes's classPool); it is
just being made harder to get hold of.
Pools are really useful. Just because someone's only worked on projects
where the need didn't present itself doesn't mean they're not really useful
when they can be used. One could say the same about contexts. Should we
get rid of them because most people hardly ever use them?
>> How many lectures did you give? It is annoying to have to explain
> something that usually people do not need to know.
> > I don't give any lectures to students but I often try to "teach"
> Smalltalk to some of my colleagues and friends. And with that I have hard
> times.
> > Typically "experienced" software developers think about themselves as
> being experts in object orientation and programming languages,
> > even if they have only experiences with C, C# and C++. "Teaching" them
> about Smalltalk's idea of object orientation is VERY hard, almost
> > impossible because they already know everything (read: they are
> ignorant) and lazy. I guess there are some similarities to students.
> > So, no I don't teach but have my own problems ;-)
>
> So when you learn a new language like python do you get all the syntax to
> create a class as a template?
> Or just the non optional parts?
> To me smalltalk class definition forgot the be designed, else variables
> would have been first class objects like in CLOS MOP
>
> >>>> Newcomers don't use a lot of things but that should not be a reason
> to hide them. In my experience newcomers need guidance and rules but
> > "oldtimers" need freedom.
>
> and? you still can use Pool even if I do not really understand why we need
> them since we have classes and messages.
> Because Pool are just a static version of that. Did I miss something
> obvious?
> Pool may have they place in 1980 to optimize for speed but I would be
> curious to see if a modern languages using a decent JIT
> would keep them. Especially since class names should be dynamically looked
> up.
>
> > This is one of the reasons I really enjoy dynamic typing and Smalltalk.
> I don't like to obey to artificial rules that only
> > put permanent burden to me in order to protect me from something I might
> do wrong sometimes.
>
> You are mixing things. So I will not comment on it.
>
> > At the moment I am considering pool dictionaries for a solution of a
> problem at hand: I need to collect some information (warnings, errors, and
> reports) over lots of related and unrelated classes.
>
> Then create a class
> MyRessources and define class methods and you are done. No need to
> use SharedPool + initialize + poolDictionary....
>
> > For the moment I have parameters, but that is getting inconvenient with
> a growing number of things to collect...
> > So, if you need something it should be there and not necessarily
> obscured and hidden!
>
> Come on, do you know in EBNF the * notation zero or more or
> optional?.
> You do not write your method using all the constructs of your
> language, don't you? so this is the same for class definition.
>
> >>> So, a -1 for this change from my side.
> >>
> >> We just need a full class template menu item.
> > Yes, but it's not there yet but this change already took away some power
> without giving me back something in exchange!
>
> since you are an experienced programmer this is simple. Look for trait
> template and send a fix to get an extra menu.
> I will go to sleep now but I guess that I can do that in 10 min and we are
> talking about making our system more accesssible to people.
>
> > I am able to ignore some parts of class creation message easily (I also
> don't use class variables that often) and I don't see why students
> > shouldn't be able, too.
>
> When is the last time you learn a new language for real? I started
> Python recently because I need some fresh air :)
> and I could define a class in 3 4 lines within 5 min.
> Without needing class var, static, delegator... (and if you know
> python you know that it can be UGLY and COMPLEX)
> I found blogs of people explaining wrongs some advanced features
> still many people are able to define a class
> within the 10 min they started to learn python.
>
> > Quite contrary I think if you hide these things from students they won't
> see it, won't get curious and in the end will only
> > learn the boring parts of Smalltalk...
>
> You are wrong and you can trust me on that.
> We want to make sure that people can build fast great stuff and
> feel good and powerful and not
> good because they succeeded to jump over the barriers in the
> middle of the way.
> Pharo is not an obstacle run, it should be smooth and great.
>
> Pharo is not for pedandic programmers or smalltalk bigots, it is
> for making people been able to build things nicely.
> Simplicity, simplicity, this is why one challenge for Slot is to
> enable super users without breaking simplicity.
>
>
>
> Stef
>
>
>
>
>
>
>
--
best,
Eliot