<div dir="ltr"><div dir="auto">This makes perfect sense. Great explanation. Thanks!</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 6, 2023 at 5:58 PM <<a href="mailto:ken.dickey@whidbey.com">ken.dickey@whidbey.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 2023-03-06 14:19, Alexandre Rousseau via Cuis-dev wrote:<br>
<br>
> Hi. I'm reading the CUIS book. This has been a good, pleasant <br>
> experience thus far.<br>
<br>
Happy to hear that this is the case.<br>
<br>
<br>
> Appending G lists the (package) source for SpaceWar. For various <br>
> reasons, I decided to enter the contents of that package manually, via <br>
> the browser, rather than install it by package loading.<br>
> <br>
> And this when I stumbled on the last 2 lines of that package:<br>
> <br>
> SpaceShip initialize!<br>
> Torpedo initialize!<br>
> <br>
> These 2 lines don't seem to belong to a method.<br>
<br>
Smalltalk tries hard to keep source code and the live data and compiled  <br>
runtime in synch so that you can go back and forth between source and <br>
compiled code and data.  Another way of saying this is that many <br>
programming languages "compile away" the "metadata".  Smalltalk keeps <br>
the metadata, so that you get great "source level" inspection and <br>
debugging.<br>
<br>
While the Chunk File Format must be formally "strict" so that it can be <br>
read in by the VM, it is sometimes helpful to be able to easily read <br>
Package and Change files ourselves.<br>
<br>
In the Code Browser, when you create an #initialize method for a Class, <br>
the method is invoked when it is compiled.<br>
<br>
For packaged code, the method is compiled but is _not_ invoked until all <br>
the code in the package has been loaded.  This is to be sure that the <br>
things an #initialize method needs to do have their code installed <br>
first.<br>
<br>
So each Class #initialize method included in a Package is invoked at the <br>
end of that Package.<br>
<br>
So like other Package business (comment, provides, requires) Class <br>
Initialization is just a bit of mechanics which is "spelled out" in <br>
text.<br>
<br>
HTH,<br>
-KenD<br>
</blockquote></div>