Stream Syntax

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Stream Syntax

FreeFall
George asked in People who loved Rexx now speak about it in past tense topic what my idea of a no nonsense I/O object would look like.   

I'd like to go one further.   In the 1980's I designed a language, Tabetha as my degree final year project, building on the syntactic simplicity of Classic Rexx, the realisation (from APL) that one can use additional symbols to further this syntactic simplicity, and other influences. Tabetha uses a no nonsense syntax for stream I/O that is, in my opinion, far nicer than object or function calls. 

This is an assignment in Tabetha, using a 'west' arrow:

VariableName ← 7  

The value 7 replaces any earlier value in ValiableName.

This is a stream/pipe in Tabetha, using an 'east' arrow:   

Record → FileName

Where FileName could also be the name of a device, or a port, or a memory location,   (Record contains an end of record character that is CRLF/LF depending on OS).   In this simple case, Record is added to the end of file.   

I believe that a lot of Rexx's charm is its beautiful syntax, that allows programers to concentrate on the task in hand.   Object Oriented programs often loose this because of the parameter nature of the object/method calls.   This can be improved by allowing simple objects (files, etc) to be treated in the same no nonsense fashion as Rexx Strings, with the computer making the necessary translation from elegant syntax into Java object calls.

Is this heresy or a logical extension of  the Rexx ideology?     

Connor.






