Spoon progress 15 April 2005: inert method deletion details and next steps

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

Re: Spoon progress 15 April 2006: inert method deletion details etc.

Bert Freudenberg-3
Am 17.04.2006 um 23:07 schrieb Chris Muller:

>
>>    I must admit (not surprisingly :) that I'm a fan of using test  
>> cases to
>> establish coverage, and improving the test cases over time. I also  
>> think
>> this is markedly different than static typing advocacy; in fact, I  
>> think
>> they're near polar opposites. The static typing people seem to  
>> want to
>> use it in large part as a hedge against testing. I think testing is
>> critical and unavoidable, and we may as well use the information  
>> we get
>> from it to the fullest. But sure, there are still pitfalls to deal  
>> with.
>
>  Well I've never met anyone even in the Java world who was really  
> serious when they said, "hey, it compiles, let's go to production..!"

Actually I have heard exactly this statement from students - "it  
compiles, so it must be right". The compiler's type checking is there  
so you can only write correct programs, right?

- Bert -


Reply | Threaded
Open this post in threaded view
|

static/dynamic typing (was Re: Spoon progress 15 April 2006: inert method deletion details etc.)

Dave Mason-4
Bert Freudenberg wrote:

> Actually I have heard exactly this statement from students - "it
> compiles, so it must be right". The compiler's type checking is there
> so you can only write correct programs, right?

This is actually almost true in ML or Haskell (functional-programming
languages), where you actually have a powerful, completely-static type
system.  90+% of the time the only errors would be off-by-one or other
indexing-type errors (the type system does not address array or list
sizes).  Mind you, this was true for some very good programmers (I had
about 25 years experience at the time) who certainly weren't programming
by random code permutation.

Unfortunately, Java (and any other known OO language) doesn't have
nearly strong enough static type systems (the
co-variance/contra-variance problem).  That's why I've always been a
proponent of dynamic typing for OO.  (And even in the functional world,
I could never really decide between Scheme (dynamic) and ML (static).)

../Dave

Reply | Threaded
Open this post in threaded view
|

Re: Spoon progress 15 April 2005: inert method deletion details and next steps

stéphane ducasse-2
In reply to this post by stéphane ducasse-2
I resent it because I got no answer

> Hi craig
>
> This is cool. Do you have a description of Naiad?
> What is a naiad modules? I'm really interested in knowing that and  
> what we could do with them + improving if necessary. I would like  
> to push in my new lab a work on remodularizing OO systems and I  
> would like to use squeak as a case study (of course) So we could do  
> more traditional code analysis or your imprint.
> Are other people welcome to use and build on top of spoon and Naiad?
> How do you see possible collaboration?
>
>> Ideally, I'd like the new modules to contain well-factored and  
>> highly-readable expressions of the ideas of the old subsystems,  
>> rather than just blind repackagings, but we'll see... it's  
>> tempting to just imprint things to save time. :)
>
> You mean that you would like to rewrite some parts?
>
> Stef
>
>
>
>


Reply | Threaded
Open this post in threaded view
|

re: Naiad (was "Spoon progress 15 April 2006")

ccrraaiigg
In reply to this post by stéphane ducasse-2

Hi Stef--

 > Do you have a description of Naiad?

        Not a proper one, no. There's just the Spoon mailing list archives[1]
and my "position statement" at Dan's request for the modules mailing
list[2]. Soon... I'm hoping we can still discuss what we want such a
system to do in the meantime, though.

 > What is a Naiad module?

        Currently, it's an object with:

- an ID
- added method IDs
- removed method IDs
- removed class IDs
- a name
- a description
- an author ID
- an initialization block
- prerequisite module IDs
- component module IDs

        IDs are all Leach/Salz UUIDs. Two modules, each resident in different
object memories, can synchronize their respective systems via remote
messaging. The requesting module asks the providing module to
synchronize the two systems. The providing module:

- ensures that its author is defined in the requesting system
- has its prerequisite modules synchronize with the requesting system
- defines its added methods
- removes its removed methods
- removes its removed classes
- synchronizes its component modules with the requesting system

        The requesting module, now equivalent to the providing module, runs the
initialization block. (Note that the receiving system can now act as a
provider to other systems.) The actual system changes made during the
synchronization depend on the initial state of the requesting system.
Many of the pitfalls of fileouts are avoided, since the author doesn't
have to second-guess the initial state of the requesting system. The
requesting and providing systems can work through their differences
almost entirely on their own. The information exchanged is not static,
as with a fileout or similar.

        Requested methods can define their literals properly in the requesting
system, including defining new classes when necessary.

        I've implemented a system for expressing Naiad commands as URLs. Such a
URL, when selected, issues a command to the Spoon system running on
localhost. The so-called "path" segment of a link is a text-encoded
action, which the local Spoon webserver evaluates.

        There are several different commands: for quitting Spoon, making a
snapshot, installing modules, and so on. A module installation command
contains the hostname and port of the machine serving the module, and
the module's UUID. The receiving Spoon system uses this information to
create a remote-messaging connection between itself and the serving
system; the two systems then synchronize themselves via remote messages.

        See [3] for an example of a Naiad link.

        One simple way of enabling module discovery is simply to publish lists
of Naiad links on webpages, with module cataloging information, and let
Google do the indexing. I also intend to create a more integrated
discovery system with Spoon systems in a relay architecture, similar to IRC.

 > I'm really interested in knowing that and what we could do with them +
 > improving if necessary.

        Now's a good time to discuss the design. What would you like it to do?

 > Are other people welcome to use and build on top of spoon and Naiad?

        Yes, see [4] (which has been in effect since the first public release,
of 14 February 2004).

 > How do you see possible collaboration?

        I'm all for it. :)  Is there something more specific you want to know?

 > > Ideally, I'd like the new modules to contain well-factored and
 > > highly-readable expressions of the ideas of the old subsystems,
 > > rather than just blind repackagings, but we'll see... it's tempting
 > > to just imprint things to save time. :)
 >
 > You mean that you would like to rewrite some parts?

        Yes, particularly the virtual machine implementation. I think it could
be much clearer in many places.


        thanks!

-C

[1] http://lists.squeakfoundation.org/pipermail/spoon
[2] http://minnow.cc.gatech.edu/squeak/5618
[3] http://netjam.org/spoon/modules
[4] http://netjam.org/spoon/releases/current/frame.php#license

--
Craig Latta
improvisational musical informaticist
www.netjam.org
Smalltalkers do: [:it | All with: Class, (And love: it)]



Reply | Threaded
Open this post in threaded view
|

Re: Spoon progress 15 April 2005: inert method deletion details and next steps

ccrraaiigg
In reply to this post by stéphane ducasse-2

 > I resent it because I got no answer

        I got it the first time, but was busy doing other things at the time. :)


-C

--
Craig Latta
improvisational musical informaticist
www.netjam.org
Smalltalkers do: [:it | All with: Class, (And love: it)]



Reply | Threaded
Open this post in threaded view
|

Re: Spoon progress 15 April 2006: inert method deletion details etc.

SmallSqueak
In reply to this post by ccrraaiigg
Hi Craig,

>
> Wow, it took me over a day to realize I'd written the wrong year in the
> original subject line. :)
>

    At first I thought you meant 15 April 2004 ;-)

    But after reading the subject line again, it's 15 April 2006.

    Is there any chance that it's still off by half a moon ;-)

    Cheers,

    SmallSqueak


12