Re: Named Integers

From: [at]} <Stan>
Date: Sun, 28 Nov 2004 20:45:56 -0800

----boundary-LibPST-iamunique-1468555678_-_-
Content-type: text/plain

On Nov 21, 2004, at 6:49 PM, Hof, Philipp wrote:

> Hi Stan
>
> Sorry for the confusion. I should have explained myself better.
> I have to admit further that I don't see the difference to C style
> enums
> clearly.
>
> Problem 1:
>
> TYPE
> Colour1* = (blue, red);
> Colour2 = (red, blue);
>
> Above we have two times 'red' and 'blue' with different values
> assigned. If
> expanded it would result in:
>
> CONST
> red = 0;
> red* = 1;
> blue* = 0;
> blue = 1;
>
> and wouldn't compile.

Right. It would not compile.

> To solve this problem they would need to be put in there own namespace.
> An adapted C# (Java 1.5.0) style notation would probably look like:
> * within a module: Colour1.blue;
> * outside a module: Module.Colour1.blue

I would not solve the problem by making namespace rules.
Keep it simple and let it not compile. The programmer can
always use consistent prefixes or postfixes in the identifiers
if it is necessary to have more than one "blue", e.g. xBlue, yBlue.

> Problem 2:
>
> Let's assume an application has been produced and deployed:
> TYPE
> Colour* = (blue, red);
> (* red = 2 *)
>
> and years later changed to:
>
> TYPE
> Colour* = (blue, orange, red);
> (* red = 3 *)
>
> The problem here is that 'red' changed in the production code to 3. If
> other
> modules depend on it they would need to be re-compiled. (A CONST red =
> 2; is
> unlikely to be changed by accident.)

Yes. So let it be recompiled. That is what always happens when you
change the interface of a server module.

[snip]

> Offsets in enums are a very useful in low-level programming:
>
> TYPE
> Flags = {rx: 2, overflow, frameError, tx: 12, reserved: 13..31};
> (* Flags is of type SET, rx is the 3rd bit in Flags etc. so the same

> as CONST rx = 2; reserved is a SET itself an therefore a problem... *)
>
> Maybe a better notation:
> TYPE
> Flags = {rx: 2, overflow, frameError, tx: 12}: SET;
> Int = {zero, one, three := 3}: INTEGER;
>
> ...
>
> IF Flags.overflow IN Flags THEN...

Well, these uses of enum are different from the uses that named
integers are designed for. Named integers are simple syntactic
sugar that fix a common problem in the BB documentation. Namely
the interfaces are not self-documenting. There are many examples
of the problem in the BB documentation. It was quite easy to find the
Ports example. There are very few examples in the documentation
(or in high-level programming as opposed to low-level programming)
of the problems you are raising here. I see your point. The issue,
however, is not just how to come up with a feature to solve a problem.
The issue is also the frequency of the problem in practice. Named
integers solve a common problem with a minimum implementation cost.

[snip]

Thanks for the comment.
Cheers
Stan

J. Stanley Warford
Professor of Computer Science
Pepperdine University
Malibu, CA 90263
Stan.Warford{([at]})nowhere.xy
310-506-4332

--------------------------------------------

To unsubscribe from this mailing list, send a message containing the word "unsubscribe" to:
   blackbox-request{([at]})nowhere.xy

To get a list of valid e-mail commands and instructions on their usage, send a message containing the word "help" to the above address.

Send any problem reports or questions related to this email list to the list owner at
   owner-blackbox{([at]})nowhere.xy

Current posting policy:

a) To post you should use the same address by which you are subscribed to the mailing list. That way, the list server will recognize you as subscriber and forward your posting immediately, without creating any overhead.

b) If, for some reason, you cannot post from the address, by which you are subscribed, your message will be moderated to avoid spam. Please understand that moderation will often cause some delay, in particular over weekends or holydays.


