The current Draft is widely ambiguous and not in keeping with modern
definitional practice for such things. At the Tuesday subcommittee we
enumerated several approaches that have been used in defining various
other standards. These include:
- Formal definition languages, such as Backus-Naur Form (Algol60),
van Wijngaarten Notation (Algol68), and Vienna Definition Language
(PL/1)
- Comprehensive test suites, such as that used by Ada
- Oracles, where the behavior of a particular implement ion is
defined to be canonical (as in SmallTalk and early Java)
- Narrative English, as in K&R C.
Our approach is of course number 4 (narrative) for various good
reasons, despite the well-known clarity and ambiguity problems of
narrative. However, there are a wide range in styles even within the
narrative approach. The following link is to an HTML version of the
1996 draft C++ standard, a example of the state of the art in narrative
standardization.
http://www.csci.csusb.edu/dick/c++std/cd2/index.html
This sort of thing is probably necessary for us if we are to avoid a
sea of ambiguity. Ours would not be as large as the C++ standard, but
what we define is equally as complex as some part of C++ of similar
size and would require similar care.
Ivan
|