<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
<br>
-------- Original Message --------
<table class="moz-email-headers-table" border="0" cellpadding="0"
cellspacing="0">
<tbody>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">From: </th>
<td>- Tue Apr 28 09:49:20 2020</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Account-Key:
</th>
<td>account2</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-UIDL: </th>
<td>UID118322-1162353124</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Mozilla-Status:
</th>
<td>0015</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Mozilla-Status2:
</th>
<td>00000000</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Mozilla-Keys:
</th>
<td><br>
</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Return-Path:
</th>
<td><a class="moz-txt-link-rfc2396E" href="mailto:luchiano@gmail.com"><luchiano@gmail.com></a></td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Delivered-To:
</th>
<td><a class="moz-txt-link-abbreviated" href="mailto:juan@jvuletich.org">juan@jvuletich.org</a></td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Received:
</th>
<td>from gator3294.hostgator.com by gator3294.hostgator.com
with LMTP id GPIkCE6up16TpwcADDBpFA (envelope-from
<a class="moz-txt-link-rfc2396E" href="mailto:luchiano@gmail.com"><luchiano@gmail.com></a>) for <a class="moz-txt-link-rfc2396E" href="mailto:juan@jvuletich.org"><juan@jvuletich.org></a>;
Mon, 27 Apr 2020 23:17:18 -0500</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Return-path:
</th>
<td><a class="moz-txt-link-rfc2396E" href="mailto:luchiano@gmail.com"><luchiano@gmail.com></a></td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Envelope-to:
</th>
<td><a class="moz-txt-link-abbreviated" href="mailto:juan@jvuletich.org">juan@jvuletich.org</a></td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Delivery-date:
</th>
<td>Mon, 27 Apr 2020 23:17:18 -0500</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Received:
</th>
<td>from mail-ot1-f41.google.com ([209.85.210.41]:33940) by
gator3294.hostgator.com with esmtps
(TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.92)
(envelope-from <a class="moz-txt-link-rfc2396E" href="mailto:luchiano@gmail.com"><luchiano@gmail.com></a>) id
1jTHgK-00288o-TO for <a class="moz-txt-link-abbreviated" href="mailto:juan@jvuletich.org">juan@jvuletich.org</a>; Mon, 27 Apr 2020
23:17:18 -0500</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Received:
</th>
<td>by mail-ot1-f41.google.com with SMTP id 72so30403982otu.1
for <a class="moz-txt-link-rfc2396E" href="mailto:juan@jvuletich.org"><juan@jvuletich.org></a>; Mon, 27 Apr 2020 21:17:11
-0700 (PDT)</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">DKIM-Signature:
</th>
<td>v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com;
s=20161025;
h=mime-version:references:in-reply-to:from:date:message-id:subject:to;
bh=pXpviDmgvdtqsVE7v+Fqpfkk9Ex3XO8+6Q7HsgGu+j0=;
b=haUBwlS/HlfLgc3nyh3d8ieK1CnXXkAW1Tq1uiU0L9aGXfeOzI3qUHUrSdJE3YoElV
dA0Tf1EDsf8TarVY13G4OnbaH4KRy1uBK2p2Dy1/1/h9sGhYf98N96FEgZiiMx6We23k
9p0SmLvWOET4GPlRScasVYPfZLnghJ8Z0U5uPMv9mtv0BtRF94a9/K8c/MACkDnYSzHV
mAa9cv/FQ+aWPmnnHjuQOT0AQETIObDhORlBCdUt+JqAnuf/OD7ECZdvwJDRDW648+cZ
b9n8q5+H9uh07Bmm1xAXjOaRxMLX9wqQ1WGbKLncgo0FVVApHQYcTc2MrNLT6tAXAEg3
hbNw==</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Google-DKIM-Signature:
</th>
<td>v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net;
s=20161025;
h=x-gm-message-state:mime-version:references:in-reply-to:from:date
:message-id:subject:to;
bh=pXpviDmgvdtqsVE7v+Fqpfkk9Ex3XO8+6Q7HsgGu+j0=;
b=RwGinnbpuHcyH/+Soazp2TIgoY9zYPfwXTGg8w5SDLDyUJ9gEjc+0dVZWAeSNW9A42
hNgYS8NAVSK7iz1eXn3Z7gIomHInbIPVBU0lAnu9OtSvdKW1C8c944lej2pz1lhaMprL
pVPIB0oqvIzGPbo+SWFa0MQlN7izj9NxWDT7NfGujvXdEnDV3Wqq8rDxew18y7LtMe1f
Ilmdb/+55aQHV6T/3rka+FwvXOwotLjAua6l7QtG7jEKk7fokn6lPA0f728kfFUZhgqA
D76SFlfFS20ZcUsTtNbcGffHPd14sNDRSF2hjCALBLRHqYMYCLfuVAZMw/0TQso1azbY
CgMw==</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Gm-Message-State:
</th>
<td>AGi0Pua2suT/8FskJIKbCZemCz+D6gqVK0Dnccpv2M2BNh8XlZgtZuJG
khMRCItHBUt0O5jpqcY5PBJ46pYaxwbxMXNmElua+A==</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Google-Smtp-Source:
</th>
<td>APiQypK7AygxBafixuAxVpOQpCbJbKYK2WoTK8hkjYA8Mgd7h7XYA8jCl81UFhwlSsEMK4Yp44m6LLhjvmZRorkcZ3U=</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Received:
</th>
<td>by 2002:a9d:544:: with SMTP id
62mr21037441otw.165.1588047425133; Mon, 27 Apr 2020 21:17:05
-0700 (PDT)</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">MIME-Version:
</th>
<td>1.0</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">References:
</th>
<td><a class="moz-txt-link-rfc2396E" href="mailto:1594F7B1-B606-4578-8067-72A662D15C44@gmail.com"><1594F7B1-B606-4578-8067-72A662D15C44@gmail.com></a>
<a class="moz-txt-link-rfc2396E" href="mailto:f4df154ddb868367f5024fd3c2a70af8@whidbey.com"><f4df154ddb868367f5024fd3c2a70af8@whidbey.com></a>
<a class="moz-txt-link-rfc2396E" href="mailto:5A6E7D79-E3B4-453C-8590-8479126475A1@gmail.com"><5A6E7D79-E3B4-453C-8590-8479126475A1@gmail.com></a>
<a class="moz-txt-link-rfc2396E" href="mailto:CAD8yvAx07GS1c1Tspn9RnGq7=i04wd13nO3w4v44t4Cod3nKJw@mail.gmail.com"><CAD8yvAx07GS1c1Tspn9RnGq7=i04wd13nO3w4v44t4Cod3nKJw@mail.gmail.com></a>
<a class="moz-txt-link-rfc2396E" href="mailto:CAL5GDypu3t92267NCPd7S6g6g55kBm5uAeEH89OFjpcazBChjg@mail.gmail.com"><CAL5GDypu3t92267NCPd7S6g6g55kBm5uAeEH89OFjpcazBChjg@mail.gmail.com></a>
<a class="moz-txt-link-rfc2396E" href="mailto:5EA74C45.4060402@jvuletich.org"><5EA74C45.4060402@jvuletich.org></a></td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">In-Reply-To:
</th>
<td><a class="moz-txt-link-rfc2396E" href="mailto:5EA74C45.4060402@jvuletich.org"><5EA74C45.4060402@jvuletich.org></a></td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">From: </th>
<td>Luciano Notarfrancesco <a class="moz-txt-link-rfc2396E" href="mailto:luchiano@gmail.com"><luchiano@gmail.com></a></td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Date: </th>
<td>Tue, 28 Apr 2020 11:16:54 +0700</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Message-ID:
</th>
<td><a class="moz-txt-link-rfc2396E" href="mailto:CAL5GDyr67soMWSuwNRt9uBG2Hoh_ft4wRu-Rkzx8LJv0RutivQ@mail.gmail.com"><CAL5GDyr67soMWSuwNRt9uBG2Hoh_ft4wRu-Rkzx8LJv0RutivQ@mail.gmail.com></a></td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Subject: </th>
<td>Re: [Cuis-dev] Naming conventions</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">To: </th>
<td>Juan Vuletich <a class="moz-txt-link-rfc2396E" href="mailto:juan@jvuletich.org"><juan@jvuletich.org></a></td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Content-Type:
</th>
<td>multipart/alternative;
boundary="000000000000a9619705a4521a5a"</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Spam-Status:
</th>
<td>No, score=-0.8</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Spam-Score:
</th>
<td>-7</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Spam-Bar:
</th>
<td>/</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">X-Spam-Flag:
</th>
<td>NO</td>
</tr>
</tbody>
</table>
<br>
<br>
<div>
<div dir="auto">Sounds great! But the convention</div>
<div dir="auto"> `PackageName1@#ClassName` new</div>
</div>
<div dir="auto">looks a bit ugly to me, how about using upper case
messages via the DNU mechanism? Say, a package PackageName1 is
already a global in the Smalltalk system dictionary, then you can
do send ClassName as a message to it:</div>
<div dir="auto"> PackageName1 ClassName new</div>
<div dir="auto">And regarding the back ticks, normally the compiled
methods would have a reference to the association, but if you
resolve it to a class at compile time and a class is replaced by a
new one in the package, the compiled method outside would keep the
reference to the old class.</div>
<div><br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Tue, 28 Apr 2020 at 4:19
AM, Juan Vuletich <<a moz-do-not-send="true"
href="mailto:juan@jvuletich.org">juan@jvuletich.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000"> Hi Folks,<br>
<br>
On 4/27/2020 12:52 PM, Luciano Notarfrancesco via Cuis-dev
wrote:
<blockquote type="cite">
<div>
<div dir="auto">I also dislike prefixes a lot. But
fortunately name clashes are less common in Cuis
because there are not as many classes as in Pharo.
Personally, I’d love to have namespaces, or have class
names be local to a package.</div>
</div>
</blockquote>
<br>
Ok, this got me thinking. So, what would it take to do just
that?<br>
<br>
We could make each package be a namespace. That means that
classes that are defined in a package will not be globals.
But, any package declaring a prerequisite would also behave
as if in Python you did 'From package import *'. So, the
compiler would know that it is compiling some code for some
package, and it would try to find class names in all
packages that were declared as prerequisites.<br>
<br>
This would have the added benefit that the compiler would
check for you that you actually declared prerequisites. Code
not in a package would not have access to classes defined at
any package.<br>
<br>
Usually, there would be no need to specify namespaces when
accessing 'globals', even if they belong in a different
package/namespace. Just declaring the prerequisites for your
package just once, will do. The only case where explicit
call for a namespace would be needed, is if you ask two
prerequisites, they both define classes with the same name,
and there is ambiguity. In such casses something like:<br>
a := `Smalltalk@#PackageName1@#ClassName` new.<br>
b := `Smalltalk@#PackageName2@#ClassName` new.<br>
would work as expected. See that class resolution is done at
compile time because of the use of backticks. So there's no
performance penalty. Also, there's no new syntax!<br>
<br>
If we add package names to the Smalltlak global namespace,
then we could also do:<br>
a := `PackageName1@#ClassName` new.<br>
b := `PackageName2@#ClassName` new.<br>
<br>
Again, this is only when the case is that you decided to
depend on two different packages that happen to clash. So,
you are already aware of the situation. This would never get
in your way when good old Smalltalk would do!<br>
<br>
There's some work to be done in Browsers and other tools,
but I feel it is not too much...<br>
<br>
Also note that I'd not include nested namespaces, just like
we don't have nested packages. I'd also avoid having
namespaces as a separate thing from packages. I'd have a
single concept for both. So, it would be simpler than what
is available in other Smalltalks that support namespaces.<br>
<br>
Does this make sense? I am missing something?<br>
<br>
Thanks,</div>
<div bgcolor="#ffffff" text="#000000"><br>
<pre cols="72">--
Juan Vuletich
<a moz-do-not-send="true" href="http://www.cuis-smalltalk.org" target="_blank">www.cuis-smalltalk.org</a>
<a moz-do-not-send="true" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a moz-do-not-send="true" href="https://github.com/jvuletich" target="_blank">https://github.com/jvuletich</a>
<a moz-do-not-send="true" href="https://www.linkedin.com/in/juan-vuletich-75611b3" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
@JuanVuletich</pre>
<br>
<blockquote type="cite">
<div><br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Mon, 27 Apr 2020
at 10:46 PM, giorgio ferraris via Cuis-dev <<a
moz-do-not-send="true"
href="mailto:cuis-dev@lists.cuis.st"
target="_blank">cuis-dev@lists.cuis.st</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin: 0pt 0pt
0pt 0.8ex; border-left: 1px solid rgb(204, 204,
204); padding-left: 1ex;">
<div dir="ltr">Hello,
<div>prefixes have a long story, in use also on
VisualSmalltalk or SmalltalkV long, long time
ago. Not having namespaces on many Smalltalk
dialects makes prefix the only (ugly) solution.
<div>The resulting names are horrible, I
personally dislike it a lot, but class' names
clashing is something that could easily
happens.</div>
<div><br>
</div>
<div>ciao</div>
</div>
</div>
<div dir="ltr">
<div>
<div><br>
</div>
<div>giorgio</div>
<div><br>
</div>
<div><br>
</div>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Mon, Apr 27,
2020 at 5:34 PM Erik Stel via Cuis-dev <<a
moz-do-not-send="true"
href="mailto:cuis-dev@lists.cuis.st"
target="_blank">cuis-dev@lists.cuis.st</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;">Hi Ken,<br>
<br>
I think you just answered my question ;-).<br>
<br>
It can indeed be a Pharo ’thing’. In Pharo
(default image) you have class names like
’ZnWebSocket’. It represents a WebSocket and
comes from the ‘Zinc’ framework. I think it
coexisted with WebSocket for some time (the
later is no longer part of the default Pharo
image). Also ‘MCPackage’ is a package from
Monticello (the versioning system). A full name
like ‘MonticelloPackage’ would have solved that
issue of name conflict I suppose.<br>
<br>
Regards,<br>
Erik<br>
<br>
<br>
> On 27 Apr 2020, at 17:13, <a
moz-do-not-send="true"
href="mailto:ken.dickey@whidbey.com"
target="_blank">ken.dickey@whidbey.com</a>
wrote:<br>
> <br>
> On 2020-04-27 07:28, Erik Stel via Cuis-dev
wrote:<br>
>> Hi,<br>
>> Short question:<br>
>> Also using Pharo, I’m used to creating
classes with prefixed names<br>
>> because of possible name collisions.
What is the Cuis take on these<br>
>> prefixes? I do not see any prefixes
being used in the<br>
>> packages/features I’m using at the
moment.<br>
>> Regards,<br>
>> Erik<br>
> <br>
> Examples?<br>
> <br>
> What is the context?<br>
> <br>
> Not being a Pharo user, I have no idea what
you are talking about.<br>
> <br>
> Typically, one wants to use meaningful
names in a way that orients one and makes code
reads like sentences.<br>
> <br>
> Note that the base Cuis image typically has
between 500 and 600 classes. The latest Pharo
base image has over 9000 classes. Perhaps the
(pre)fix is for a Pharo problem..<br>
> <br>
> -KenD<br>
> <br>
<br>
-- <br>
Cuis-dev mailing list<br>
<a moz-do-not-send="true"
href="mailto:Cuis-dev@lists.cuis.st"
target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a moz-do-not-send="true"
href="https://lists.cuis.st/mailman/listinfo/cuis-dev"
rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote>
</div>
-- <br>
Cuis-dev mailing list<br>
<a moz-do-not-send="true"
href="mailto:Cuis-dev@lists.cuis.st"
target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a moz-do-not-send="true"
href="https://lists.cuis.st/mailman/listinfo/cuis-dev"
rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote>
</div>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
</div>
</body>
</html>