specifications (was Re: Languages: The Bigger the Uglier)

Henry Spencer <henry@zoo.toronto.edu>
1 Mar 1996 14:03:52 -0500

          From comp.compilers

Related articles
Languages: The Bigger the Uglier (was: Re: Aliasing in ISO C) rfg@monkeys.com (1996-02-19)
Re: Languages: The Bigger the Uglier (was: Re: Aliasing in ISO C) henry@zoo.toronto.edu (Henry Spencer) (1996-02-27)
specifications (was Re: Languages: The Bigger the Uglier) henry@zoo.toronto.edu (Henry Spencer) (1996-03-01)
Re: specifications (was Re: Languages: The Bigger the Uglier) rfg@monkeys.com (1996-03-10)
Re: specifications (was Re: Languages: The Bigger the Uglier) dave@occl-cam.demon.co.uk (Dave Lloyd) (1996-03-14)
Re: specifications (was Re: Languages: The Bigger the Uglier) bobduff@world.std.com (1996-03-16)
Re: specifications (was Re: Languages: The Bigger the Uglier) jejones@microware.com (1996-03-16)
Re: specifications (was Re: Languages: The Bigger the Uglier) hbaker@netcom.com (1996-03-17)
Re: specifications (was Re: Languages: The Bigger the Uglier) jgj@ssd.hcsc.com (1996-03-20)
[11 later articles]
| List of all articles for this month |
From: Henry Spencer <henry@zoo.toronto.edu>
Newsgroups: comp.compilers
Date: 1 Mar 1996 14:03:52 -0500
Organization: SP Systems, Toronto
References: 96-02-226 96-02-308 96-02-327
Keywords: standards

>Unfortunately, such contracts work much better if they are written in
>a language that the implementors and the users can understand without
>calling in a specialist to interpret for them...


jgm@CS.Cornell.EDU (Gregory Morrisett) writes:
>Well, I hate to tell you, but contracts are written in "legal-ese" and
>specialists (aka Lawyers) are called in to draw them up and interpret
>them. :-)


Actually, in recent years there has been a definite trend away from
the more extreme legalese. This is partly because the courts have
shown some tendency to say that people are not expected to conform to
all the details of an agreement they don't understand. (I know of one
software company which simplified its licensing agreement radically
for exactly that reason.)


One should distinguish between drawing up contracts and interpreting
them. Drawing up contracts -- be it in law or in programming
languages -- almost always calls for a specialist, because you want to
be sure that nothing important has been left out and that there are no
hidden defects. That calls for extensive background knowledge and
experienced judgement.


However, it is still reasonable to ask that the resulting document be
intelligible enough -- without an interpreter -- that simple questions
can be answered without specialist assistance. (Complex questions
usually need specialist help either way.)


> I'm not discounting that a formal spec should be easily understood
> by both implementors and users, nor am I discounting the idea that a
> separate user's guide is needed for a language, with illuminating
> examples, and lists of potential pitfalls.


Actually, in some ways the separate user's guide is a confession of
failure -- it says "you're not expected to understand the real spec,
so here's a watered-down version". This causes problems when the two
documents disagree. (And inevitably they do.)


> ...Don't you readily accept the idea of presenting the syntax of a
> language using a BNF grammar (or perhaps even an LALR(k) grammar)?
> Then why protest a formal definition of the semantics, using, say
> structured operational semantics?


Because most people in this business have been exposed to BNF or the
equivalent, and find it easy to understand, and neither of these
statements is true of structured operational semantics. This isn't
irrational prejudice; if the formal-semantics methods were as simple
and clear and readable as BNF, they would have been adopted as quickly
and enthusiastically as BNF was. They haven't been.


It is not hard to see why the difference exists: semantics is a harder
problem, and demands more complex tools. That still doesn't change
the fact that only a tiny minority of potential spec readers are
comfortable with those tools. Wishing won't change that.


The major reason why C rose to its current position of importance,
despite lack of early support from any influential supplier and loud
retching noises from the language-design community, was that it gave
users what they wanted, instead of telling them they shouldn't want
that. Users want specifications they can read.
--
Henry Spencer, henry@zoo.toronto.edu
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.