|
Language Workbench is a term I coined in 2005 to describe a new
class of software development tool, designed to build software
through a rich environment of multiple, integrated,
DomainSpecificLanguages. These tools are still quite a way
away from being mainstream, but development on them continues and
continues to be interesting. They are one of the few things I feel
could significantly change the programming landscape. Language workbenches support the idea of Language-Oriented
Programming, which is the notion of building a sofware system by
identifying the various areas of the system and using (perhaps
building) a Domain Specific Language for each area. The workbench
both supports the definition of these languages and also integrating
them together into a coherent whole. To define the DSLs the workbench supports: - Defining the schema for a Semantic Model for the language
- Defining one or more rich editing environments for the language
- Defining the behaviorial semantics for the language, through
some mix of interpretation and code generation.
The editing environments are what makes these tools stand
out. People have been making external DSLs for decades, but you edit
these in a text editor. language workbenches look to take this much
further, approaching the level of modern PostIntelliJ IDEs, or even
beyond. Some language workbenches support editing in regular text,
others use projectional editors that support structured text that
needs no parsing, or diagrams, or both. In 2005 I wrote a set of
papers on Language Workbenches. Some of these thoughts need to
be revised, but for the moment they are the best deeper discussion
on them.
|