The large number of programming languages in the world is a consequence of the broad spectrum of human preferences for different notational styles and semantic models, which depend on background and application area. The situation concerning visual languages seems even worse, because of the greater syntactic flexibility allowed. Indeed, a single person might use a number of different syntaxes in different application areas. This has led to increasing emphasis on language frameworks, structures within which a variety of languages can be embedded, such that components written in these languages can still be linked together for use. An operational approach to designing a framework is to examine what all languages have in common, and what can be allowed to vary; that is, defining operations that allow for the direct manipulation of languages as first class objects. This is explored here.
Chris M. Holt