From: | jgm@CS.Cornell.EDU (Gregory Morrisett) |
Newsgroups: | comp.compilers |
Date: | 19 Feb 1996 23:40:02 -0500 |
Organization: | Cornell Univ. CS Dept, Ithaca NY 14853 |
References: | 96-01-037 96-02-171 96-02-187 96-02-226 |
Keywords: | C, standards, design |
Ronald F. Guilmette <rfg@monkeys.com> wrote:
>I see only one solution. We must at some point introduce some
>disipline into the process of crafting languages and their standards.
>... We need
>to insist that language standardization committees write complete
>FORMAL SPECIFICATIONS for the arcane and baroque languages that they
>are trying to standardize.
Well, many of us in the programming language community have claimed
this for years. In particular, the family of ML languages come
equipped with formal, mathematical specifications. Though far from
perfect, these specifications are developed in a rigourous manner, and
properties (e.g., type correctness) are proven from the
specifications.
The definition of Standard ML (circa '89) is a 100 page booklet.
There are similar definitions for languages such as Scheme and
Modula-3. Each of these language definitions is small, concise, and
provides a complete [extensional] semantics for the languages in
question. Not to say that these are easy to understand manuals --
they're not meant as user's guides, but rather reference manuals.
In contrast, the ('83) Ada Reference Manual is around 400 pages and
barely manages to precisely specify the syntax of the language, much
less its semantics. This is because the designers of the language,
for reasons unknown to me, decided to use 1950's style English
specifications, complete with all the ambiguities inherent in the
specification language.
Providing a precise semantics for a language is not just something
for the "theoriticians" to do -- it really provides the basis for
a language -- a contract for both the implementors and the users.
Without one, the language is meaningless (pun intended).
-Greg
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.