Cedalion: a language for language oriented programming

Language Oriented Programming (LOP) is a paradigm that puts domain specific programming languages (DSLs) at the center of the software development process. Currently, there are three main approaches to LOP: (1) the use of internal DSLs, implemented as libraries in a given host language; (2) the use of external DSLs, implemented as interpreters or compilers in an external language; and (3) the use of language workbenches, which are integrated development environments (IDEs) for defining and using external DSLs. In this paper, we contribute: (4) a novel language-oriented approach to LOP for defining and using internal DSLs. While language workbenches adapt internal DSL features to overcome some of the limitations of external DSLs, our approach adapts language workbench features to overcome some of the limitations of internal DSLs. We introduce Cedalion, an LOP host language for internal DSLs, featuring static validation and projectional editing. To validate our approach we present a case study in which Cedalion was used by biologists in designing a DNA microarray for molecular Biology research.

[1]  M. Berger,et al.  Universal protein-binding microarrays for the comprehensive characterization of the DNA-binding specificities of transcription factors , 2009, Nature Protocols.

[2]  Tony Clark,et al.  Model-driven development - Guest editor's introduction , 2003 .

[3]  Boaz Rosenan Designing language-oriented programming languages , 2010, SPLASH/OOPSLA Companion.

[4]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[5]  David H. Lorenz,et al.  Code Reuse with Language Oriented Programming , 2011, ICSR.

[6]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[7]  Itai Beno,et al.  Sequence-dependent cooperative binding of p53 to DNA targets and its relationship to the structural properties of the DNA targets , 2010, Nucleic acids research.

[8]  Steve Freeman,et al.  Evolving an embedded domain-specific language in Java , 2006, OOPSLA '06.

[9]  Charles Simonyi,et al.  Intentional software , 2006, OOPSLA '06.

[10]  Volker Gruhn,et al.  Model-Driven Software Development , 2005 .

[11]  Sam Tobin-Hochstadt,et al.  The design and implementation of typed scheme , 2008, POPL '08.

[12]  Martin P. Ward Language-Oriented Programming , 1994, Softw. Concepts Tools.

[13]  Charles Simonyi,et al.  The Death of Computer Languages, The Birth of Intentional Programming , 1995 .

[14]  Donald E. Knuth,et al.  backus normal form vs. Backus Naur form , 1964, CACM.

[15]  Bart Demoen,et al.  Towards Typed Prolog , 2008, ICLP.

[16]  Robin Milner,et al.  A Calculus of Communicating Systems , 1980, Lecture Notes in Computer Science.

[17]  Oscar Pastor,et al.  Model-Driven Development , 2008, Informatik-Spektrum.

[18]  David H. Lorenz,et al.  Designing components versus objects: a transformational approach , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[19]  Paul Hudak,et al.  Building domain-specific embedded languages , 1996, CSUR.

[20]  Alan Mycroft,et al.  A Polymorphic Type System for Prolog , 1984, Logic Programming Workshop.

[21]  Jan Wielemaker,et al.  An Overview of the SWI-Prolog Programming Environment , 2003, WLPE.

[22]  Zoltan Somogyi,et al.  The Execution Algorithm of Mercury, an Efficient Purely Declarative Logic Programming Language , 1996, J. Log. Program..

[23]  David H. Lorenz,et al.  Cedalion A Language Oriented Programming Language ( Extended Abstract ) ∗ , 2010 .

[24]  S. Dmitriev Language Oriented Programming: The Next Programming Paradigm , 2004 .

[25]  Martha L Bulyk,et al.  Protein binding microarrays for the characterization of DNA-protein interactions. , 2007, Advances in biochemical engineering/biotechnology.

[26]  M Mernik,et al.  When and how to develop domain-specific languages , 2005, CSUR.

[27]  Robin Milner,et al.  Algebraic laws for nondeterminism and concurrency , 1985, JACM.

[28]  Eelco Visser,et al.  The spoofax language workbench: rules for declarative specification of languages and IDEs , 2010, OOPSLA.

[29]  Markus Völter,et al.  Model-Driven Software Development: Technology, Engineering, Management , 2006 .

[30]  Eelco Visser,et al.  Scannerless Generalized-LR Parsing , 1997 .

[31]  David H. Lorenz,et al.  ModelTalk: When Everything Is a Domain-Specific Language , 2009, IEEE Software.