<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 77.95pt 1.0in 77.95pt;}
div.Section1
        {page:Section1;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>Thus spake Yanni Chiu:<o:p></o:p></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'> <i><span style='font-style:italic'>Something
that's missing in the discussion is what level<o:p></o:p></span></i></span></font></p>
<p class=MsoPlainText><i><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-style:italic'> of
abstraction we're dealing with. If you're packaging<o:p></o:p></span></font></i></p>
<p class=MsoPlainText><i><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-style:italic'> a
large domain of objects, then package==namespace makes<o:p></o:p></span></font></i></p>
<p class=MsoPlainText><i><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-style:italic'> sense.
But if you're packaging a few enhancement methods,<o:p></o:p></span></font></i></p>
<p class=MsoPlainText><i><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-style:italic'> then
package==namespace, seems wrong.<o:p></o:p></span></font></i></p>
<p class=MsoPlainText><i><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt;color:black;font-style:italic'><o:p> </o:p></span></font></i></p>
<p class=MsoPlainText><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt;color:black'>Agreed.<o:p></o:p></span></font></p>
<p class=MsoPlainText><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt;color:black'><o:p> </o:p></span></font></p>
<p class=MsoPlainText><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt;color:black'>Another issue is “private”
versus “public” declarations. Not all global variables
declared in a module should be “exported” by the module as “public”
names. One way to implement this is to use “private”
auxilliary namespaces that are not organically bound to any particular module.
This idea so similar to pool dictionaries that it makes a lot of sense to merge
the two concepts. <o:p></o:p></span></font></p>
<p class=MsoPlainText><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt;color:black'><o:p> </o:p></span></font></p>
<p class=MsoPlainText><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt;color:black'>Also required is separating the issue of
the namespace in which a class is declared from the issue of the set of
namespaces whose bindings it imports (although it shouldn’t be necessary for
a class to explicitly import the namespace in which it is declared.)<o:p></o:p></span></font></p>
<p class=MsoPlainText><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt;color:black'><o:p> </o:p></span></font></p>
<p class=MsoPlainText><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt;color:black'>Finally, for some of the reasons Yanni
mentioned (which I didn’t quote,) it is important to separate the issue
of class, module and namespace <i><span style='font-style:italic'>identities</span></i>
from their <i><span style='font-style:italic'>names</span></i>. A
professional module/versioning system should treat names as changeable
attributive values associated with specific versions of a programming construct,
not as invariant primary keys identifying the construct diachronically for any
and all versions.<o:p></o:p></span></font></p>
<p class=MsoPlainText><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt;color:black'><o:p> </o:p></span></font></p>
<p class=MsoPlainText><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt;color:black'>--Alan<o:p></o:p></span></font></p>
<p class=MsoPlainText><i><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-style:italic'><o:p> </o:p></span></font></i></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>
</div>
</body>
</html>