Re: VM images and working in the VM image
stephane ducasse <[email protected]> Sun, 13 May 2007 13:30:46 +0200
| Newsgroups | gmane.comp.lang.smalltalk.strongtalk |
|---|---|
| Message-ID | <[email protected]> |
I agree :) So people can have bth worlds advantage (image for saving when going for coffee breaks) and rebuilding them from scratch for solid process. Stef >> I rebuild my image from scratch each time I start programming. > > I also work rebuilding the image each time I start to work. > Working with objects are not related with snapshot mechanism > and it is very powerfull to have both. The image based mechanism > for people/situations that want/need to save the image, > and a more modular approach for framework based work > (and as a result of cristalization of domain models). > >> We could have a Smalltalk (squeak on day) or I guess that GNU is >> doing that, that starts >> with a minikernel seed and load compiled code. There is nothing at >> the model level that prevents that. > > In 1995 Visual Smalltalk has support for it and some tools > to support layered integration of development based on > "compiled behavior". > I has had implemented them for Smalltalk/V in 1993/94 > and really appreciate the value of modular construction > from this point in time. > When you start to work this way it is difficult to feel confortable > with image based development and also > with source code based programming. > > Starting from scratch is very interesting to be alerted when > we forget to initialize something properly. > To be forced to initialize always before using objects is really > too restrictive and distract when you really do not want to > be distracted with implementation details. On the other hand, > initializing one time (e.g. in an inspector) and never initialize > again is the risk of working with images (make systems non > portable, state dependent or ported at higer costs). > Rebuilding on each startime is the right place to "be surprised", > because you are starting the work (early in the morning? :) > and has an instructive effect that make people correct > the way they are working (paying for the mistake but not > been distracted when they are thinking in the system). > > cheers, > Ale. > > > > ----- Original Message ----- > From: "stephane ducasse" <[email protected]> > To: <[email protected]> > Sent: Sunday, May 13, 2007 7:20 AM > Subject: Re: VM images and working in the VM image > > >> >> from a model point of view, what you can do in java is the same in >> smalltalk. >> S# for example has a mini core (bytecode+ objects) and load package >> on the fly. >> Now in Smalltalk you can save your code in files and versionned them >> if you want. >> >> What you should know is that you have other mechanisms that help you: >> - in VW I used a DB backend >> in VW (because they have engineers you can load parcel = bytecode >> and serialized objects >> without compiling the code at load time >> - in Squeak I used monticello that version source files >> >> Normally these approaches are more adpated since they know that there >> are versioning >> Smalltalk code so the underluying metamodel is cleverer than mere >> text file. >> >> Now what I want to say is that the idea of an image = a cache of >> method and objects >> is good but it is not really a good engineering metaphor. It is cool >> and cosy (imagine I can >> send you my image on Mac and you can see exactly where my PC pointer >> is on the stack is, then you can proceed.....debug webserver on the >> fly while they are running) but usually >> I rebuild my image from scratch each time I start programming. >> We could have a Smalltalk (squeak on day) or I guess that GNU is >> doing that, that starts >> with a minikernel seed and load compiled code. There is nothing at >> the model level that prevents >> that. >> >> Stef >> On 12 mai 07, at 23:24, Richard wrote: >> >>> >>> Coming from a background of C++, Ruby and Java I'm used the idea >>> that >>> you program in an IDE and then you output a Jar, or a bunch of >>> shared >>> libraries and executables. This process involves selecting which >>> packages you want to use and it also involves people sorting their >>> software into packages and declairing package dependencies. It seems >>> to me (and I don't have much experience with smalltalk) that one >>> has >>> one big VM image containing the IDE and the program being developed, >>> but if I write a webserver for instance when I deploy the >>> webserver in >>> production I don't want the IDE as part of it (probably I want to be >>> able to attach a debugger via a TCP connection, but that is another >>> issue). >>> >>> Does strongtalk support the notion of packages in a similar way to >>> Java? Can I write a package in strongtalk, declare its dependencies, >>> then create a VM image that just contains my software and its >>> dependencies (transitive closure obviously)? >>> >>> I also want to keep all my source code in files on the disk. That >>> way >>> I can use existing source control systems. It must be easy to >>> have the >>> VM (well some objects probably) watching the source files and reload >>> them if they change. That way at least one can operate even if one >>> doesn't yet have a GUI (e.g. the present situation with linux and >>> strongtalk). The file system is also a bit more trustworthy than a >>> running executable, e.g. if my power goes off then files are ok, but >>> the VM image is gone. Also source files normally don't get >>> corrupted, >>> but I'm afraid that if the power goes off while I'm saving a VM >>> image >>> it might get corrupted. >>> >>> I think its an advantage to support more than one GUI system because >>> not everyone wants the same thing (some people want a GUI system >>> that >>> behaves like the common ones, some people want to try something >>> radiacally new). In the beginning lots of people can start making >>> GUI >>> systems, but after a while those that are good become apparent and >>> more effort goes into them. >>> >>> It seems to me that package dependancies are as simple as nominating >>> one package for each class, and some number of dependent packages. >>> Then having the class loader disallow the loading of any class who's >>> dependent packages can't be located. It is quite usefull to make >>> packages into a tree, i.e. java.swing.controllers being a subpackage >>> of java.swing. >>> >>> Packages can do other things, like static initialization, but I >>> don't >>> know of too many situations where one really needs static >>> initialization other than for factories which seems to be a less >>> important idiom in languages that support reflection. >>> >>> regards, >>> >>> Richard. >>> >>> >>>> >> >> >>> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Strongtalk-general" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/strongtalk-general?hl=en -~----------~----~----~----~------~----~------~--~---