|I have never designed a programming language for public
consumption. However, I'm becoming increasingly interested in the
process of programming language design.|
Fred Brooks makes a convincing argument about the importance of
having a single architect (although he mentions important
exceptions for having two) to design a system. I share this
opinion, but having a single architect doesn't preclude
incorporating feedback from many people as long as the single
vision is maintained.
I think the process pg chose is fine - there's nothing like
having an actual product to use and bang on to get information to
refine the language. And at some point, it's important to do
exactly that, so it may be a question of timing i.e. how soon to
implement the language.
How do folks feel about a process where a language spec is
developed (by the single visionary, not a committee) in an open
forum for a period of time before a line of code is written? I
realize pg wrote many essays and received much feedback, etc.,
but no spec was created. I wonder whether having a detailed spec
would allow various experts to shoot holes in aspects of it
before it is implemented. This would have the advantage of having
an actual spec as a by product of the process instead of having
the implementation being the spec.
I agree that you can only go so far before a prototypical
compiler would have to be implemented, but I think you can go
pretty far. For application development one must strike a balance
between big design up front (BDUF) and seat of the pants highly
iterative processes. Some domains require more BDUF and some
less. So I guess my question is how much BDUF is advantageous for
designing a programming language?
pg has stated backward compatibility is not necessary yet, so
he's free to make major refinements to the language, but I would
think it would be easier to do that before a compiler is written
and code, such as news.ycombinator exists. In other words, in
theory, he's free to break existing code, but I expect there is at least a little hesitancy to do that as more
application code is written with the language.