archives

What makes a good book on a language?

I posted(or reposted) a request for feedback on what a book on Racket should contain. The reason for the request was that many languages have a book, but Racket does not.

JavaScript has "... the good parts"
Lisp has "on lisp"
Scheme has TSPL
C has K&R
Python has Lutz
etc.

A pretty diverse range.

So: What makes a good book on a language?

Tolerant vs. Demanding Software

In chapter 11 of Bertrand Meyer's excellent book "Object-Oriented Software Construction", there is a discussion of Tolerant vs. Demanding software. In tolerant software, the program tries to handle conditions which should never occur rather than asserting that they do not occur. In demanding software, each routine has a set of preconditions and postconditions, and the body of each routine is written as if the preconditions have been met.

Meyer's thesis is that tolerant code should be avoided because it unnecessarily increases the complexity of the program. My view is that his argument is rock solid; it is logical, and agrees with my intuition and experience. It seems that a significant number of programmers disagree with me:

-According to Code Complete, the Microsoft Word team asserts that unwanted conditions are not true and then proceeds to handle them.

-In the recent thread on Go's panic mechanism, someone made an argument for tolerant software (http://lambda-the-ultimate.org/node/3896#comment-58329).

-I often find myself working with programmers who are writing tolerant code.

Because of this, I am trying to gather a collection of papers and articles making arguments for and against the demanding style of coding. I'm having trouble find said papers and articles; do LtU'ers know of any good ones?

To provide some context, my background is programming in the video game industry using C++.