Third public review of X3J11 C

Richard A. O'Keefe ok at quintus.uucp
Fri Sep 2 12:32:15 AEST 1988


In article <908 at l.cc.purdue.edu> cik at l.cc.purdue.edu (Herman Rubin) writes:
>In article <8660 at ihlpb.ATT.COM>, nevin1 at ihlpb.ATT.COM (Liber) writes:
>> But the part that isn't irrelevant is *why* did PL/1 turn out, in your
>> words, to be a badly designed language?  We don't want to go around
>> repeating the mistakes of the past if we don't have to.
>
>A language should be easy to read and as easy to write as possible.  The
>kludges made in PL/1 to allow the use of the properties of the machine were
>to use the common assembler notation, which while it is precise, is difficult
>to read and write.
>
I used to use PL/I (yes, that's an "I" not a "1"), and I'm afraid I don't
quite know what Herman Rubin is getting at here.  PL/I syntax, for those
who are fortunate enough not to know it, is full of things like
	PUT FILE (OUTFILE) EDIT (THIS,THAT,THE_OTHER) (A(10)) PAGE;
Roughly,
	<main keyword> {<sub keyword> [(<argument list>)]}... ;
For another example,
	CALL PROCEDURE(ARG1, ..., ARGN);

For an example of arithmetic operations, to add two MxN arrays of
floating point numbers:
	DECLARE (A,B) BINARY FLOAT DIMENSION (1:M, 1:N);
	A = A+B;

I have no desire to praise PL/I, but I honestly don't see any resemblance
to any of the assembly languages I've ever used.

As for infix notation, I wish someone would come up with a standard
notation for sequence concatenation: I've seen "+" (which mathematical
convention reserves for commutative operations), "&" (which looks like
"and"), "*" (which makes the most sense, but is rare), and the theory
papers tend to use a sign which is a bit like ^ and a bit like the
intersection sign, and needless to say isn't in the ISO 8859/1 character set.
In the absence of an agreed notation for such a fundamental operation,
the use of functional notation has a lot to commend it.



More information about the Comp.lang.c mailing list