idea to have a better methodFinder :)

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

idea to have a better methodFinder :)

Stéphane Ducasse
Hi

the methodFInder hard codes the methods that should not be executed.
Now with pragma we should be able to have a fully dynamic method  
finder where nothing is hardcoded.
If somebody wants to give a try it would be great because MF is a cool  
tool. Now too static.

Stef

_______________________________________________
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: idea to have a better methodFinder :)

Mariano Martinez Peck


On Sun, Jun 14, 2009 at 5:59 PM, Stéphane Ducasse <[hidden email]> wrote:
Hi

the methodFInder hard codes the methods that should not be executed.
Now with pragma we should be able to have a fully dynamic method
finder where nothing is hardcoded.
If somebody wants to give a try it would be great because MF is a cool
tool. Now too static.

I don't know what Pragma is, but Algernon seems VERY good from my point of view. I used it a lot in Squeak and now I really miss it on Pharo. Algernon authors won't port it to Pharo (I asked them). Perhaps when Pharo 1.0 is released I can spend some time to make it work.
 

Stef

_______________________________________________
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: idea to have a better methodFinder :)

Marcus Denker-3

On 16.06.2009, at 19:12, Mariano Martinez Peck wrote:

>
>
> On Sun, Jun 14, 2009 at 5:59 PM, Stéphane Ducasse <[hidden email]
> > wrote:
> Hi
>
> the methodFInder hard codes the methods that should not be executed.
> Now with pragma we should be able to have a fully dynamic method
> finder where nothing is hardcoded.
> If somebody wants to give a try it would be great because MF is a cool
> tool. Now too static.
>
> I don't know what Pragma is, but Algernon seems VERY good from my  
> point of view. I used it a lot in Squeak and now I really miss it on  
> Pharo. Algernon authors won't port it to Pharo (I asked them).  
> Perhaps when Pharo 1.0 is released I can spend some time to make it  
> work.
>
What is Algernon?

        Marcus

--
Marcus Denker - http://marcusdenker.de
PLEIAD Lab - Computer Science Department (DCC) - University of Chile


_______________________________________________
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: idea to have a better methodFinder :)

Mariano Martinez Peck


On Tue, Jun 16, 2009 at 8:16 PM, Marcus Denker <[hidden email]> wrote:

On 16.06.2009, at 19:12, Mariano Martinez Peck wrote:

>
>
> On Sun, Jun 14, 2009 at 5:59 PM, Stéphane Ducasse <[hidden email]
> > wrote:
> Hi
>
> the methodFInder hard codes the methods that should not be executed.
> Now with pragma we should be able to have a fully dynamic method
> finder where nothing is hardcoded.
> If somebody wants to give a try it would be great because MF is a cool
> tool. Now too static.
>
> I don't know what Pragma is, but Algernon seems VERY good from my
> point of view. I used it a lot in Squeak and now I really miss it on
> Pharo. Algernon authors won't port it to Pharo (I asked them).
> Perhaps when Pharo 1.0 is released I can spend some time to make it
> work.
>
What is Algernon?

Its really amazing. You can give it a try. Just download latest squeak-dev from Damien and try it :)

I copy paste what squeaksource says about Algernon:

Algernon is a productivity tool for Squeak programmers; your personal assistant for Squeak. Algernon aims to make programming in Squeak faster and more keyboard centric. It provides lightning quick access to any class, method, morph, or global variable, and even gives you a quick way to evaluate Smalltalk expressions.

Press a system-wide hotkey to bring up the text box (ctrl-space by default). Start typing a class name, a morph's name, a category, or a global variable and a menu of matching items will show up and filter down as you type. Select an item from the list by navigating with the up/down arrows and hitting return. Algernon will perform a different action depending on the type of the item selected. For instance, if you selected a class or category, it will open it in a browser. If you selected a morph, a new instance of the morph will open. If you selected a global variable, an inspector will open. You can also perform actions other than the default by pressing tab and navigating a list of possible actions.

Algernon also lets you drill into categories and classes. Press the right arrow key when a class is selected and you will be presented with a list of methods in that class, which you can then filter down by typing. Similarly, press the right arrow key when a category is selected and you will be presented with a list of its classes. Press the left arrow key at any point to go back to global searching.

Algernon also has the capability to evaluate any one line Smalltalk expression. In this way Algernon can act as a mini workspace. Just bring up Algernon and type = and you will enter the expression mode. Type your expression (e.g., 3+5) and hit return to print the result on the Transcript. You can see a list of other actions by pressing the tab key.

Algernon is also intelligent (it was named this way for a reason!). It will learn which items you open most often and will sort those higher in the list each time you use them. It will even learn which actions you like to associate with each item.

Enjoy using Algernon, and we hope you love it as much as we do!

 

       Marcus

--
Marcus Denker - http://marcusdenker.de
PLEIAD Lab - Computer Science Department (DCC) - University of Chile


_______________________________________________
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: idea to have a better methodFinder :)

