Date: Thu, 8 Feb 2001 08:42:04 -0600
From: Vikram S. Adve <vadve@cs.uiuc.edu>
To: Chris Lattner <sabre@nondot.org>
Subject: RE: Type notation debate...

Chris,

> Okay before you comment, please look at:
>
> http://www.research.att.com/~bs/devXinterview.html

I read this argument.  Even before that, I was already in agreement with you
and him that the C declarator syntax is difficult and confusing.

But in fact, if you read the entire answer carefully, he came to the same
conclusion I do: that you have to go with familiar syntax over logical
syntax because familiarity is such a strong force:

        "However, familiarity is a strong force. To compare, in English, we
live
more or less happily with the absurd rules for "to be" (am, are, is, been,
was, were, ...) and all attempts to simplify are treated with contempt or
(preferably) humor. It be a curious world and it always beed."

> Basically, my argument for this type construction system is that it is
> VERY simple to use and understand (although it IS different than C, it is
> very simple and straightforward, which C is NOT).  In fact, I would assert
> that most programmers TODAY do not understand pointers to member
> functions, and have to look up an example when they have to write them.

Again, I don't disagree with this at all.  But to some extent this
particular problem is inherently difficult.  Your syntax for the above
example may be easier for you to read because this is the way you have been
thinking about it.  Honestly, I don't find it much easier than the C syntax.
In either case, I would have to look up an example to write pointers to
member functions.

But pointers to member functions are nowhere near as common as arrays.  And
the old array syntax:
        type [ int, int, ...]
is just much more familiar and clear to people than anything new you
introduce, no matter how logical it is.  Introducing a new syntax that may
make function pointers easier but makes arrays much more difficult seems
very risky to me.

> In my opinion, it is critically important to have clear and concise type
> specifications, because types are going to be all over the programs.

I absolutely agree.  But the question is, what is more clear and concise?
The syntax programmers are used to out of years of experience or a new
syntax that they have never seen that has a more logical structure.  I think
the answer is the former.  Sometimes, you have to give up a better idea
because you can't overcome sociological barriers to it.  Qwerty keyboards
and Windows are two classic examples of bad technology that are difficult to
root out.

P.S.  Also, while I agree that most your syntax is more logical, there is
one part that isn't:

Arrays (without and with size):
type ::= '[' type ']' | '[' INT ',' type ']'.

The arrays with size lists the dimensions and the type in a single list.
That is just too confusing:
        [10, 40, int]
This seems to be a 3-D array where the third dimension is something strange.
It is too confusing to have a list of 3 things, some of which are dimensions
and one is a type.  Either of the following would be better:

        array [10, 40] of int
or
        int [10, 40]

--Vikram

