Abstract
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.
- I. Beno, K. Rosenthal, M. Levitine, L. Shaulov, and T. E. Haran. Sequence-dependent cooperative binding of p53 to DNA targets and its relationship to the structural properties of the DNA targets. Nucleic Acids Research, 39 (5): 1919--1932, Mar. 2011.Google ScholarCross Ref
- M. F. Berger and M. L. Bulyk. Universal protein-binding microarrays for the comprehensive characterization of the DNA-binding specificities of transcription factors. Nature protocols, 4 (3): 393--411, 2009.Google Scholar
- M. L. Bulyk. Protein binding microarrays for the characterization of DNA--protein interactions. Advances in Biochemical Engineering/Biotechnology, 104: 65--85, 2007. Analytics of Protein--DNA Interactions.Google ScholarCross Ref
- Cedalion. The Cedalion project homepage. Software Engineering Research Lab, The Open University of Israel, 2010. http://cedalion.sourceforge.net.Google Scholar
- S. Dmitriev. Language oriented programming: The next programming paradigm. Jet Brains on Board, 1 (2), Nov. 2004.Google Scholar
- M. Fowler. Bliki: Fluent interface, Dec. 2005. http://martinfowler.com/bliki/FluentInterface.html.Google Scholar
- M. Fowler. Language workbenches: The killer-app for domain specific languages, June 2005. http://www.martinfowler.com/articles/languageWorkbench.html.Google Scholar
- M. Fowler. Bliki: Projectional editing, Jan. 2008. http://martinfowler.com/bliki/ProjectionalEditing.html.Google Scholar
- S. Freeman and N. Pryce. Evolving an embedded domain-specific language in Java. In Proceedings of the 21st Annual Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'06), pages 855--865, Portland, Oregon, USA, Oct. 22--26 2006. ACM Press. Google ScholarDigital Library
- A. Hen-Tov, D. H. Lorenz, A. Pinhasi, and L. Schachter. ModelTalk: When everything is a domain-specific language. IEEE Software, 26 (4): 39--46, 2009. Special issue on Domain-Specific Modeling. Google ScholarDigital Library
- M. Hennessy and R. Milner. On observing nondeterminism and concurrency. In Automata, Languages and Programming, number 85 in Lecture Notes in Computer Science, pages 299--309. Springer-Verlag, Berlin, Heidelberg, 1980. Google ScholarDigital Library
- M. Hennessy and R. Milner. Algebraic laws for nondeterminism and concurrency. J. ACM, 32 (1): 137--161, Jan. 1985. Google ScholarDigital Library
- P. Hudak. Building domain-specific embedded languages. ACM Computing Surveys (CSUR), 28 (4es), 1996. Google ScholarDigital Library
- L. C. Kats and E. Visser. The Spoofax language workbench: Rules for declarative specification of languages and IDEs. In Proceedings of the ACM International Conference on Systems, Programming Languages, and Applications: Software for Humanity (SPLASH'10), pages 444--463, Reno/Tahoe, Nevada, USA, Oct. 2010. ACM. Google ScholarDigital Library
- D. Knuth. Backus normal form vs. Backus Naur form. Communications of the ACM, 7 (12): 735--736, 1964. Google ScholarDigital Library
- D. H. Lorenz and B. Rosenan. Cedalion: A language oriented programming language. In IBM Programming Languages and Development Environments Seminar (PLDE'10), Haifa, Israel, Apr. 2010. IBM Research.Google Scholar
- D. H. Lorenz and B. Rosenan. Code reuse with language oriented programming. In Proceedings of the 12th International Conference on Software Reuse (ICSR12), number 6727 in Lecture Notes in Computer Science, pages 165--180, Pohang, Korea, June 13--17 2011. Springer Verlag. Google ScholarDigital Library
- D. H. Lorenz and J. Vlissides. Designing components versus objects: A transformational approach. In Proceedings of the 23th International Conference on Software Engineering (ICSE'01), pages 253--262, Toronto, Canada, May 12--19 2001. IEEE Computer Society. Google ScholarDigital Library
- S. Mellor, A. Clark, and T. Futagami. Model-driven development. IEEE software, 20 (5): 14--18, 2003. Google ScholarDigital Library
- M. Mernik, J. Heering, and A. M. Sloane. When and how to develop domain-specific languages. ACM Comput. Surv., 37, Dec. 2005. Google ScholarDigital Library
- R. Milner. A Calculus of Communicating Systems. Number 92 in Lecture Notes in Computer Science. Springer-Verlag, New York, NY, USA, 1980. Google ScholarDigital Library
- A. Mycroft and R. A. O'Keefe. A polymorphic type system for Prolog. Artificial intelligence, 23 (3): 295--307, 1984. Google ScholarDigital Library
- B. Rosenan. Designing language-oriented programming languages. In Companion to the ACM International Conference on Systems, Programming Languages, and Applications: Software for Humanity (SPLASH'10), pages 207--208, Reno/Tahoe, Nevada, USA, Oct. 2010. ACM. Student Research Competition, 2nd prize. Google ScholarDigital Library
- B. Rosenan. Cedalion submission to the language workbench competition of 2011. In M. Völter, E. Visser, S. Kelly, A. Hulshout, J. Warmer, P. J. Molina, B. Merkle, and K. Thoms, editors, Language Workbench Competition. 2011. http://www.languageworkbenches.net/lwc11-cedalion.pdf.Google Scholar
- C. Sassenrath. The REBOL scripting language. Dr. Dobb's Journal: Software Tools for the Professional Programmer, 25 (7): 64--68, 2000. http://rebol.com.Google Scholar
- T. Schrijvers, V. S. Costa, J. Wielemaker, and B. Demoen. Towards typed Prolog. In Proceedings of the 24th International Conference on Logic Programming (ICLP'08), pages 693--697, Udine, Italy, 2008. Springer-Verlag. Google ScholarDigital Library
- C. Simonyi. The death of computer languages, the birth of intentional programming. Technical Report MSR-TR-95--52, Microsoft Corporation, 1995.Google Scholar
- C. Simonyi, M. Christerson, and S. Clifford. Intentional software. ACM SIGPLAN Notices, 41 (10): 451--464, 2006. Google ScholarDigital Library
- Z. Somogyi, F. Henderson, and T. Conway. Mercury, an efficient purely declarative logic programming language. Australian Computer Science Communications, 17: 499--512, 1995.Google Scholar
- T. Stahl and M. Völter. Model-Driven Software Development: Technology, Engineering, Management. John Wiley & Sons, 2006. Google ScholarDigital Library
- C. Szyperski. Component Software, Beyond Object-Oriented Programming. Addison-Wesley, 2nd edition, 2002. With Dominik Gruntz and Stephan Murer. Google ScholarDigital Library
- S. Tobin-Hochstadt and M. Felleisen. The design and implementation of typed Scheme. In Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'08), pages 395--406, San Francisco, California, USA, Jan. 2008. ACM. Google ScholarDigital Library
- E. Visser. Scannerless generalized-LR parsing. Technical Report P9707, University of Amsterdam, Programming Research Group, Department of Computer Science, Kruislaan 403, NL-1098 SJ Amsterdam, The Netherlands, Aug. 1997.Google Scholar
- M. P. Ward. Language-oriented programming. Software-Concepts and Tools, 15 (4): 147--161, 1994.Google Scholar
- J. Wielemaker. An overview of the SWI-Prolog programming environment. In F. Mesnard and A. Serebrenik, editors, Proceedings of the 13th International Workshop on Logic Programming Environments (WLPE'03), pages 1--16, Mumbai, India, Dec. 2003. Report CW371, Katholieke Universiteit Leuven, Nov. 2003.Google Scholar
- XLR. XLR: Extensible language and runtime, 2008. http://xlr.sourceforge.net/concept/XL.html.Google Scholar
Index Terms
- Cedalion: a language for language oriented programming
Recommendations
Cedalion: a language for language oriented programming
OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applicationsLanguage 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 ...
Cedalion 101: "i want my DSL now"
OOPSLA '11: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionCedalion is a research LOP language designed for hosting internal DSLs but with the look-and-feel of external DSLs. Cedalion demonstrates a novel approach that combines extensible logic programming with projectional editing. We shall demonstrate the ...
A case study of language oriented programming with cedalion: [extended abstract]
OOPSLA '11: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionCedalion is an LOP language designed for hosting internal DSLs while providing projectional editing. We present a case study where Cedalion was used to help colleagues in the field of Biology design a DNA microarray for a protein-binding assay.
Comments