_______________________________________________
Ibm-netrexx mailing list
[hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: Stream Syntax

Mike Cowlishaw
 
George asked in People who loved Rexx now speak about it in past tense topic what my idea of a no nonsense I/O object would look like.   

I'd like to go one further.   In the 1980's I designed a language, Tabetha as my degree final year project, building on the syntactic simplicity of Classic Rexx, the realisation (from APL) that one can use additional symbols to further this syntactic simplicity, and other influences. Tabetha uses a no nonsense syntax for stream I/O that is, in my opinion, far nicer than object or function calls. 

This is an assignment in Tabetha, using a 'west' arrow:

VariableName ← 7  

The value 7 replaces any earlier value in ValiableName.

This is a stream/pipe in Tabetha, using an 'east' arrow:   

Record → FileName

Where FileName could also be the name of a device, or a port, or a memory location,   (Record contains an end of record character that is CRLF/LF depending on OS).   In this simple case, Record is added to the end of file.   

I believe that a lot of Rexx's charm is its beautiful syntax, that allows programers to concentrate on the task in hand.   Object Oriented programs often loose this because of the parameter nature of the object/method calls.   This can be improved by allowing simple objects (files, etc) to be treated in the same no nonsense fashion as Rexx Strings, with the computer making the necessary translation from elegant syntax into Java object calls.

Is this heresy or a logical extension of  the Rexx ideology?     

Chuckle:  I designed a language (before Rexx, so 1977/78) called Calc.  Intended to be APL without all the unavailable (on cards, etc.) symbols.  I used an East arrow (actually '->') for both the operations above.
 
It was quite nice, and definitely part of the thinking behind Rexx, although I dropped all the vector stuff, for Rexx, as being too unaccessible.
 
Mike

_______________________________________________
Ibm-netrexx mailing list
[hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Stream Syntax

Thomas.Schneider.Wien
In reply to this post by FreeFall
Hi Connor,
   nice idea, I think. Could be also useful for Stems, Lists, and any other kind of collections...

Thomas.
================================================================================================
Am 24.08.2010 14:15, schrieb Connor Birch:
George asked in People who loved Rexx now speak about it in past tense topic what my idea of a no nonsense I/O object would look like.   

I'd like to go one further.   In the 1980's I designed a language, Tabetha as my degree final year project, building on the syntactic simplicity of Classic Rexx, the realisation (from APL) that one can use additional symbols to further this syntactic simplicity, and other influences. Tabetha uses a no nonsense syntax for stream I/O that is, in my opinion, far nicer than object or function calls. 

This is an assignment in Tabetha, using a 'west' arrow:

VariableName ← 7  

The value 7 replaces any earlier value in ValiableName.

This is a stream/pipe in Tabetha, using an 'east' arrow:   

Record → FileName

Where FileName could also be the name of a device, or a port, or a memory location,   (Record contains an end of record character that is CRLF/LF depending on OS).   In this simple case, Record is added to the end of file.   

I believe that a lot of Rexx's charm is its beautiful syntax, that allows programers to concentrate on the task in hand.   Object Oriented programs often loose this because of the parameter nature of the object/method calls.   This can be improved by allowing simple objects (files, etc) to be treated in the same no nonsense fashion as Rexx Strings, with the computer making the necessary translation from elegant syntax into Java object calls.

Is this heresy or a logical extension of  the Rexx ideology?     

Connor.





_______________________________________________ Ibm-netrexx mailing list [hidden email]


--
Thomas Schneider Projects ReyC & LOGOS on www.KENAI.com

_______________________________________________
Ibm-netrexx mailing list
[hidden email]

Tom. (ths@db-123.com)
Reply | Threaded
Open this post in threaded view
|

Re: Stream Syntax

George Hovey-2
In reply to this post by FreeFall
Connor,
Don't quite understand (I have no background in language design).
Does this only apply to I/O?  Is 'VariableName ← 7' something other than an ordinary assignment?

I definitely agree that calls and parameters obscure things, eg the turgid string manipulation calls required by C, C++, Java versus NetRexx's clean way of building strings from pieces (primarily due to its innovative concatenation operators).  Do you have any ideas for improving invocation of Java methods in the same vein?

I also agree that NetRexx has a beautiful syntax.  However, it's not its aesthetic qualities that excite me but its ability to reduce the cognitive load on the programmer.  This is an area of special interest to me: discovering means of reducing the time it takes to comprehend an unfamiliar program.  I take such measures as I can on my own, eg  devising compact variable naming conventions that makes types as well as meanings clear, and creative use of the coloring capabilities of modern editors, but the language itself is the most important element.  Languages that force the mind to function as a parser of complex constructs,  an appalling example being C's type expression syntax, are inimical to this cause.  NetRexx is well above other languages I know of in comprehensibility and I support any measures that will make it more so.  Looking forward to further proposals from you.
George

On Tue, Aug 24, 2010 at 8:15 AM, Connor Birch <[hidden email]> wrote:
George asked in People who loved Rexx now speak about it in past tense topic what my idea of a no nonsense I/O object would look like.   

I'd like to go one further.   In the 1980's I designed a language, Tabetha as my degree final year project, building on the syntactic simplicity of Classic Rexx, the realisation (from APL) that one can use additional symbols to further this syntactic simplicity, and other influences. Tabetha uses a no nonsense syntax for stream I/O that is, in my opinion, far nicer than object or function calls. 

This is an assignment in Tabetha, using a 'west' arrow:

VariableName ← 7  

The value 7 replaces any earlier value in ValiableName.

This is a stream/pipe in Tabetha, using an 'east' arrow:   

Record → FileName

Where FileName could also be the name of a device, or a port, or a memory location,   (Record contains an end of record character that is CRLF/LF depending on OS).   In this simple case, Record is added to the end of file.   

I believe that a lot of Rexx's charm is its beautiful syntax, that allows programers to concentrate on the task in hand.   Object Oriented programs often loose this because of the parameter nature of the object/method calls.   This can be improved by allowing simple objects (files, etc) to be treated in the same no nonsense fashion as Rexx Strings, with the computer making the necessary translation from elegant syntax into Java object calls.

Is this heresy or a logical extension of  the Rexx ideology?     

Connor.






_______________________________________________
Ibm-netrexx mailing list
[hidden email]




_______________________________________________
Ibm-netrexx mailing list
[hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Stream Syntax

Robert L Hamilton
In reply to this post by FreeFall
What was Tabetha written in: C, C++, Machine Code, or what?

bobh

On Tue, Aug 24, 2010 at 7:15 AM, Connor Birch <[hidden email]> wrote:
George asked in People who loved Rexx now speak about it in past tense topic what my idea of a no nonsense I/O object would look like.   

I'd like to go one further.   In the 1980's I designed a language, Tabetha as my degree final year project, building on the syntactic simplicity of Classic Rexx, the realisation (from APL) that one can use additional symbols to further this syntactic simplicity, and other influences. Tabetha uses a no nonsense syntax for stream I/O that is, in my opinion, far nicer than object or function calls. 

This is an assignment in Tabetha, using a 'west' arrow:

VariableName ← 7  

The value 7 replaces any earlier value in ValiableName.

This is a stream/pipe in Tabetha, using an 'east' arrow:   

Record → FileName

Where FileName could also be the name of a device, or a port, or a memory location,   (Record contains an end of record character that is CRLF/LF depending on OS).   In this simple case, Record is added to the end of file.   

I believe that a lot of Rexx's charm is its beautiful syntax, that allows programers to concentrate on the task in hand.   Object Oriented programs often loose this because of the parameter nature of the object/method calls.   This can be improved by allowing simple objects (files, etc) to be treated in the same no nonsense fashion as Rexx Strings, with the computer making the necessary translation from elegant syntax into Java object calls.

Is this heresy or a logical extension of  the Rexx ideology?     

Connor.






_______________________________________________
Ibm-netrexx mailing list
[hidden email]




_______________________________________________
Ibm-netrexx mailing list
[hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: Stream Syntax

Mike Cowlishaw
What was Tabetha written in: C, C++, Machine Code, or what?

Nowadays, any self-respecting language is written in itself :-)))
 
Mike 

_______________________________________________
Ibm-netrexx mailing list
[hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Stream Syntax

Aviatrexx
ZING!  :-))

