Skip to content
JonathanAldrich edited this page Nov 26, 2012 · 1 revision

Engineering Philosophy for the Wyvern Tools

  • The first goal is to keep the tools as simple and clean as possible. This will support the overall simplicity of the language. For example, if we find the tools are getting too complex, we should think about whether the language is too complex, forcing tool complexity as a result.

  • A corollary is that we refactor very aggressively. If the code or its design isn't as clean as it could be, we should refactor it immediately, before adding new features.

  • A related goal is to minimize dependencies. The rationale is twofold. First, it forces us to keep things simple. For example, depending on a parser generator makes it tempting to make the lexical structure of the language complex. It may eventually be complex but we don't want to have it be complex in the beginning. Second, and related, we want to self-host the tools for the language. For example, once we can self-host, this will allow us to compile and run Wyvern code entirely in the browser, without contacting a server that is running Java. Another reason to avoid parser generators. Of course, a (simple!) parser-generator is a good test of the DSL definition capabilities of Wyvern.