Re: Porting to Java using Garden Point Compiler

From: [at]} <Stan>
Date: Wed, 17 Nov 2004 15:32:19 -0800

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

Well, OK. I admit my previous solution was pretty much an off-the-wall
extreme OO solution with a bad interface. But, how about the following?
This solution is identical to the traditional way of passing a
function, and
is a better solution than my previous one. Here is the server:

=====================================================
MODULE NumericalProcessor;
        IMPORT Math;

        TYPE
                Function* = POINTER TO ABSTRACT RECORD END;

        PROCEDURE (f: Function) ValueOf* (x: REAL): REAL, NEW, ABSTRACT;

        PROCEDURE Area* (f: Function; min, max, tol: REAL): REAL;
        BEGIN
                RETURN f.ValueOf (min) + f.ValueOf (max)
        END Area;

END NumericalProcessor.
=====================================================

And here is the client.

=====================================================
MODULE NumericalApplication;
        IMPORT NumericalProcessor, Math, StdLog;

        TYPE
                MyFunction = POINTER TO RECORD (NumericalProcessor.Function) END;
        
        PROCEDURE (f: MyFunction) ValueOf (x: REAL): REAL;
        BEGIN
                RETURN x * x
        END ValueOf;

        PROCEDURE Do*;
        VAR
                f: MyFunction;
        BEGIN
                NEW(f);
                StdLog.Ln;
                StdLog.Real( NumericalProcessor.Area(f, 3, 4, 0.001));
                StdLog.Ln
        END Do;

END NumericalApplication.
=====================================================

Still, the mechanism is inheritance. This is _so_ close to the
traditional
way of passing a function, that porting a library should be fairly
mechanical.
My point is that procedure types are redundant, and it is the spirit of
Oberon
to not have more than one way to accomplish a task. There was even
a battle to include the FOR statement in the language because it is not
necessary as long as you have a WHILE. I also agree with Skulski's
devil's-advocate comment that function variables should be at a lower
level and only used to communicate with platform-specific routines. I
still maintain that high-level applications like numerical libraries
should
be packaged similarly to the above client/server system and that
procedure
parameters should not be in the language definition.

Cheers,
Stan

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

On Nov 17, 2004, at 1:40 PM, Rex Couture wrote:

> ??? Thanks for clarifying how it can be done, but I'm with
> Wojtek Skulski on this one. First, it is much longer than my example,
> and therefore harder to read.
>
> More importantly, in your example I had a real problem
> figuring out that procedure Area used procedure ValueOf. This crucial
> information is not presented in the interface--you have to look inside
> the procedure. In my example, the procedural variable is clearly
> passed to the function (i.e., procedure), and this fact can be seen
> from a glance at the parameters. My example is also type-safe and
> robust.
>
> I'm not sure we're making any progress with fancy programming.
>
> Sincerely,
> Rex Couture

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

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-1748835633_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIFdlbGwsIE9LLiBJIGFkbWl0IG15IHByZXZpb3Vz
IHNvbHV0aW9uIHdhcyBwcmV0dHkgbXVjaCBhbiBvZmYtdGhlLXdhbGxccGFyDQpleHRyZW1lIE9P
IHNvbHV0aW9uIHdpdGggYSBiYWQgaW50ZXJmYWNlLiBCdXQsIGhvdyBhYm91dCB0aGUgZm9sbG93
aW5nP1xwYXINClRoaXMgc29sdXRpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSB0cmFkaXRpb25hbCB3
YXkgb2YgcGFzc2luZyBhIFxwYXINCmZ1bmN0aW9uLCBhbmRccGFyDQppcyBhIGJldHRlciBzb2x1
dGlvbiB0aGFuIG15IHByZXZpb3VzIG9uZS4gSGVyZSBpcyB0aGUgc2VydmVyOlxwYXINClxwYXIN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHBh
cg0KTU9EVUxFICBOdW1lcmljYWxQcm9jZXNzb3I7XHBhcg0KXHRhYiBJTVBPUlQgTWF0aDtccGFy
DQpccGFyDQpcdGFiIFRZUEVccGFyDQpcdGFiIFx0YWIgRnVuY3Rpb24qID0gUE9JTlRFUiBUTyBB
QlNUUkFDVCBSRUNPUkQgRU5EO1xwYXINClxwYXINClx0YWIgUFJPQ0VEVVJFIChmOiBGdW5jdGlv
bikgVmFsdWVPZiogKHg6IFJFQUwpOiBSRUFMLCBORVcsIEFCU1RSQUNUO1xwYXINClxwYXINClx0
YWIgUFJPQ0VEVVJFIEFyZWEqIChmOiBGdW5jdGlvbjsgbWluLCBtYXgsIHRvbDogUkVBTCk6IFJF
QUw7XHBhcg0KXHRhYiBCRUdJTlxwYXINClx0YWIgXHRhYiBSRVRVUk4gZi5WYWx1ZU9mIChtaW4p
ICsgZi5WYWx1ZU9mIChtYXgpXHBhcg0KXHRhYiBFTkQgQXJlYTtccGFyDQpccGFyDQpFTkQgTnVt
ZXJpY2FsUHJvY2Vzc29yLlxwYXINCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09XHBhcg0KXHBhcg0KQW5kIGhlcmUgaXMgdGhlIGNsaWVudC5ccGFy
DQpccGFyDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PVxwYXINCk1PRFVMRSAgTnVtZXJpY2FsQXBwbGljYXRpb247XHBhcg0KXHRhYiBJTVBPUlQg
TnVtZXJpY2FsUHJvY2Vzc29yLCBNYXRoLCBTdGRMb2c7XHBhcg0KXHBhcg0KXHRhYiBUWVBFXHBh
cg0KXHRhYiBcdGFiIE15RnVuY3Rpb24gPSBQT0lOVEVSIFRPIFJFQ09SRCAoTnVtZXJpY2FsUHJv
Y2Vzc29yLkZ1bmN0aW9uKSBFTkQ7XHBhcg0KXHRhYiBccGFyDQpcdGFiIFBST0NFRFVSRSAoZjog
TXlGdW5jdGlvbikgVmFsdWVPZiAoeDogUkVBTCk6IFJFQUw7XHBhcg0KXHRhYiBCRUdJTlxwYXIN
Clx0YWIgXHRhYiBSRVRVUk4geCAqIHhccGFyDQpcdGFiIEVORCBWYWx1ZU9mO1xwYXINClxwYXIN
Clx0YWIgUFJPQ0VEVVJFIERvKjtccGFyDQpcdGFiIFZBUlxwYXINClx0YWIgXHRhYiBmOiBNeUZ1
bmN0aW9uO1xwYXINClx0YWIgQkVHSU5ccGFyDQpcdGFiIFx0YWIgTkVXKGYpO1xwYXINClx0YWIg
XHRhYiBTdGRMb2cuTG47XHBhcg0KXHRhYiBcdGFiIFN0ZExvZy5SZWFsKCBOdW1lcmljYWxQcm9j
ZXNzb3IuQXJlYShmLCAzLCA0LCAwLjAwMSkpO1xwYXINClx0YWIgXHRhYiBTdGRMb2cuTG5ccGFy
DQpcdGFiIEVORCBEbztccGFyDQpccGFyDQpFTkQgTnVtZXJpY2FsQXBwbGljYXRpb24uXHBhcg0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1ccGFy
DQpccGFyDQpTdGlsbCwgdGhlIG1lY2hhbmlzbSBpcyBpbmhlcml0YW5jZS4gVGhpcyBpcyBfc29f
IGNsb3NlIHRvIHRoZSBccGFyDQp0cmFkaXRpb25hbFxwYXINCndheSBvZiBwYXNzaW5nIGEgZnVu
Y3Rpb24sIHRoYXQgcG9ydGluZyBhIGxpYnJhcnkgc2hvdWxkIGJlIGZhaXJseSBccGFyDQptZWNo
YW5pY2FsLlxwYXINCk15IHBvaW50IGlzIHRoYXQgcHJvY2VkdXJlIHR5cGVzIGFyZSByZWR1bmRh
bnQsIGFuZCBpdCBpcyB0aGUgc3Bpcml0IG9mIFxwYXINCk9iZXJvblxwYXINCnRvIG5vdCBoYXZl
IG1vcmUgdGhhbiBvbmUgd2F5IHRvIGFjY29tcGxpc2ggYSB0YXNrLiBUaGVyZSB3YXMgZXZlblxw
YXINCmEgYmF0dGxlIHRvIGluY2x1ZGUgdGhlIEZPUiBzdGF0ZW1lbnQgaW4gdGhlIGxhbmd1YWdl
IGJlY2F1c2UgaXQgaXMgbm90XHBhcg0KbmVjZXNzYXJ5IGFzIGxvbmcgYXMgeW91IGhhdmUgYSBX
SElMRS4gSSBhbHNvIGFncmVlIHdpdGggU2t1bHNraSdzXHBhcg0KZGV2aWwncy1hZHZvY2F0ZSBj
b21tZW50IHRoYXQgZnVuY3Rpb24gdmFyaWFibGVzIHNob3VsZCBiZSBhdCBhIGxvd2VyXHBhcg0K
bGV2ZWwgYW5kIG9ubHkgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHBsYXRmb3JtLXNwZWNpZmlj
IHJvdXRpbmVzLiBJXHBhcg0Kc3RpbGwgbWFpbnRhaW4gdGhhdCBoaWdoLWxldmVsIGFwcGxpY2F0
aW9ucyBsaWtlIG51bWVyaWNhbCBsaWJyYXJpZXMgXHBhcg0Kc2hvdWxkXHBhcg0KYmUgcGFja2Fn
ZWQgc2ltaWxhcmx5IHRvIHRoZSBhYm92ZSBjbGllbnQvc2VydmVyIHN5c3RlbSBhbmQgdGhhdCBc
cGFyDQpwcm9jZWR1cmVccGFyDQpwYXJhbWV0ZXJzIHNob3VsZCBub3QgYmUgaW4gdGhlIGxhbmd1
YWdlIGRlZmluaXRpb24uXHBhcg0KXHBhcg0KQ2hlZXJzLFxwYXINClN0YW5ccGFyDQpccGFyDQog
IEouIFN0YW5sZXkgV2FyZm9yZFxwYXINClByb2Zlc3NvciBvZiBDb21wdXRlciBTY2llbmNlXHBh
cg0KUGVwcGVyZGluZSBVbml2ZXJzaXR5XHBhcg0KTWFsaWJ1LCBDQSA5MDI2M1xwYXINClN0YW4u
V2FyZm9yZEBwZXBwZXJkaW5lLmVkdVxwYXINCjMxMC01MDYtNDMzMlxwYXINClxwYXINCk9uIE5v
diAxNywgMjAwNCwgYXQgMTo0MCBQTSwgUmV4IENvdXR1cmUgd3JvdGU6XHBhcg0KXHBhcg0KPiAg
ICAgICAgID8/PyAgVGhhbmtzIGZvciBjbGFyaWZ5aW5nIGhvdyBpdCBjYW4gYmUgZG9uZSwgYnV0
IEknbSB3aXRoIFxwYXINCj4gV29qdGVrIFNrdWxza2kgb24gdGhpcyBvbmUuICBGaXJzdCwgaXQg
aXMgbXVjaCBsb25nZXIgdGhhbiBteSBleGFtcGxlLCBccGFyDQo+IGFuZCB0aGVyZWZvcmUgaGFy
ZGVyIHRvIHJlYWQuXHBhcg0KPlxwYXINCj4gICAgICAgICBNb3JlIGltcG9ydGFudGx5LCBpbiB5
b3VyIGV4YW1wbGUgSSBoYWQgYSByZWFsIHByb2JsZW0gXHBhcg0KPiBmaWd1cmluZyBvdXQgdGhh
dCBwcm9jZWR1cmUgQXJlYSB1c2VkIHByb2NlZHVyZSBWYWx1ZU9mLiAgVGhpcyBjcnVjaWFsIFxw
YXINCj4gaW5mb3JtYXRpb24gaXMgbm90IHByZXNlbnRlZCBpbiB0aGUgaW50ZXJmYWNlLS15b3Ug
aGF2ZSB0byBsb29rIGluc2lkZSBccGFyDQo+IHRoZSBwcm9jZWR1cmUuICBJbiBteSBleGFtcGxl
LCB0aGUgcHJvY2VkdXJhbCB2YXJpYWJsZSBpcyBjbGVhcmx5IFxwYXINCj4gcGFzc2VkIHRvIHRo
ZSBmdW5jdGlvbiAoaS5lLiwgcHJvY2VkdXJlKSwgYW5kIHRoaXMgZmFjdCBjYW4gYmUgc2VlbiBc
cGFyDQo+IGZyb20gYSBnbGFuY2UgYXQgdGhlIHBhcmFtZXRlcnMuICBNeSBleGFtcGxlIGlzIGFs
c28gdHlwZS1zYWZlIGFuZCBccGFyDQo+IHJvYnVzdC5ccGFyDQo+XHBhcg0KPiAgICAgICAgIEkn
bSBub3Qgc3VyZSB3ZSdyZSBtYWtpbmcgYW55IHByb2dyZXNzIHdpdGggZmFuY3kgcHJvZ3JhbW1p
bmcuXHBhcg0KPlxwYXINCj4gU2luY2VyZWx5LFxwYXINCj4gUmV4IENvdXR1cmVccGFyDQpccGFy
DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxwYXINClxwYXIN
ClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBtYWlsaW5nIGxpc3QsIHNlbmQgYSBtZXNzYWdlIGNv
bnRhaW5pbmcgdGhlIHdvcmQgInVuc3Vic2NyaWJlIiB0bzpccGFyDQogICBibGFja2JveC1yZXF1
ZXN0QG9iZXJvbi5jaFxwYXINClxwYXINClRvIGdldCBhIGxpc3Qgb2YgdmFsaWQgZS1tYWlsIGNv
bW1hbmRzIGFuZCBpbnN0cnVjdGlvbnMgb24gdGhlaXIgdXNhZ2UsIHNlbmQgYSBtZXNzYWdlIGNv
bnRhaW5pbmcgdGhlIHdvcmQgImhlbHAiIHRvIHRoZSBhYm92ZSBhZGRyZXNzLlxwYXINClxwYXIN
ClNlbmQgYW55IHByb2JsZW0gcmVwb3J0cyBvciBxdWVzdGlvbnMgcmVsYXRlZCB0byB0aGlzIGVt
YWlsIGxpc3QgdG8gdGhlIGxpc3Qgb3duZXIgYXRccGFyDQogICBvd25lci1ibGFja2JveEBvYmVy
b24uY2hccGFyDQpccGFyDQpDdXJyZW50IHBvc3RpbmcgcG9saWN5OlxwYXINClxwYXINCmEpIFRv
IHBvc3QgeW91IHNob3VsZCB1c2UgdGhlIHNhbWUgYWRkcmVzcyBieSB3aGljaCB5b3UgYXJlIHN1
YnNjcmliZWQgdG8gdGhlIG1haWxpbmcgbGlzdC4gVGhhdCB3YXksIHRoZSBsaXN0IHNlcnZlciB3
aWxsIHJlY29nbml6ZSB5b3UgYXMgc3Vic2NyaWJlciBhbmQgZm9yd2FyZCB5b3VyIHBvc3Rpbmcg
aW1tZWRpYXRlbHksIHdpdGhvdXQgY3JlYXRpbmcgYW55IG92ZXJoZWFkLlxwYXINClxwYXINCmIp
IElmLCBmb3Igc29tZSByZWFzb24sIHlvdSBjYW5ub3QgcG9zdCBmcm9tIHRoZSBhZGRyZXNzLCBi
eSB3aGljaCB5b3UgYXJlIHN1YnNjcmliZWQsIHlvdXIgbWVzc2FnZSB3aWxsIGJlIG1vZGVyYXRl
ZCB0byBhdm9pZCBzcGFtLiBQbGVhc2UgdW5kZXJzdGFuZCB0aGF0IG1vZGVyYXRpb24gd2lsbCBv
ZnRlbiBjYXVzZSBzb21lIGRlbGF5LCBpbiBwYXJ0aWN1bGFyIG92ZXIgd2Vla2VuZHMgb3IgaG9s
eWRheXMuXHBhcg0KfQ==


----boundary-LibPST-iamunique-1748835633_-_---
Received on Thu Nov 18 2004 - 00:32:19 UTC

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