(Take THAT, ruby, python, perl, ...)

That may be a pretty high bar, Mike.  I think you might have cornered
the market...

Aside from a questionable claim about to C, the only language I have
been able to find that claims to be written in itself is a Smalltalk
variant named "Squeak".

-Chip-

On 8/24/10 16:20 Mike Cowlishaw said:
> What was Tabetha written in: C, C++, Machine Code, or what?
>
> Nowadays, any self-respecting language is written in itself :-)))

_______________________________________________
Ibm-netrexx mailing list
[hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Stream Syntax

FreeFall
In reply to this post by George Hovey-2
 George Hovey wrote:

Connor,
Don't quite understand (I have no background in language design).
Does this only apply to I/O?  Is 'VariableName ← 7' something other than an ordinary assignment?

Sorry, yes this is just an assignment.   I included it for completeness since it helps to explain why the stream arrow points East (no symbol overloading is a feature of Tabetha).

I definitely agree that calls and parameters obscure things, eg the turgid string manipulation calls required by C, C++, Java versus NetRexx's clean way of building strings from pieces (primarily due to its innovative concatenation operators).  Do you have any ideas for improving invocation of Java methods in the same vein?

Yes, and several other ideas that raise the level of the language; they are included in Tabetha.   However, Tabetha is academic since I know of no way to implement the language on Java virtual machine (I don't have the time or money, and know of no one who does).

I also agree that NetRexx has a beautiful syntax.  However, it's not its aesthetic qualities that excite me but its ability to reduce the cognitive load on the programmer. 

Is this not the same thing?   By beautiful, I mean that the program is easily comprehensible by humans.

This is an area of special interest to me: discovering means of reducing the time it takes to comprehend an unfamiliar program. 

This should be of special interest to all programmers.

Languages that force the mind to function as a parser of complex constructs,  an appalling example being C's type expression syntax, are inimical to this cause. 

I have never understood why most programming languages and environments are still so poor.   I had to do things other than Tabetha to earn my living.   I always assumed that others would come along and implement the ideas (or very similar ones) in new programming languages, and Tabetha would become unnecessary.   But somehow, despite the advances in hardware, programming languages seem stuck in the past.   Most people don't seem to question the idea that programmers have to work with arcane syntax and systems.       

NetRexx is well above other languages I know of in comprehensibility 

Yes, that's why we are here.   

and I support any measures that will make it more so.   Looking forward to further proposals from you.

Tabetha is ideologically similar to Rexx, but takes a few things a step further.   However, the most important difference between Rexx and Tabetha is that Rexx made it into the light of day; no mean feat.   Given that NetRexx is perhaps hanging on by the skin of its teeth, and if we don't get our act together, could die, there seems little point in championing Tabetha since Tabetha has zero user base.   

Connor.      

George

On Tue, Aug 24, 2010 at 8:15 AM, Connor Birch <[hidden email]> wrote:
George asked in People who loved Rexx now speak about it in past tense topic what my idea of a no nonsense I/O object would look like.   

I'd like to go one further.   In the 1980's I designed a language, Tabetha as my degree final year project, building on the syntactic simplicity of Classic Rexx, the realisation (from APL) that one can use additional symbols to further this syntactic simplicity, and other influences. Tabetha uses a no nonsense syntax for stream I/O that is, in my opinion, far nicer than object or function calls. 

This is an assignment in Tabetha, using a 'west' arrow:

VariableName ← 7  

The value 7 replaces any earlier value in ValiableName.

This is a stream/pipe in Tabetha, using an 'east' arrow:   

Record → FileName

Where FileName could also be the name of a device, or a port, or a memory location,   (Record contains an end of record character that is CRLF/LF depending on OS).   In this simple case, Record is added to the end of file.   

I believe that a lot of Rexx's charm is its beautiful syntax, that allows programers to concentrate on the task in hand.   Object Oriented programs often loose this because of the parameter nature of the object/method calls.   This can be improved by allowing simple objects (files, etc) to be treated in the same no nonsense fashion as Rexx Strings, with the computer making the necessary translation from elegant syntax into Java object calls.

Is this heresy or a logical extension of  the Rexx ideology?     

Connor.






_______________________________________________
Ibm-netrexx mailing list
[hidden email]



_______________________________________________
Ibm-netrexx mailing list
[hidden email]



_______________________________________________
Ibm-netrexx mailing list
[hidden email]