Stéphane Ducasse
In reply to this post by Marcus Denker-3
a quicksilver for Squeak

>>> I don't know what Pragma is, but Algernon seems VERY good from my
>> point of view. I used it a lot in Squeak and now I really miss it on
>> Pharo. Algernon authors won't port it to Pharo (I asked them).

:)
Wonderful.

>> Perhaps when Pharo 1.0 is released I can spend some time to make it
>> work.
>>
> What is Algernon?
>
> Marcus
>
> --
> Marcus Denker - http://marcusdenker.de
> PLEIAD Lab - Computer Science Department (DCC) - University of Chile
>
>
> _______________________________________________
> 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: idea to have a better methodFinder :)

EstebanLM
In short, Algernon is like spotligth for squeak :)
I use it a LOT. So, I will port it to pharo as soon as I can find a
little time.

Said so, I need to advice: algernon and method finder are very diferent
tools (I use both)

Cheers,
Esteban

On 2009-06-17 07:15:17 -0300, Stéphane Ducasse
<[hidden email]> said:

> a quicksilver for Squeak
>
>>>> I don't know what Pragma is, but Algernon seems VERY good from my
>>> point of view. I used it a lot in Squeak and now I really miss it on
>>> Pharo. Algernon authors won't port it to Pharo (I asked them).
>
> :)
> Wonderful.
>
>>> Perhaps when Pharo 1.0 is released I can spend some time to make it
>>> work.
>>>
>> What is Algernon?
>>
>> Marcus
>>
>> --
>> Marcus Denker - http://marcusdenker.de
>> PLEIAD Lab - Computer Science Department (DCC) - University of Chile
>>
>>
>> _______________________________________________
>> 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: idea to have a better methodFinder :)

Brian Brown-6
In reply to this post by Stéphane Ducasse


> a quicksilver for Squeak

Exactly right.

_______________________________________________
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: idea to have a better methodFinder :)

vonbecmann

where can i find Pragma? do you have a link?
because i couldnt find it.

thanks

On Wed, Jun 17, 2009 at 4:36 PM, Brian Brown <[hidden email]> wrote:


> a quicksilver for Squeak

Exactly right.

_______________________________________________
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: idea to have a better methodFinder :)

Marcus Denker-3

On 17.06.2009, at 16:16, Bernardo Ezequiel Contreras wrote:

>
> where can i find Pragma? do you have a link?
> because i couldnt find it.
>

Pragma is a class. Can be found in Squeak 3.9 and Pharo, it was  
introduced to Smalltalk
in VisualWorks, I think, and brought to Squeak by Lukas in 3.9 (put on  
top of a property
interface for methods inspired by Tweak).

The idea is the following: In Smalltalk, there is a special syntax for  
Primitives:

+ aNumber

        <primitive: 1>
        ^ super + aNumber


Why not provide a more general concept where we can use the <selector:  
arg> syntax to put meta-annotations
in methods? And that's what pragmas are. (Conversely, in Squeak 3.9  
and Pharo, primitives are pragmas and not
special syntax).

tt
        <hello: #world>


is perfectly fine. For what can this now be used? One idea is meta-
annotations. For example, SLint is a useful
code-critic tool. But sometimes, it's wrong. So you can put a Pragma  
that communicates to SUnit: please don't
report the problem X, because I decided it is none.
Another example would be the MethodFinder. The example-mode of the  
method finder allows you to give an example
and executes all methods of the system to find one that does what your  
example requests.

e.g.  3. 4. 7

it finds 3 + 4, 3 bitOr: 4 and 3 bitXor: 4.

