Date: Thu, 8 Feb 2001 08:42:04 -0600 From: Vikram S. Adve To: Chris Lattner 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