This paper describes &pgr;, a pattern-based programming language. Based on the observation that programming is all about abstraction, Knöll and Mezini introduce patterns as the fundamental and only construct of a so-called pattern language. They define a set of basic features for a pattern language, which includes semantic and syntactic minimality and extensibility. Thus, a pattern language is not only able to resemble any other programming language, but can also overcome limitations of those languages’ expressivity.
&pgr; is an implementation of such a pattern language. The paper gives a thorough step-by-step description of &pgr;. Each step introduces new patterns and examples to show how &pgr; works and how it actually fulfills the requirements of a pattern language, according to the formal definition. Besides, the examples often refer to &pgr;-based implementations of language constructs, such as data types, mathematical operators, and control flow constructs, that are known from other programming languages; this helps readers understand the mechanisms of &pgr; more easily. However, the description of the actual implementation of &pgr; using Java is a bit too brief.
Five use cases are presented to evaluate &pgr;’s expressivity. The use cases demonstrate that &pgr; can express constructs of arbitrary levels of abstraction, up to complete programming languages. The authors also provide a very comprehensive section on related work that is a remarkable overview of recent research directions in programming.
This paper is for people who have a good knowledge of programming languages and are interested in future trends of computer programming. Readers with a more technical background might also be interested in the actual implementation of &pgr;, but, since the description of the Java implementation of &pgr; is rather short, these readers will probably have to look to other sources.