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?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I found the "in a nutshell"

I found the "in a nutshell" serie for C# exceptionally useful for the purpose, when I eventually decided to get a hardcopy desktop reference for that language (did so for the version 3.0 of it).

I found it useful because it doesn't even try to teach you how to program in general nor how to program in C#, but instead focuses on the very language constructs (w.r.t its syntax and semantic) and the BCL support that makes your programming in C# (thru a fair amount of concrete examples, re: thread-safety, app domains, reflection support, and so on) more productive and safer precisely because those exist and have been designed that way. The authors are obviously very experienced and I found them pretty talented at explaining in which ways it is important you understand and use the language and library features properly, w.r.t today's S.E. standards in mind, for a specific task.

In regard to being a language reference, I think that it is less so than, say, The C# Programming Language (at Addison Wesley, by Hejlsberg, Wiltamuth, Golde) which is more geared towards C# tools implementors, but it still makes the same assumption as the latter that you're likely not a beginner in programming, and that in addition to the "usual" advanced topics (delegates, generics, etc), you'll also want to learn and master, let's say, the "cool, innovative stuff" (*) (e.g., about the new Linq query syntax vs. method syntax, deferred query execution, expression trees and lambdas, and related concepts inception, etc) shortly after.

(*) well, yes, I know: innovative from the C# language's design process PoV bias (v1, v2, v3, v4, ...), anyway, while not that much innovative from other, older languages' PoV, okay

know your audience

i think you have to choose 1 main audience stereotype and hit that, then you can have sprinkles or gravy on top for other stereotypical users. in other words, there's a lot of subjectivity.