Collection

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
33 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Stephan Eggermont-3
Igor wrote:
 >What you talking about is an edge case in currently existing systems.
 >And its easy to prove:

That's not convincing. I'd say you have cause and effect reversed.
I'd not expect there to be large OrderedCollections as long as they
don't behave well.

Stephan

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Levente Uzonyi-2
In reply to this post by Stephan Eggermont-3
On Sat, 13 Mar 2010, Stephan Eggermont wrote:

> Levente wrote:
>> Trees are rarely useful in Smalltalk, so there's no
>> default tree implementation. Note that trees consume
>> a lot more memory (>=5x) than a single array.
> Huh? You mean binary trees? Or Red-Black or so?

The simplest unbalanced binary tree.

> On current procesors they are not very useful, and
> not usable at all for large data structures because
> of the large overhead. But n-ary trees or two-level
> stuctures are.

If this is what you're looking for, just load the BTree package from
squeaksource, or use SparseLargeTable.


Levente

>
> Stephan
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Philippe Marschall-2-3
In reply to this post by Lukas Renggli
On 12.03.2010 14:05, Lukas Renggli wrote:

>> What would be cool for Seaside IMHO:
>> - Multi Value Dictionaries, e.g. for request parameters
>> - Some kind of thread safe map with atomic operations [2], e.g. for
>> session store
>
> Why would that be cool? We already have a WAMultiValueDictionary for
> request parameters. Also we have some ad-hock solutions for the thread
> safe dictionaries.
>
> I would be more interested to see ...
>
> - if it would be beneficial for a collection to be able to swap out
> its internal representation automatically depending on its load and
> use ...
>
> - what we can do by externalizing the enumeration protocol (no, this
> is not the same as streams or the iterable refactoring that was
> recently proposed) ...
>
> - how to make collections more composable, e.g. make them thread safe,
> make them read-only, make them ordered (sets and dictionaries), ...
>

[1] goes a little bit in that direction, even if only from the user
point of view.

 [1]
http://google-collections.googlecode.com/svn/trunk/javadoc/index.html?com/google/common/collect/MapMaker.html

Cheers
Philippe


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Philippe Marschall-2-3
In reply to this post by stephane ducasse
On 11.03.2010 14:24, stephane ducasse wrote:
> Hi guys
>
> tristan is a new student here and he would like to work on collection optimization and implementation.
> I would like the get some ideas from you.
> - are there some collections that would be cool to improve?
> - are there some collections that would be cool to have and that we do not have yet?

An ordered set, use case: start up and shut down list ;-)

Cheers
Philippe


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Stéphane Ducasse
lol

;)

we beat them :)


On Mar 14, 2010, at 12:55 PM, Philippe Marschall wrote:

> On 11.03.2010 14:24, stephane ducasse wrote:
>> Hi guys
>>
>> tristan is a new student here and he would like to work on collection optimization and implementation.
>> I would like the get some ideas from you.
>> - are there some collections that would be cool to improve?
>> - are there some collections that would be cool to have and that we do not have yet?
>
> An ordered set, use case: start up and shut down list ;-)
>
> Cheers
> Philippe
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Nicolas Cellier
Hi guys,
You should have a look at Keith's work on image startup management.
Some good ideas and MIT code could be good to
experiment/polish/integrate in Pharo.
Don't remember all the links (It's not always simple with Keith), but
here are some starters:

https://code.launchpad.net/~keithy/
https://code.launchpad.net/Cuis
http://vimeo.com/9392990

Cheers

Nicolas

2010/3/14 Stéphane Ducasse <[hidden email]>:

> lol
>
> ;)
>
> we beat them :)
>
>
> On Mar 14, 2010, at 12:55 PM, Philippe Marschall wrote:
>
>> On 11.03.2010 14:24, stephane ducasse wrote:
>>> Hi guys
>>>
>>> tristan is a new student here and he would like to work on collection optimization and implementation.
>>> I would like the get some ideas from you.
>>>      - are there some collections that would be cool to improve?
>>>      - are there some collections that would be cool to have and that we do not have yet?
>>
>> An ordered set, use case: start up and shut down list ;-)
>>
>> Cheers
>> Philippe
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Stéphane Ducasse
Yes we talked about that.
What we would like to do is to use pragma to avoid to have a

startupLevel
        ^ 100

method

Stef

On Mar 14, 2010, at 2:01 PM, Nicolas Cellier wrote:

