Monday, November 20, 2006
Speed is expensive. How fast do you want to go?
Etc3 is composing complete poems (none that I'm prepared to share just yet--the grammars have to expand a bit before I do that--about a month, I'd say).
But SHAZAMMM! Etc3 composes 8-line, 2-stanza poems, of complete and grammatically perfect sentences in about 6 seconds (fastest so far was 3 seconds). Etc2 by comparison would take 8-12 minutes to generate the same amount of output. That's a 2-order-of-magnitude improvement in performance. Oh, are we ever proud of that. But of course we were proud of Etc2 as well, since its grandfather took about 30 minutes to compose a single sentence.
We could not have achieved this much improvement by "fixing" Etc2. It took a complete rewrite: New design philosophy, new language models, new grammar, new database, new everything. Very expensive, inviting the question How fast do you want to go? We'll see.
What interests me most about this is that I am not an incompetent developer. I know how to fine-tune a database, program for performance, design a class hierarchy that conforms to the basic principles of OOP (and when OOP is not the right way). What I don't know (but am starting to glimpse) is what the primary abstractions in an ALG system are.
It always comes down to understanding the application domain. Give me a mediocre programmer who really understands the workings of the business for which he or she is coding over the technical star who thinks that a couple of meetings with end users is all that's needed--that the real value-added is in the syntax and elegant composition.
Just as with natural language, knowing what you are writing about is actually pretty important to the success of a text. And to the success of a computer program.