Language specs are the most prestigious form of language documentation, and to many language designers the most familiar, so people describing new languages sometimes do so in the form of a spec. They write of what implementations “should” and “must not” do, as if there were any implementations, and of portability, as if there were any code to port, and with a language lawyer's opaque rigor, as if there were any language lawyers to defend against.
This is a waste, of course. Unless you're standardizing a language that's already popular enough to have multiple implementations, you should be writing documentation of what the existing implementation does, not a specification of what implementations should do. And if it's a research language, your audience is researchers, not users, so you should focus on elucidating your new ideas, not on thoroughly documenting the mundane parts of the language.
This is what I thought when I read the Kernel spec. But after only three years, there are some eighteen other implementations of vau-based languages, and at least two (klisp and klink) aim to comply with the Kernel spec. Fexpr lisps are so simple that a full implementation fits in the scale of a casual personal project. The other objections may still apply, but at least Kernel has multiple implementations to standardize.
No comments:
Post a Comment
It's OK to comment on old posts.