----boundary-LibPST-iamunique-1468555678_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIE9uIE5vdiAyMSwgMjAwNCwgYXQgNjo0OSBQTSwg
SG9mLCBQaGlsaXBwIHdyb3RlOlxwYXINClxwYXINCj4gSGkgU3RhblxwYXINCj5ccGFyDQo+IFNv
cnJ5IGZvciB0aGUgY29uZnVzaW9uLiBJIHNob3VsZCBoYXZlIGV4cGxhaW5lZCBteXNlbGYgYmV0
dGVyLlxwYXINCj4gSSBoYXZlIHRvIGFkbWl0IGZ1cnRoZXIgdGhhdCBJIGRvbid0IHNlZSB0aGUg
ZGlmZmVyZW5jZSB0byBDIHN0eWxlIFxwYXINCj4gZW51bXNccGFyDQo+IGNsZWFybHkuXHBhcg0K
PlxwYXINCj4gUHJvYmxlbSAxOlxwYXINCj5ccGFyDQo+IFRZUEVccGFyDQo+ICAgQ29sb3VyMSog
PSAoYmx1ZSwgcmVkKTtccGFyDQo+ICAgQ29sb3VyMiA9IChyZWQsIGJsdWUpO1xwYXINCj5ccGFy
DQo+IEFib3ZlIHdlIGhhdmUgdHdvIHRpbWVzICdyZWQnIGFuZCAnYmx1ZScgd2l0aCBkaWZmZXJl
bnQgdmFsdWVzIFxwYXINCj4gYXNzaWduZWQuIElmXHBhcg0KPiBleHBhbmRlZCBpdCB3b3VsZCBy
ZXN1bHQgaW46XHBhcg0KPlxwYXINCj4gQ09OU1RccGFyDQo+ICAgcmVkID0gMDtccGFyDQo+ICAg
cmVkKiA9IDE7XHBhcg0KPiAgIGJsdWUqID0gMDtccGFyDQo+ICAgYmx1ZSA9IDE7XHBhcg0KPlxw
YXINCj4gYW5kIHdvdWxkbid0IGNvbXBpbGUuXHBhcg0KXHBhcg0KUmlnaHQuIEl0IHdvdWxkIG5v
dCBjb21waWxlLlxwYXINClxwYXINCj4gVG8gc29sdmUgdGhpcyBwcm9ibGVtIHRoZXkgd291bGQg
bmVlZCB0byBiZSBwdXQgaW4gdGhlcmUgb3duIG5hbWVzcGFjZS5ccGFyDQo+IEFuIGFkYXB0ZWQg
QyMgKEphdmEgMS41LjApIHN0eWxlIG5vdGF0aW9uIHdvdWxkIHByb2JhYmx5IGxvb2sgbGlrZTpc
cGFyDQo+ICogd2l0aGluIGEgbW9kdWxlOiBDb2xvdXIxLmJsdWU7XHBhcg0KPiAqIG91dHNpZGUg
YSBtb2R1bGU6IE1vZHVsZS5Db2xvdXIxLmJsdWVccGFyDQpccGFyDQpJIHdvdWxkIG5vdCBzb2x2
ZSB0aGUgcHJvYmxlbSBieSBtYWtpbmcgbmFtZXNwYWNlIHJ1bGVzLlxwYXINCktlZXAgaXQgc2lt
cGxlIGFuZCBsZXQgaXQgbm90IGNvbXBpbGUuIFRoZSBwcm9ncmFtbWVyIGNhblxwYXINCmFsd2F5
cyB1c2UgY29uc2lzdGVudCBwcmVmaXhlcyBvciBwb3N0Zml4ZXMgaW4gdGhlIGlkZW50aWZpZXJz
XHBhcg0KaWYgaXQgaXMgbmVjZXNzYXJ5IHRvIGhhdmUgbW9yZSB0aGFuIG9uZSAiYmx1ZSIsIGUu
Zy4geEJsdWUsIHlCbHVlLlxwYXINClxwYXINCj4gUHJvYmxlbSAyOlxwYXINCj5ccGFyDQo+IExl
dCdzIGFzc3VtZSBhbiBhcHBsaWNhdGlvbiBoYXMgYmVlbiBwcm9kdWNlZCBhbmQgZGVwbG95ZWQ6
XHBhcg0KPiBUWVBFXHBhcg0KPiAgIENvbG91ciogPSAoYmx1ZSwgcmVkKTtccGFyDQo+ICgqIHJl
ZCA9IDIgKilccGFyDQo+XHBhcg0KPiBhbmQgeWVhcnMgbGF0ZXIgY2hhbmdlZCB0bzpccGFyDQo+
XHBhcg0KPiBUWVBFXHBhcg0KPiAgICBDb2xvdXIqID0gKGJsdWUsIG9yYW5nZSwgcmVkKTtccGFy
DQo+ICgqIHJlZCA9IDMgKilccGFyDQo+XHBhcg0KPiBUaGUgcHJvYmxlbSBoZXJlIGlzIHRoYXQg
J3JlZCcgY2hhbmdlZCBpbiB0aGUgcHJvZHVjdGlvbiBjb2RlIHRvIDMuIElmIFxwYXINCj4gb3Ro
ZXJccGFyDQo+IG1vZHVsZXMgZGVwZW5kIG9uIGl0IHRoZXkgd291bGQgbmVlZCB0byBiZSByZS1j
b21waWxlZC4gKEEgQ09OU1QgcmVkID0gXHBhcg0KPiAyOyBpc1xwYXINCj4gdW5saWtlbHkgdG8g
YmUgY2hhbmdlZCBieSBhY2NpZGVudC4pXHBhcg0KXHBhcg0KWWVzLiBTbyBsZXQgaXQgYmUgcmVj
b21waWxlZC4gVGhhdCBpcyB3aGF0IGFsd2F5cyBoYXBwZW5zIHdoZW4geW91XHBhcg0KY2hhbmdl
IHRoZSBpbnRlcmZhY2Ugb2YgYSBzZXJ2ZXIgbW9kdWxlLlxwYXINClxwYXINCltzbmlwXVxwYXIN
ClxwYXINCj4gT2Zmc2V0cyBpbiBlbnVtcyBhcmUgYSB2ZXJ5IHVzZWZ1bCBpbiBsb3ctbGV2ZWwg
cHJvZ3JhbW1pbmc6XHBhcg0KPlxwYXINCj4gVFlQRVxwYXINCj4gICBGbGFncyA9IFx7cng6IDIs
IG92ZXJmbG93LCBmcmFtZUVycm9yLCB0eDogMTIsIHJlc2VydmVkOiAxMy4uMzFcfTtccGFyDQo+
ICgqIEZsYWdzIGlzIG9mIHR5cGUgU0VULCByeCBpcyB0aGUgM3JkIGJpdCBpbiBGbGFncyBldGMu
IHNvIHRoZSBzYW1lXHBhcg0KPiBhcyBDT05TVCByeCA9IDI7IHJlc2VydmVkIGlzIGEgU0VUIGl0
c2VsZiBhbiB0aGVyZWZvcmUgYSBwcm9ibGVtLi4uICopXHBhcg0KPlxwYXINCj4gTWF5YmUgYSBi
ZXR0ZXIgbm90YXRpb246XHBhcg0KPiBUWVBFXHBhcg0KPiAgIEZsYWdzID0gXHtyeDogMiwgb3Zl
cmZsb3csIGZyYW1lRXJyb3IsIHR4OiAxMlx9OiBTRVQ7XHBhcg0KPiAgIEludCA9IFx7emVybywg
b25lLCB0aHJlZSA6PSAzXH06IElOVEVHRVI7XHBhcg0KPlxwYXINCj4gLi4uXHBhcg0KPlxwYXIN
Cj4gSUYgRmxhZ3Mub3ZlcmZsb3cgSU4gRmxhZ3MgVEhFTi4uLlxwYXINClxwYXINCldlbGwsIHRo
ZXNlIHVzZXMgb2YgZW51bSBhcmUgZGlmZmVyZW50IGZyb20gdGhlIHVzZXMgdGhhdCBuYW1lZFxw
YXINCmludGVnZXJzIGFyZSBkZXNpZ25lZCBmb3IuIE5hbWVkIGludGVnZXJzIGFyZSBzaW1wbGUg
c3ludGFjdGljXHBhcg0Kc3VnYXIgdGhhdCBmaXggYSBjb21tb24gcHJvYmxlbSBpbiB0aGUgQkIg
ZG9jdW1lbnRhdGlvbi4gTmFtZWx5XHBhcg0KdGhlIGludGVyZmFjZXMgYXJlIG5vdCBzZWxmLWRv
Y3VtZW50aW5nLiBUaGVyZSBhcmUgbWFueSBleGFtcGxlc1xwYXINCm9mIHRoZSBwcm9ibGVtIGlu
IHRoZSBCQiBkb2N1bWVudGF0aW9uLiBJdCB3YXMgcXVpdGUgZWFzeSB0byBmaW5kIHRoZVxwYXIN
ClBvcnRzIGV4YW1wbGUuIFRoZXJlIGFyZSB2ZXJ5IGZldyBleGFtcGxlcyBpbiB0aGUgZG9jdW1l
bnRhdGlvblxwYXINCihvciBpbiBoaWdoLWxldmVsIHByb2dyYW1taW5nIGFzIG9wcG9zZWQgdG8g
bG93LWxldmVsIHByb2dyYW1taW5nKVxwYXINCm9mIHRoZSBwcm9ibGVtcyB5b3UgYXJlIHJhaXNp
bmcgaGVyZS4gSSBzZWUgeW91ciBwb2ludC4gVGhlIGlzc3VlLFxwYXINCmhvd2V2ZXIsIGlzIG5v
dCBqdXN0IGhvdyB0byBjb21lIHVwIHdpdGggYSBmZWF0dXJlIHRvIHNvbHZlIGEgcHJvYmxlbS5c
cGFyDQpUaGUgaXNzdWUgaXMgYWxzbyB0aGUgZnJlcXVlbmN5IG9mIHRoZSBwcm9ibGVtIGluIHBy
YWN0aWNlLiBOYW1lZFxwYXINCmludGVnZXJzIHNvbHZlIGEgY29tbW9uIHByb2JsZW0gd2l0aCBh
IG1pbmltdW0gaW1wbGVtZW50YXRpb24gY29zdC5ccGFyDQpccGFyDQpbc25pcF1ccGFyDQpccGFy
DQpUaGFua3MgZm9yIHRoZSBjb21tZW50LlxwYXINCkNoZWVyc1xwYXINClN0YW5ccGFyDQpccGFy
DQpKLiBTdGFubGV5IFdhcmZvcmRccGFyDQpQcm9mZXNzb3Igb2YgQ29tcHV0ZXIgU2NpZW5jZVxw
YXINClBlcHBlcmRpbmUgVW5pdmVyc2l0eVxwYXINCk1hbGlidSwgQ0EgOTAyNjNccGFyDQpTdGFu
LldhcmZvcmRAcGVwcGVyZGluZS5lZHVccGFyDQozMTAtNTA2LTQzMzJccGFyDQpccGFyDQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxwYXINClxwYXINClRvIHVu
c3Vic2NyaWJlIGZyb20gdGhpcyBtYWlsaW5nIGxpc3QsIHNlbmQgYSBtZXNzYWdlIGNvbnRhaW5p
bmcgdGhlIHdvcmQgInVuc3Vic2NyaWJlIiB0bzpccGFyDQogICBibGFja2JveC1yZXF1ZXN0QG9i
ZXJvbi5jaFxwYXINClxwYXINClRvIGdldCBhIGxpc3Qgb2YgdmFsaWQgZS1tYWlsIGNvbW1hbmRz
IGFuZCBpbnN0cnVjdGlvbnMgb24gdGhlaXIgdXNhZ2UsIHNlbmQgYSBtZXNzYWdlIGNvbnRhaW5p
bmcgdGhlIHdvcmQgImhlbHAiIHRvIHRoZSBhYm92ZSBhZGRyZXNzLlxwYXINClxwYXINClNlbmQg
YW55IHByb2JsZW0gcmVwb3J0cyBvciBxdWVzdGlvbnMgcmVsYXRlZCB0byB0aGlzIGVtYWlsIGxp
c3QgdG8gdGhlIGxpc3Qgb3duZXIgYXRccGFyDQogICBvd25lci1ibGFja2JveEBvYmVyb24uY2hc
cGFyDQpccGFyDQpDdXJyZW50IHBvc3RpbmcgcG9saWN5OlxwYXINClxwYXINCmEpIFRvIHBvc3Qg
eW91IHNob3VsZCB1c2UgdGhlIHNhbWUgYWRkcmVzcyBieSB3aGljaCB5b3UgYXJlIHN1YnNjcmli
ZWQgdG8gdGhlIG1haWxpbmcgbGlzdC4gVGhhdCB3YXksIHRoZSBsaXN0IHNlcnZlciB3aWxsIHJl
Y29nbml6ZSB5b3UgYXMgc3Vic2NyaWJlciBhbmQgZm9yd2FyZCB5b3VyIHBvc3RpbmcgaW1tZWRp
YXRlbHksIHdpdGhvdXQgY3JlYXRpbmcgYW55IG92ZXJoZWFkLlxwYXINClxwYXINCmIpIElmLCBm
b3Igc29tZSByZWFzb24sIHlvdSBjYW5ub3QgcG9zdCBmcm9tIHRoZSBhZGRyZXNzLCBieSB3aGlj
aCB5b3UgYXJlIHN1YnNjcmliZWQsIHlvdXIgbWVzc2FnZSB3aWxsIGJlIG1vZGVyYXRlZCB0byBh
dm9pZCBzcGFtLiBQbGVhc2UgdW5kZXJzdGFuZCB0aGF0IG1vZGVyYXRpb24gd2lsbCBvZnRlbiBj
YXVzZSBzb21lIGRlbGF5LCBpbiBwYXJ0aWN1bGFyIG92ZXIgd2Vla2VuZHMgb3IgaG9seWRheXN9
fQAosgWgbQ==


----boundary-LibPST-iamunique-1468555678_-_---
Received on Mon Nov 29 2004 - 05:45:56 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:29 UTC