> how is π made?_

what?    why?    demo!    get!    how?    who?


Speaking abstract, the ideal language realizing what we wish would have the means to associate any syntax with any given meaning – dynamically. Thus, it should have some facility of the form:


(syntactic) homogeneity: the integration of new syntax is seamless. The same criteria has been defined for good macro languages; Brabrand and Schwartzbach say about the "ideal macro language" [7]: "[it] would allow all nonterminals of the host language grammar to be extended with arbitrary new productions, defining new constructs that appear to the programmer as if they were part of the original language."

full semantical grounding: the meaning of every symbol (expression) in the language, except for a minimal predefined core language, is defined / definable by other expressions of the language in a non-circular way. This property holds for current programming languages, too; however, we want to emphasize that the core language, which all other patterns are defined on top, should be minimal.

reflection completeness: every entity of the language – and of the interpreter, for example, instructions, functions and concepts, is referenceable from within the language.

meta-completeness: there is a meta-level to talk about the language itself (which is provided by reflection-completeness). This meta-level language does neither syntactically nor semantically (in the way it is evaluated) differ from the rest of the language, it actually is (syntactically) the same language and does not open a cascade of meta-levels; for instance, LISP is meta-complete. This aspect is related to homogeneity and includes the sub-aspect full syntactical grounding: every aspect of the grammar describing the language is expressible in the language itself.

full semantical extensibility: this is fulfilled by nearly all programming languages, only machine code having no mean of abstraction, e.g. functions; we add it here for the sake of completeness.

A pattern-language should support…

full syntactical extensibility: the definition of arbitrary new (context-free) syntax is possible – in order to provide a mean for recording recurrent programming patterns.

> the principles_

> 2009-10-27_

π is presented at OOPSLA/Onward! '09 in Orlando, Florida. The feedback is really encouraging for us. You can download the article and slides – as MOV (recommended) or PDF.