> Hi guys,
> You should have a look at Keith's work on image startup management.
> Some good ideas and MIT code could be good to
> experiment/polish/integrate in Pharo.
> Don't remember all the links (It's not always simple with Keith), but
> here are some starters:
>
> https://code.launchpad.net/~keithy/
> https://code.launchpad.net/Cuis
> http://vimeo.com/9392990
>
> Cheers
>
> Nicolas
>
> 2010/3/14 Stéphane Ducasse <[hidden email]>:
>> lol
>>
>> ;)
>>
>> we beat them :)
>>
>>
>> On Mar 14, 2010, at 12:55 PM, Philippe Marschall wrote:
>>
>>> On 11.03.2010 14:24, stephane ducasse wrote:
>>>> Hi guys
>>>>
>>>> tristan is a new student here and he would like to work on collection optimization and implementation.
>>>> I would like the get some ideas from you.
>>>>      - are there some collections that would be cool to improve?
>>>>      - are there some collections that would be cool to have and that we do not have yet?
>>>
>>> An ordered set, use case: start up and shut down list ;-)
>>>
>>> Cheers
>>> Philippe
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Igor Stasenko
On 14 March 2010 15:24, Stéphane Ducasse <[hidden email]> wrote:
> Yes we talked about that.
> What we would like to do is to use pragma to avoid to have a
>
> startupLevel
>        ^ 100
>
> method
>
err, but you still need to have a method, where this pragma will be located :)

> Stef
>
> On Mar 14, 2010, at 2:01 PM, Nicolas Cellier wrote:
>
>> Hi guys,
>> You should have a look at Keith's work on image startup management.
>> Some good ideas and MIT code could be good to
>> experiment/polish/integrate in Pharo.
>> Don't remember all the links (It's not always simple with Keith), but
>> here are some starters:
>>
>> https://code.launchpad.net/~keithy/
>> https://code.launchpad.net/Cuis
>> http://vimeo.com/9392990
>>
>> Cheers
>>
>> Nicolas
>>
>> 2010/3/14 Stéphane Ducasse <[hidden email]>:
>>> lol
>>>
>>> ;)
>>>
>>> we beat them :)
>>>
>>>
>>> On Mar 14, 2010, at 12:55 PM, Philippe Marschall wrote:
>>>
>>>> On 11.03.2010 14:24, stephane ducasse wrote:
>>>>> Hi guys
>>>>>
>>>>> tristan is a new student here and he would like to work on collection optimization and implementation.
>>>>> I would like the get some ideas from you.
>>>>>      - are there some collections that would be cool to improve?
>>>>>      - are there some collections that would be cool to have and that we do not have yet?
>>>>
>>>> An ordered set, use case: start up and shut down list ;-)
>>>>
>>>> Cheers
>>>> Philippe
>>>>
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Lukas Renggli
>> startupLevel
>>        ^ 100
>>
>> method
>>
> err, but you still need to have a method, where this pragma will be located :)

Yes, in the startup method itself.

The #startUp, #shutDown, #cleanUp protocol is quite strange. They are
all defined as empty methods in Behavior, but for #startUp and
#shutDown a registration is required. This registration is missing in
some cases. #cleanUp does not require a registration. In all cases
cleanUp just delegates to one or more other methods that do the actual
cleanup.

What I propose is to use pragmas for that. This allows to drop all the
existing implementors of #startUp, #shutDown, and #cleanUp and give
them intention revealing names. Also I envision getting rid of these
ugly boolean flags that are never quite clear what they do and what is
the default. I imagine the following 6 annotations:

   <systemStartup: aPriorityInteger>
   <systemResumption: aPriorityInteger>

   <systemShutdown: aPriorityInteger>
   <systemSuspension: aPriorityInteger>

   <systemCleanup: aPriorityInteger>
   <systemCleanupAgressive: aPriorityInteger>

This means for example that HandMorph
class>>#clearCompositionWindowManager could simply look likes this:

HandMorph class>>clearCompositionWindowManager
        <systemStartup: 100>

        CompositionWindowManager := nil

The #startUp and the code that registers and unregisters from the
startup list is no longer necessary.

Lukas

--
Lukas Renggli
http://www.lukas-renggli.ch

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Igor Stasenko
On 14 March 2010 17:12, Lukas Renggli <[hidden email]> wrote:

