skip to main content
10.1145/1640089.1640128acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

π: a pattern language

Authors Info & Claims
Published:25 October 2009Publication History

ABSTRACT

Current programming languages and techniques realize many features which allow their users to extend these languages on a semantic basis: classes, functions, interfaces, aspects and other entities can be defined. However, there is a lack of modern programming languages which are both semantically and syntactically extensible from within the language itself, i.e., with no additional tool or meta-language. In this paper we present π as an approach that aims to overcome this lack. π provides an abstraction mechanism based on parameterized symbols which is capable of semantically and syntactically unifying programming concepts like variables, control-structures, procedures and functions into one concept: the pattern. We have evaluated the abstraction potential and the syntactic extensibility of π by successfully creating patterns for the aforementioned programming concepts. π could serve as a tool for designing new experimental languages and might generally influence the view we have on current programming concepts.

References

  1. Eric Allen et al. Growing a Syntax Sun Microsystems, FOOL, 2009Google ScholarGoogle Scholar
  2. John Aycock, R. Nigel Horspool Practical Earley Parsing University of Calgary, University of Victoria, Canada, The Computer Journal, Volume 45, Number 6, 2002Google ScholarGoogle Scholar
  3. Jonathan Bachrach, Massachussetts Institute of Technology The Java Syntactic Extender (JSE) Keith Playford, Functional Objects, Inc., OOPSLA, 2001 Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Jonathan Bachrach D-Expressions: Lisp Power, Dylan Style Massachusetts Institute of Technology, USA, Keith Playford, Functional Objects Inc., Somerville, USAGoogle ScholarGoogle Scholar
  5. Don Batory, Bernie Lofaso, Yannis Smaragdakis JTS: Tools for Implementing Domain-Specific Languages The University of Texas at Austin, ICSR, 1998-06 Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. <Bigwig> http://www.brics.dk/bigwig, 2009-01-22Google ScholarGoogle Scholar
  7. Claus Brabrand, Michael I. Schwartzbach Growing Languages with Metamorphic Syntax Macros, PEPM, 2002 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Gilad Bracha Executable Grammars in Newspeak Cadence Design Systems, San Jose, California, USA, ENTCS, Volume 193, Pages 3--18, 2007-11 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Martin Bravenboer, Eelco Visser Concrete Syntax for Objects Universiteit Utrecht, The Netherlands, OOPSLA, 2004Google ScholarGoogle Scholar
  10. Boris Burshteyn Generation and Recognition of Formal Languages by Modifiable Grammars ACM SIGPLAN Notices, Volume 25, Number 12, Pages 45--53, 1990-12 Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Boris Burshteyn USSA--Universal Syntax and Semantics Analyzer ACM SIGPLAN Notices, Volume 27, Number 1, Pages 42--60, 1992-01 Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Alfonso Caracciolo di Forino Some Remarks on the Syntax of Symbolic Programming Languages Communication of the ACM, Volume 6, Number 8, Pages 456--460, 1963-08 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. TE. Cheatham The introduction of definitional facilities into higher level programming languages AFIPS, 1966-11 Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Henning Christiansen A Survey of Adaptable Grammars Roskilde University Centre, SIGPLAN Notices, volume 25 number 11, pages 33--44, 1990-11 Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Tony Clark Beyond Annotations: A Proposal for Extensible Java (XJ) Thames Valley University, United Kingdom, Paul Sammut, James Willans, Cetava Inc.Google ScholarGoogle Scholar
  16. Christopher Diggins Superlanguages: Syntactic and Semantic Supersets of other Languages 2008-03-12Google ScholarGoogle Scholar
  17. Torbjörn Ekman, Görel Hedin The JastAdd Extensible Java Compiler OOPSLA, 2007-10 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Bryan Ford Parsing Expression Grammars: A Recognition Based Syntactic Foundation POPL, 2004-01 Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. The Fortress Language Specification Sun Microsystems Inc., 2007Google ScholarGoogle Scholar
  20. Isabelle http://www.cl.cam.ac.uk/research/hvg/Isabelle 2009-03-16Google ScholarGoogle Scholar
  21. JastAdd http://jastadd.org, 2009-02-25Google ScholarGoogle Scholar
  22. Tony Clark, Paul Sammut, James Willans Superlanguages -- Developing Languages and Applications with XMF Ceteva Inc., 2008Google ScholarGoogle Scholar
  23. Christopher Graham Seaton A Programming Language Where the Syntax and Semantics Are Mutable at Runtime Master's Thesis, University of Bristol, United Kingdom, 2007-05.Google ScholarGoogle Scholar
  24. Bent Brrun Kristensen et al. Abstraction mechanisms in the BETA programming language Aalborg University Center, Aalborg, Denmark, POPL, 1983 Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Logix http://www.livelogix.com/logix, 2009-03-02Google ScholarGoogle Scholar
  26. Rats! -- An Easily Extensible Parser Generator http://www.cs.nyu.edu/rgrimm/xtc/rats.html, 2009-02-27Google ScholarGoogle Scholar
  27. Tim Sheard, Zino Benalssa, Matthleu Martel Introduction to multistage Programming Using MetaML Pacific Software Research Center, Oregon Graduate Institute of Science and Technology, 2000-02Google ScholarGoogle Scholar
  28. Walid Taha A Gentle Introduction to Multi-stage Programming Rice University, Houston, Texas, USA, DSPG, 2003Google ScholarGoogle Scholar
  29. Walid Taha A Gentle Introduction to Multi-stage Programming, Part II Rice University, Houston, USA, GTTSE, 2007Google ScholarGoogle Scholar
  30. Valentin F. Turchin et al. (English: The Language REFAL and its Application in the Automation of Programming) Inter-University Conference on the Automation of Programming of Economical Calculations, Moscow, 1967Google ScholarGoogle Scholar
  31. Markus Völter Architecture as Language: A story InfoQ, 2009-01-28Google ScholarGoogle Scholar
  32. M. P. Ward Language Oriented Programming Computer Science Department, Durham, 2003-01Google ScholarGoogle Scholar
  33. Alessandro Warth OMeta: an Object-Oriented Language for Pattern Matching University of California, Los Angeles, USA, Ian Piumarta, Viewpoints Research Institute, Glendale, California, USA, Dynamic Languages Symposium, OOPSLA, 2007-10 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Daniel Weise, Roger Crew Programmable Syntax Macros Microsoft Research Laboratory, PLDI, 1993 Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. XLR: Extensible Language and Runtime http://xlr.sourceforge.net/concept/XL.html, 2009-02-19Google ScholarGoogle Scholar

Index Terms

  1. π: a pattern language

      Recommendations

      Reviews

      Sergei Gorlatch

      This paper describes π, 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. π is an implementation of such a pattern language. The paper gives a thorough step-by-step description of π. Each step introduces new patterns and examples to show how π works and how it actually fulfills the requirements of a pattern language, according to the formal definition. Besides, the examples often refer to π-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 π more easily. However, the description of the actual implementation of π using Java is a bit too brief. Five use cases are presented to evaluate π's expressivity. The use cases demonstrate that π 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 π, but, since the description of the Java implementation of π is rather short, these readers will probably have to look to other sources. Online Computing Reviews Service

      Access critical reviews of Computing literature here

      Become a reviewer for Computing Reviews.

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!