- Increasing the spread of Component Pascal

From: Warford, Stan <"Warford,>
Date: Wed, 24 May 2006 10:51:31 -0700

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

On May 23, 2006, at 12:19 PM, Rex Couture wrote:

> Gosh, there's a lot of philosophy in this discussion, but I don't
> there's any mystery why there are so few users. Besides all the
> external factors (inertia, legacy code, portability, critical mass,
> etc.), there are some real problems in using any Oberon language. In
> spite of their strengths, the implementations have some crucial
> weaknesses. I don't have to dig too far to list some standard ones
> for BlackBox:

>> "Programs" running under the BB environment serve only a very small

>> fraction of potential end users. Yet the BB linker and packer are

>> seriously unfinished. It should be possible to create a freestanding
>> executable with one or two keystrokes, and the linker should not link
>> unusued code. In practice, it is exceedingly difficult to create an
>> .exe file, and that .exe file will likely consist mostly of unused
>> code.

I have had exactly the same problem. Creating an executable should be
made easier.

>> BB lacks standard I/O libraries, as do many Wirth languages. There

>> are the Oakwood standards, but BB ignores them. They are only very
>> partially implemented in BB, by a third party. Portability is
>> undeniably needed, yet BB cannot even read or write an integer with
>> portable code (or at the very least, it's problematic).

>
>> BB is very good for GUI programs in the BB environment, but not as

>> good for non-BB or non-GUI applications. We are told that sequential
>> output is old-fashioned, and its use is discouraged in programs. If
>> it is really obsolete, why is the Log file so prominently displayed
>> in BB? If it isn't obsolete, why is sequential output discouraged in
>> a freestanding program? And how do you do sequential _input_?

If you are interested in sequential input / output with text files, I
have written a module PboxMappers to simplify the process. For numeric
output to text, there is the following formatter:

                Formatter = EXTENSIBLE RECORD
                        (VAR f: Formatter) ConnectTo (text: TextModels.Model), NEW;
                        (VAR f: Formatter) WriteInt (n, minWidth: INTEGER), NEW;
                        (VAR f: Formatter) WriteReal (x: REAL; minWidth, dec: INTEGER), NEW;
                        (VAR f: Formatter) WriteChar (ch: CHAR), NEW;
                        (VAR f: Formatter) WriteString (str: ARRAY OF CHAR), NEW;
                        (VAR f: Formatter) WriteLn, NEW;
                        (VAR f: Formatter) WriteIntVector (IN v: ARRAY OF INTEGER;
                                                numItm, minWidth: INTEGER), NEW;
                        (VAR f: Formatter) WriteRealVector (IN v: ARRAY OF REAL;
                                                numItm, minWidth, dec: INTEGER), NEW;
                        (VAR f: Formatter) WriteIntMatrix (IN mat: ARRAY OF ARRAY OF INTEGER;
                                                numR, numC, minWidth: INTEGER), NEW;
                        (VAR f: Formatter) WriteRealMatrix (IN mat: ARRAY OF ARRAY OF REAL;
                                                numR, numC, minWidth, dec: INTEGER), NEW
                END;

and for numeric input from text, there is the following scanner:

                Scanner = EXTENSIBLE RECORD
                        eot-: BOOLEAN;
                        (VAR s: Scanner) ConnectTo (text: TextModels.Model), NEW;
                        (VAR s: Scanner) Pos (): INTEGER, NEW;
                        (VAR s: Scanner) ScanInt (OUT n: INTEGER), NEW;
                        (VAR s: Scanner) ScanReal (OUT x: REAL), NEW;
                        (VAR s: Scanner) ScanChar (OUT ch: CHAR), NEW;
                        (VAR s: Scanner) ScanPrevChar (OUT ch: CHAR), NEW;
                        (VAR s: Scanner) ScanString (OUT str: ARRAY OF CHAR), NEW;
                        (VAR s: Scanner) ScanIntVector (OUT v: ARRAY OF INTEGER;
                                                 OUT numItm: INTEGER), NEW;
                        (VAR s: Scanner) ScanRealVector (OUT v: ARRAY OF REAL;
                                                OUT numItm: INTEGER), NEW;
                        (VAR s: Scanner) ScanIntMatrix (OUT mat: ARRAY OF ARRAY OF INTEGER;
                                                OUT numR, numC: INTEGER), NEW;
                        (VAR s: Scanner) ScanRealMatrix (OUT mat: ARRAY OF ARRAY OF REAL;
                                                OUT numR, numC: INTEGER), NEW
                END;

These sequential input/output facilities do no operate on text files
directly, but they do operate on text streams. They could be used as a
basis for ascii file I/O. They are available at Helmut Zinn's site:

http://www.zinnamturm.de/

under "Pbox".

>> What is a potential user to do? Should one invest heavily and

>> develop libraries and skills just for BB GUI programs, and then
>> duplicate libraries and skills with other languages for other
>> computing needs? It appears that some BB users do exactly that, but
>> most people cannot afford that luxury. Quite honestly, BB still

>> seems a bit unfinished for general use.

I agree, BB seems unfinished for general use.

Stan

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

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy



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

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIE9uIE1heSAyMywgMjAwNiwgYXQgMTI6MTkgUE0s
IFJleCBDb3V0dXJlIHdyb3RlOlxwYXINClxwYXINCj4gXHRhYiBHb3NoLCB0aGVyZSdzIGEgbG90
IG9mIHBoaWxvc29waHkgaW4gdGhpcyBkaXNjdXNzaW9uLCBidXQgSSBkb24ndCBccGFyDQo+IHRo
ZXJlJ3MgYW55IG15c3Rlcnkgd2h5IHRoZXJlIGFyZSBzbyBmZXcgdXNlcnMuICBCZXNpZGVzIGFs
bCB0aGUgXHBhcg0KPiBleHRlcm5hbCBmYWN0b3JzIChpbmVydGlhLCBsZWdhY3kgY29kZSwgcG9y
dGFiaWxpdHksIGNyaXRpY2FsIG1hc3MsIFxwYXINCj4gZXRjLiksIHRoZXJlIGFyZSBzb21lIHJl
YWwgcHJvYmxlbXMgaW4gdXNpbmcgYW55IE9iZXJvbiBsYW5ndWFnZS4gIEluIFxwYXINCj4gc3Bp
dGUgb2YgdGhlaXIgc3RyZW5ndGhzLCB0aGUgaW1wbGVtZW50YXRpb25zIGhhdmUgc29tZSBjcnVj
aWFsIFxwYXINCj4gd2Vha25lc3Nlcy4gIEkgZG9uJ3QgaGF2ZSB0byBkaWcgdG9vIGZhciB0byBs
aXN0IHNvbWUgc3RhbmRhcmQgb25lcyBccGFyDQo+IGZvciBCbGFja0JveDpccGFyDQpccGFyDQo+
PiBcdGFiICJQcm9ncmFtcyIgcnVubmluZyB1bmRlciB0aGUgQkIgZW52aXJvbm1lbnQgc2VydmUg
b25seSBhIHZlcnkgc21hbGwgXHBhcg0KPj4gZnJhY3Rpb24gb2YgcG90ZW50aWFsIGVuZCB1c2Vy
cy4gIFlldCB0aGUgQkIgbGlua2VyIGFuZCBwYWNrZXIgYXJlIFxwYXINCj4+IHNlcmlvdXNseSB1
bmZpbmlzaGVkLiAgSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIGZyZWVzdGFuZGlu
ZyBccGFyDQo+PiBleGVjdXRhYmxlIHdpdGggb25lIG9yIHR3byBrZXlzdHJva2VzLCBhbmQgdGhl
IGxpbmtlciBzaG91bGQgbm90IGxpbmsgXHBhcg0KPj4gdW51c3VlZCBjb2RlLiAgSW4gcHJhY3Rp
Y2UsIGl0IGlzIGV4Y2VlZGluZ2x5IGRpZmZpY3VsdCB0byBjcmVhdGUgYW4gXHBhcg0KPj4gLmV4
ZSBmaWxlLCBhbmQgdGhhdCAuZXhlIGZpbGUgd2lsbCBsaWtlbHkgY29uc2lzdCBtb3N0bHkgb2Yg
dW51c2VkIFxwYXINCj4+IGNvZGUuXHBhcg0KXHBhcg0KSSBoYXZlIGhhZCBleGFjdGx5IHRoZSBz
YW1lIHByb2JsZW0uIENyZWF0aW5nIGFuIGV4ZWN1dGFibGUgc2hvdWxkIGJlIFxwYXINCm1hZGUg
ZWFzaWVyLlxwYXINClxwYXINCj4+IFx0YWIgQkIgbGFja3Mgc3RhbmRhcmQgSS9PIGxpYnJhcmll
cywgYXMgZG8gbWFueSBXaXJ0aCBsYW5ndWFnZXMuICBUaGVyZSBccGFyDQo+PiBhcmUgdGhlIE9h
a3dvb2Qgc3RhbmRhcmRzLCBidXQgQkIgaWdub3JlcyB0aGVtLiAgVGhleSBhcmUgb25seSB2ZXJ5
IFxwYXINCj4+IHBhcnRpYWxseSBpbXBsZW1lbnRlZCBpbiBCQiwgYnkgYSB0aGlyZCBwYXJ0eS4g
IFBvcnRhYmlsaXR5IGlzIFxwYXINCj4+IHVuZGVuaWFibHkgbmVlZGVkLCB5ZXQgQkIgY2Fubm90
IGV2ZW4gcmVhZCBvciB3cml0ZSBhbiBpbnRlZ2VyIHdpdGggXHBhcg0KPj4gcG9ydGFibGUgY29k
ZSAob3IgYXQgdGhlIHZlcnkgbGVhc3QsIGl0J3MgcHJvYmxlbWF0aWMpLlxwYXINCj5ccGFyDQo+
PiBcdGFiIEJCIGlzIHZlcnkgZ29vZCBmb3IgR1VJIHByb2dyYW1zIGluIHRoZSBCQiBlbnZpcm9u
bWVudCwgYnV0IG5vdCBhcyBccGFyDQo+PiBnb29kIGZvciBub24tQkIgb3Igbm9uLUdVSSBhcHBs
aWNhdGlvbnMuICBXZSBhcmUgdG9sZCB0aGF0IHNlcXVlbnRpYWwgXHBhcg0KPj4gb3V0cHV0IGlz
IG9sZC1mYXNoaW9uZWQsIGFuZCBpdHMgdXNlIGlzIGRpc2NvdXJhZ2VkIGluIHByb2dyYW1zLiAg
SWYgXHBhcg0KPj4gaXQgaXMgcmVhbGx5IG9ic29sZXRlLCB3aHkgaXMgdGhlIExvZyBmaWxlIHNv
IHByb21pbmVudGx5IGRpc3BsYXllZCBccGFyDQo+PiBpbiBCQj8gIElmIGl0IGlzbid0IG9ic29s
ZXRlLCB3aHkgaXMgc2VxdWVudGlhbCBvdXRwdXQgZGlzY291cmFnZWQgaW4gXHBhcg0KPj4gYSBm
cmVlc3RhbmRpbmcgcHJvZ3JhbT8gIEFuZCBob3cgZG8geW91IGRvIHNlcXVlbnRpYWwgX2lucHV0
Xz9ccGFyDQpccGFyDQpJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gc2VxdWVudGlhbCBpbnB1dCAv
IG91dHB1dCB3aXRoIHRleHQgZmlsZXMsIEkgXHBhcg0KaGF2ZSB3cml0dGVuIGEgbW9kdWxlIFBi
b3hNYXBwZXJzIHRvIHNpbXBsaWZ5IHRoZSBwcm9jZXNzLiBGb3IgbnVtZXJpYyBccGFyDQpvdXRw
dXQgdG8gdGV4dCwgdGhlcmUgaXMgdGhlIGZvbGxvd2luZyBmb3JtYXR0ZXI6XHBhcg0KXHBhcg0K
XHRhYiBcdGFiIEZvcm1hdHRlciA9IEVYVEVOU0lCTEUgUkVDT1JEXHBhcg0KXHRhYiBcdGFiIFx0
YWIgKFZBUiBmOiBGb3JtYXR0ZXIpIENvbm5lY3RUbyAodGV4dDogVGV4dE1vZGVscy5Nb2RlbCks
IE5FVztccGFyDQpcdGFiIFx0YWIgXHRhYiAoVkFSIGY6IEZvcm1hdHRlcikgV3JpdGVJbnQgKG4s
IG1pbldpZHRoOiBJTlRFR0VSKSwgTkVXO1xwYXINClx0YWIgXHRhYiBcdGFiIChWQVIgZjogRm9y
bWF0dGVyKSBXcml0ZVJlYWwgKHg6IFJFQUw7IG1pbldpZHRoLCBkZWM6IElOVEVHRVIpLCBORVc7
XHBhcg0KXHRhYiBcdGFiIFx0YWIgKFZBUiBmOiBGb3JtYXR0ZXIpIFdyaXRlQ2hhciAoY2g6IENI
QVIpLCBORVc7XHBhcg0KXHRhYiBcdGFiIFx0YWIgKFZBUiBmOiBGb3JtYXR0ZXIpIFdyaXRlU3Ry
aW5nIChzdHI6IEFSUkFZIE9GIENIQVIpLCBORVc7XHBhcg0KXHRhYiBcdGFiIFx0YWIgKFZBUiBm
OiBGb3JtYXR0ZXIpIFdyaXRlTG4sIE5FVztccGFyDQpcdGFiIFx0YWIgXHRhYiAoVkFSIGY6IEZv
cm1hdHRlcikgV3JpdGVJbnRWZWN0b3IgKElOIHY6IEFSUkFZIE9GIElOVEVHRVI7XHBhcg0KXHRh
YiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgbnVtSXRtLCBtaW5XaWR0aDogSU5URUdFUiksIE5F
VztccGFyDQpcdGFiIFx0YWIgXHRhYiAoVkFSIGY6IEZvcm1hdHRlcikgV3JpdGVSZWFsVmVjdG9y
IChJTiB2OiBBUlJBWSBPRiBSRUFMO1xwYXINClx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFi
IG51bUl0bSwgbWluV2lkdGgsIGRlYzogSU5URUdFUiksIE5FVztccGFyDQpcdGFiIFx0YWIgXHRh
YiAoVkFSIGY6IEZvcm1hdHRlcikgV3JpdGVJbnRNYXRyaXggKElOIG1hdDogQVJSQVkgT0YgQVJS
QVkgT0YgSU5URUdFUjtccGFyDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBudW1SLCBu
dW1DLCBtaW5XaWR0aDogSU5URUdFUiksIE5FVztccGFyDQpcdGFiIFx0YWIgXHRhYiAoVkFSIGY6
IEZvcm1hdHRlcikgV3JpdGVSZWFsTWF0cml4IChJTiBtYXQ6IEFSUkFZIE9GIEFSUkFZIE9GIFJF
QUw7XHBhcg0KXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgbnVtUiwgbnVtQywgbWluV2lk
dGgsIGRlYzogSU5URUdFUiksIE5FV1xwYXINClx0YWIgXHRhYiBFTkQ7XHBhcg0KXHBhcg0KYW5k
IGZvciBudW1lcmljIGlucHV0IGZyb20gdGV4dCwgdGhlcmUgaXMgdGhlIGZvbGxvd2luZyBzY2Fu
bmVyOlxwYXINClxwYXINClx0YWIgXHRhYiBTY2FubmVyID0gRVhURU5TSUJMRSBSRUNPUkRccGFy
DQpcdGFiIFx0YWIgXHRhYiBlb3QtOiBCT09MRUFOO1xwYXINClx0YWIgXHRhYiBcdGFiIChWQVIg
czogU2Nhbm5lcikgQ29ubmVjdFRvICh0ZXh0OiBUZXh0TW9kZWxzLk1vZGVsKSwgTkVXO1xwYXIN
Clx0YWIgXHRhYiBcdGFiIChWQVIgczogU2Nhbm5lcikgUG9zICgpOiBJTlRFR0VSLCBORVc7XHBh
cg0KXHRhYiBcdGFiIFx0YWIgKFZBUiBzOiBTY2FubmVyKSBTY2FuSW50IChPVVQgbjogSU5URUdF
UiksIE5FVztccGFyDQpcdGFiIFx0YWIgXHRhYiAoVkFSIHM6IFNjYW5uZXIpIFNjYW5SZWFsIChP
VVQgeDogUkVBTCksIE5FVztccGFyDQpcdGFiIFx0YWIgXHRhYiAoVkFSIHM6IFNjYW5uZXIpIFNj
YW5DaGFyIChPVVQgY2g6IENIQVIpLCBORVc7XHBhcg0KXHRhYiBcdGFiIFx0YWIgKFZBUiBzOiBT
Y2FubmVyKSBTY2FuUHJldkNoYXIgKE9VVCBjaDogQ0hBUiksIE5FVztccGFyDQpcdGFiIFx0YWIg
XHRhYiAoVkFSIHM6IFNjYW5uZXIpIFNjYW5TdHJpbmcgKE9VVCBzdHI6IEFSUkFZIE9GIENIQVIp
LCBORVc7XHBhcg0KXHRhYiBcdGFiIFx0YWIgKFZBUiBzOiBTY2FubmVyKSBTY2FuSW50VmVjdG9y
IChPVVQgdjogQVJSQVkgT0YgSU5URUdFUjtccGFyDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIg
XHRhYiAgT1VUIG51bUl0bTogSU5URUdFUiksIE5FVztccGFyDQpcdGFiIFx0YWIgXHRhYiAoVkFS
IHM6IFNjYW5uZXIpIFNjYW5SZWFsVmVjdG9yIChPVVQgdjogQVJSQVkgT0YgUkVBTDtccGFyDQpc
dGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBPVVQgbnVtSXRtOiBJTlRFR0VSKSwgTkVXO1xw
YXINClx0YWIgXHRhYiBcdGFiIChWQVIgczogU2Nhbm5lcikgU2NhbkludE1hdHJpeCAoT1VUIG1h
dDogQVJSQVkgT0YgQVJSQVkgT0YgSU5URUdFUjtccGFyDQpcdGFiIFx0YWIgXHRhYiBcdGFiIFx0
YWIgXHRhYiBPVVQgbnVtUiwgbnVtQzogSU5URUdFUiksIE5FVztccGFyDQpcdGFiIFx0YWIgXHRh
YiAoVkFSIHM6IFNjYW5uZXIpIFNjYW5SZWFsTWF0cml4IChPVVQgbWF0OiBBUlJBWSBPRiBBUlJB
WSBPRiBSRUFMO1xwYXINClx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIE9VVCBudW1SLCBu
dW1DOiBJTlRFR0VSKSwgTkVXXHBhcg0KXHRhYiBcdGFiIEVORDtccGFyDQpccGFyDQpUaGVzZSBz
ZXF1ZW50aWFsIGlucHV0L291dHB1dCBmYWNpbGl0aWVzIGRvIG5vIG9wZXJhdGUgb24gdGV4dCBm
aWxlcyBccGFyDQpkaXJlY3RseSwgYnV0IHRoZXkgZG8gb3BlcmF0ZSBvbiB0ZXh0IHN0cmVhbXMu
IFRoZXkgY291bGQgYmUgdXNlZCBhcyBhIFxwYXINCmJhc2lzIGZvciBhc2NpaSBmaWxlIEkvTy4g
VGhleSBhcmUgYXZhaWxhYmxlIGF0IEhlbG11dCBaaW5uJ3Mgc2l0ZTpccGFyDQpccGFyDQpodHRw
Oi8vd3d3Lnppbm5hbXR1cm0uZGUvXHBhcg0KXHBhcg0KdW5kZXIgIlBib3giLlxwYXINClxwYXIN
Cj4+IFx0YWIgV2hhdCBpcyBhIHBvdGVudGlhbCB1c2VyIHRvIGRvPyAgU2hvdWxkIG9uZSBpbnZl
c3QgaGVhdmlseSBhbmQgXHBhcg0KPj4gZGV2ZWxvcCBsaWJyYXJpZXMgYW5kIHNraWxscyBqdXN0
IGZvciBCQiBHVUkgcHJvZ3JhbXMsIGFuZCB0aGVuIFxwYXINCj4+IGR1cGxpY2F0ZSBsaWJyYXJp
ZXMgYW5kIHNraWxscyB3aXRoIG90aGVyIGxhbmd1YWdlcyBmb3Igb3RoZXIgXHBhcg0KPj4gY29t
cHV0aW5nIG5lZWRzPyAgSXQgYXBwZWFycyB0aGF0IHNvbWUgQkIgdXNlcnMgZG8gZXhhY3RseSB0
aGF0LCBidXQgXHBhcg0KPj4gbW9zdCBwZW9wbGUgY2Fubm90IGFmZm9yZCB0aGF0IGx1eHVyeS4g
IFF1aXRlIGhvbmVzdGx5LCBCQiBzdGlsbCBccGFyDQo+PiBzZWVtcyBhIGJpdCB1bmZpbmlzaGVk
IGZvciBnZW5lcmFsIHVzZS5ccGFyDQpccGFyDQpJIGFncmVlLCBCQiBzZWVtcyB1bmZpbmlzaGVk
IGZvciBnZW5lcmFsIHVzZS5ccGFyDQpccGFyDQpTdGFuXHBhcg0KXHBhcg0KSi4gU3RhbmxleSBX
YXJmb3JkXHBhcg0KUHJvZmVzc29yIG9mIENvbXB1dGVyIFNjaWVuY2VccGFyDQpQZXBwZXJkaW5l
IFVuaXZlcnNpdHlccGFyDQpNYWxpYnUsIENBIDkwMjYzXHBhcg0KMzEwLTUwNi00MzMyXHBhcg0K
U3Rhbi5XYXJmb3JkQHBlcHBlcmRpbmUuZWR1XHBhcg0KXHBhcg0KLS0tIEJsYWNrQm94XHBhcg0K
LS0tIHNlbmQgc3ViamVjdCBIRUxQIG9yIFVOU1VCU0NSSUJFIHRvIGJsYWNrYm94QG9iZXJvbi5j
aH19ACksIE5FVzsNCgk=


----boundary-LibPST-iamunique-819515399_-_---
Received on Wed May 24 2006 - 19:51:31 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:27:58 UTC