>>> startupLevel
>>>        ^ 100
>>>
>>> method
>>>
>> err, but you still need to have a method, where this pragma will be located :)
>
> Yes, in the startup method itself.
>
> The #startUp, #shutDown, #cleanUp protocol is quite strange. They are
> all defined as empty methods in Behavior, but for #startUp and
> #shutDown a registration is required. This registration is missing in
> some cases. #cleanUp does not require a registration. In all cases
> cleanUp just delegates to one or more other methods that do the actual
> cleanup.
>
> What I propose is to use pragmas for that. This allows to drop all the
> existing implementors of #startUp, #shutDown, and #cleanUp and give
> them intention revealing names. Also I envision getting rid of these
> ugly boolean flags that are never quite clear what they do and what is
> the default. I imagine the following 6 annotations:
>
>   <systemStartup: aPriorityInteger>
>   <systemResumption: aPriorityInteger>
>
>   <systemShutdown: aPriorityInteger>
>   <systemSuspension: aPriorityInteger>
>
>   <systemCleanup: aPriorityInteger>
>   <systemCleanupAgressive: aPriorityInteger>
>
> This means for example that HandMorph
> class>>#clearCompositionWindowManager could simply look likes this:
>
> HandMorph class>>clearCompositionWindowManager
>        <systemStartup: 100>
>
>        CompositionWindowManager := nil
>
> The #startUp and the code that registers and unregisters from the
> startup list is no longer necessary.
>

Good point.

> Lukas
>
> --
> Lukas Renggli
> http://www.lukas-renggli.ch
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Miguel Cobá
In reply to this post by Lukas Renggli
El dom, 14-03-2010 a las 16:12 +0100, Lukas Renggli escribió:

> >> startupLevel
> >>        ^ 100
> >>
> >> method
> >>
> > err, but you still need to have a method, where this pragma will be located :)
>
> Yes, in the startup method itself.
>
> The #startUp, #shutDown, #cleanUp protocol is quite strange. They are
> all defined as empty methods in Behavior, but for #startUp and
> #shutDown a registration is required. This registration is missing in
> some cases. #cleanUp does not require a registration. In all cases
> cleanUp just delegates to one or more other methods that do the actual
> cleanup.
>
> What I propose is to use pragmas for that. This allows to drop all the
> existing implementors of #startUp, #shutDown, and #cleanUp and give
> them intention revealing names. Also I envision getting rid of these
> ugly boolean flags that are never quite clear what they do and what is
> the default. I imagine the following 6 annotations:
>
>    <systemStartup: aPriorityInteger>
>    <systemResumption: aPriorityInteger>
>
>    <systemShutdown: aPriorityInteger>
>    <systemSuspension: aPriorityInteger>
>
>    <systemCleanup: aPriorityInteger>
>    <systemCleanupAgressive: aPriorityInteger>
>
> This means for example that HandMorph
> class>>#clearCompositionWindowManager could simply look likes this:
>
> HandMorph class>>clearCompositionWindowManager
> <systemStartup: 100>
>
> CompositionWindowManager := nil
>
> The #startUp and the code that registers and unregisters from the
> startup list is no longer necessary.
>

But isn't this the rationale for using annotations on Java for example,
where after a while you don't know what a given annotation does because
the logic of working is somewhere else.
I prefer a single standardized message, just like "new" and "initialize"
that have well stated intentions and not convert smalltalk in a soup of
annotations like Java currently is.

My 2 cents.

> Lukas
>

--
Miguel Cobá
http://miguel.leugim.com.mx


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Lukas Renggli
> where after a while you don't know what a given annotation does because
> the logic of working is somewhere else.
> I prefer a single standardized message, just like "new" and "initialize"
> that have well stated intentions and not convert smalltalk in a soup of
> annotations like Java currently is.

What about selecting the annotation and looking for its senders? The
annotation doesn't change *anything* in that regard.

Lukas

--
Lukas Renggli
http://www.lukas-renggli.ch

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Collection

Tristan Bourgois
Hi,

I am student who work on the project. I was afforded a thesis which has roughly the same project. They had the idea to redo the hierarchy of collections. So why not do not do it? I am not an expert but, perhaps we can simplify it?
This is the thesis in spanish: Reingenier-a_de_Jerarqu-as_Polim-rficas_Utilizando_Traits_-_Tesis_de_Licenciatura_-_Acciaresi_Cla.pdf. (you can find the presentation of the new hierarchy at page 3)

If you agree with the reimplementation of the hierarchy of collections you can propose ideas! :)

Tristan Bourgois
12