Of course, executing just every method could lead to problems if the  
method has side-effects. (Like, quitting the
image). Thus, the MethodFinder has lists of methods that should not be  
called (#noteDangerous). Of course, this
means that all selectors are hard-coded. And one can not use this  
valuable information for other cases.
One thing to think about would be to add a "this method has a bad side-
effect" annotation. (maybe. Maybe this will
not scale and just clutter the system. But it's worth a try).

Back to Pragma: on the class-side there are some convenience methods,  
e.g.

        Pragma allNamed: #primitive: in: SmallInteger

returns all pragmas in class SmallInteger. (and the pragma references  
the method it is installed in, which in
turn knows it's class and selector).

        Marcus

--
Marcus Denker - http://marcusdenker.de
PLEIAD Lab - Computer Science Department (DCC) - University of Chile


_______________________________________________
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: idea to have a better methodFinder :)

Alain Plantec-4
PragmaCollector could be very useful for the purpose of collecting
pragma for a MethodFinder (or other client)
I can provide more help if needed.
Alain


Marcus Denker a écrit :

> On 17.06.2009, at 16:16, Bernardo Ezequiel Contreras wrote:
>
>  
>> where can i find Pragma? do you have a link?
>> because i couldnt find it.
>>
>>    
>
> Pragma is a class. Can be found in Squeak 3.9 and Pharo, it was  
> introduced to Smalltalk
> in VisualWorks, I think, and brought to Squeak by Lukas in 3.9 (put on  
> top of a property
> interface for methods inspired by Tweak).
>
> The idea is the following: In Smalltalk, there is a special syntax for  
> Primitives:
>
> + aNumber
>
> <primitive: 1>
> ^ super + aNumber
>
>
> Why not provide a more general concept where we can use the <selector:  
> arg> syntax to put meta-annotations
> in methods? And that's what pragmas are. (Conversely, in Squeak 3.9  
> and Pharo, primitives are pragmas and not
> special syntax).
>
> tt
> <hello: #world>
>
>
> is perfectly fine. For what can this now be used? One idea is meta-
> annotations. For example, SLint is a useful
> code-critic tool. But sometimes, it's wrong. So you can put a Pragma  
> that communicates to SUnit: please don't
> report the problem X, because I decided it is none.
> Another example would be the MethodFinder. The example-mode of the  
> method finder allows you to give an example
> and executes all methods of the system to find one that does what your  
> example requests.
>
> e.g.  3. 4. 7
>
> it finds 3 + 4, 3 bitOr: 4 and 3 bitXor: 4.
>
> Of course, executing just every method could lead to problems if the  
> method has side-effects. (Like, quitting the
> image). Thus, the MethodFinder has lists of methods that should not be  
> called (#noteDangerous). Of course, this
> means that all selectors are hard-coded. And one can not use this  
> valuable information for other cases.
> One thing to think about would be to add a "this method has a bad side-
> effect" annotation. (maybe. Maybe this will
> not scale and just clutter the system. But it's worth a try).
>
> Back to Pragma: on the class-side there are some convenience methods,  
> e.g.
>
> Pragma allNamed: #primitive: in: SmallInteger
>
> returns all pragmas in class SmallInteger. (and the pragma references  
> the method it is installed in, which in
> turn knows it's class and selector).
>
> Marcus
>
> --
> Marcus Denker - http://marcusdenker.de
> PLEIAD Lab - Computer Science Department (DCC) - University of Chile
>
>
> _______________________________________________
> 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: idea to have a better methodFinder :)

Stéphane Ducasse
I have to check it :)
but may be it should be part of the pragma core package.

Stef
On Jun 18, 2009, at 8:05 AM, Alain Plantec wrote:

> PragmaCollector could be very useful for the purpose of collecting
> pragma for a MethodFinder (or other client)
> I can provide more help if needed.
> Alain
>
>
> Marcus Denker a écrit :
>> On 17.06.2009, at 16:16, Bernardo Ezequiel Contreras wrote:
>>
>>
>>> where can i find Pragma? do you have a link?
>>> because i couldnt find it.
>>>
>>>
>>
>> Pragma is a class. Can be found in Squeak 3.9 and Pharo, it was
>> introduced to Smalltalk
>> in VisualWorks, I think, and brought to Squeak by Lukas in 3.9 (put  
>> on
>> top of a property
>> interface for methods inspired by Tweak).
>>
>> The idea is the following: In Smalltalk, there is a special syntax  
>> for
>> Primitives:
>>
>> + aNumber
>>
>> <primitive: 1>
>> ^ super + aNumber
>>
>>
>> Why not provide a more general concept where we can use the  
>> <selector:
>> arg> syntax to put meta-annotations
>> in methods? And that's what pragmas are. (Conversely, in Squeak 3.9
>> and Pharo, primitives are pragmas and not
>> special syntax).
>>
>> tt
>> <hello: #world>
>>
>>
>> is perfectly fine. For what can this now be used? One idea is meta-
>> annotations. For example, SLint is a useful
>> code-critic tool. But sometimes, it's wrong. So you can put a Pragma
>> that communicates to SUnit: please don't
>> report the problem X, because I decided it is none.
>> Another example would be the MethodFinder. The example-mode of the
>> method finder allows you to give an example
>> and executes all methods of the system to find one that does what  
>> your
>> example requests.
>>
>> e.g.  3. 4. 7
>>
>> it finds 3 + 4, 3 bitOr: 4 and 3 bitXor: 4.
>>
>> Of course, executing just every method could lead to problems if the
>> method has side-effects. (Like, quitting the
>> image). Thus, the MethodFinder has lists of methods that should not  
>> be
>> called (#noteDangerous). Of course, this
>> means that all selectors are hard-coded. And one can not use this
>> valuable information for other cases.
>> One thing to think about would be to add a "this method has a bad  
>> side-
>> effect" annotation. (maybe. Maybe this will
>> not scale and just clutter the system. But it's worth a try).
>>
>> Back to Pragma: on the class-side there are some convenience methods,
>> e.g.
>>
>> Pragma allNamed: #primitive: in: SmallInteger
>>
>> returns all pragmas in class SmallInteger. (and the pragma references
>> the method it is installed in, which in
>> turn knows it's class and selector).
>>
>> Marcus
>>
>> --
>> Marcus Denker - http://marcusdenker.de
>> PLEIAD Lab - Computer Science Department (DCC) - University of Chile
>>
>>
>> _______________________________________________
>> 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