Clinger, William D. “Re: inexactness vs. exactness.” Scheme requests for implementation, July 28, 2005.
Summary: An insightful discussion of the tension between tight specification of a programming language, for program portability, and loose specification, for flexibility of implementation. Here's the key passage:
Some believe that the specification of a programming language should be categorical, as with the axioms of Euclidean plane geometry; others believe that the specification should admit many models, as with group theory. Many of the arguments I have seen in the Scheme community ultimately come down to an argument between those two extremes.
In my view, the extreme proponents of both extreme positions are too extreme. Those who believe that the specification should be categorical are doomed at the outset, of course, because categoricity is impossible for theories that are as expressive as programming languages. At the same time, portability requires facts on which portable programs can rely. The more such facts, the fewer models.
In my view, one of the hardest parts of language design is to strike a good balance between two fundamentally incompatible goals: to allow as many models as possible while guaranteeing as many facts as possible.