[Info-vax] DCL's flaws (both scripting and UI)

Stephen Hoffman seaohveh at hoffmanlabs.invalid
Mon Jan 19 19:04:12 EST 2015


On 2015-01-19 01:56:09 +0000, David Froble said:

> Stephen Hoffman wrote:
> 
>> asynchronous processing
> 
> Use Basic and ASTs

But then BASIC doesn't script DCL commands all that well, either.

> 
>> floating point
> 
> Basic has it

DCL doesn't.

>> 64-bit integers
> 
> Basic has it

DCL doesn't.

>> binary data
> 
> Basic has it

DCL doesn't.

>> objects
> 
> Can you be specific, don't really understand

Objects are opaque wads of data (and variously also of the application 
code, too) which can be passed around, and without particular regard 
for what the object is or contains.  Think of these like a string or an 
integer variable, but where you don't have to know what the object 
contains in order to work with it.   With a string or an integer value 
in BASIC, you have to special-case how you might print that, for 
instance.  With objects, the run-time takes care of that.  Pass the 
object to a print routine, and it gets printed.   The metadata 
necessary for handling binary data or for ASCII or UTF-8 string 
encoding can be implemented here, too.   There are other uses for 
objects of course, and the approach is very flexible.  In some 
environments, objects can contain code, so you can package the code and 
the related data together.  This similar to how you might package 
together some BASIC code into a single source file and then build it 
into a shareable image, but applied at a much more granular level; 
where the code and the data can be treated as, well, an object.  Like a 
shareable image, an object has a defined API, and related behaviors.  
Which means that the source code doesn't end up all twisted together, 
just like you would do with source files and libraries and shareable 
images.  But this where you might have, for instance, an object within 
your code that contains a UTF-8 string and some code that can find the 
length of that string for you, or that can dump out the string.  It's 
really quite handy.  Newer Fortran and COBOL have some support for 
this, as do Python and C++ and some other languages, but I've not seen 
anything similar with BASIC.

I'm here intentionally not using entirely correct terminology, nor am I 
detailing method invocations and messaging, or whatever a particular 
language might call it.

> 
>> dictionaries
> 
> Can you be specific, don't really understand

Key-value stores.  These are a form of an in-memory indexed file.   
Specify the key, get the value.   BASIC doesn't have anything similar 
built into the language, though some folks do use RMS indexed files 
here.

> 
>> arrays
> 
> Basic has it

So does DCL, if I wanted to substitute symbols.

...
> 
>> support for menu-based and graphical-based user interfaces
> 
> Hmmmmm ........  I've got a menu application ...

And you probably either used a framework (SMG, FMS, etc) to get there, 
or you wrote and are maintaining a whole lot of code slinging control 
sequences around.  DCL doesn't have this option, but more than a few 
folks have written menus in DCL.  Warts and all.  Less application code 
and more shared code is better.

> 
>> JIT
> 
> Basic has it

No, BASIC does not have a JIT.

> 
>> compilation
> 
> Basic has it

DCL is interpreted, and also lacking a JIT.

>> embedding
> 
> Can you be specific, don't really understand

There are parts of many applications where you can SPAWN a procedure, 
or pass DCL commands into a subprocess.  Imagine if that wasn't a 
SPAWN, but that the same DCL code was compiled and linked directly into 
the application.

>> debugging
> 
> Basic has it

So does DCL, via third-party.

>> DCL libraries
> 
> Basic has object and run time libraries

Those aren't easily callable from DCL, and DCL has no particular 
subroutine capabilities for itself, which means that folks have a 
scattering of separate DCL procedures that they locate by logical name 
or path, or the folks embed copies of that shared DCL in various 
procedures, or the folks create their own DCL activation logic.  Which 
gets messy.

> 
>> More specific error trapping than ON; let me catch specific errors.
> 
> Basic has it

But does your DCL?

> 
> ...
> Are we having fun yet?

Having worked a whole lot in DCL and BASIC and other languages over the 
years, well, not really.  :-)



-- 
Pure Personal Opinion | HoffmanLabs LLC




More information about the Info-vax mailing list