In the ongoing series on quips about natural and artificial languages I sat and thought a while about the purpose of reflection in artificial languages.
At first glance reflection looks like a feature of language, but in reality it usually serves another purpose: It provides information about the model the language is speaking about.
In natural languages, the ambient knowledge about the world modeled by language is so strong that explicit reflection is rarely needed. In artificial languages this is not the case - and reflection provides the model knowledge that enables brevity of expression. It is not quite the same as meta linguistic expressiveness of natural languages, since metalinguistic abstraction of natural languages exactly relies on heavy ambient model data and deep conversational state. Or maybe more precisely, reflection in natural language is not as explicit, since reference to entities can be made indirectly, relying on deep state.
So we see now that the level of reflection of the language is paramount for productive brief expression in a language.
This again tells us something about where wizards fail, and what the purpose of IDE's really is at the very abstract level.
IDE's provide rich conversational state - adding to the ambient knowledge about the world modeled by the software. The better the IDE the more straightforward the conversation leading to code. Intentional and aspect oriented software initiatives are looking to dramatically raise the ambient level of conversational state.
Wizards also provide rich conversational state. But the second the conversation is done, the wizard forgets it ever took place. So the conversational state is gone and you are left with a very explicti very heavy uphill struggle to keep the momentum going. Often it is simpler to redo the conversation with variations. Repetitive actions are error prone, so the conclusion is that wizards are bad.