skip to main content
research-article

Cedalion: a language for language oriented programming

Published:22 October 2011Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle ScholarCross RefCross Ref
  2. 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 ScholarGoogle Scholar
  3. 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 ScholarGoogle ScholarCross RefCross Ref
  4. Cedalion. The Cedalion project homepage. Software Engineering Research Lab, The Open University of Israel, 2010. http://cedalion.sourceforge.net.Google ScholarGoogle Scholar
  5. S. Dmitriev. Language oriented programming: The next programming paradigm. Jet Brains on Board, 1 (2), Nov. 2004.Google ScholarGoogle Scholar
  6. M. Fowler. Bliki: Fluent interface, Dec. 2005. http://martinfowler.com/bliki/FluentInterface.html.Google ScholarGoogle Scholar
  7. M. Fowler. Language workbenches: The killer-app for domain specific languages, June 2005. http://www.martinfowler.com/articles/languageWorkbench.html.Google ScholarGoogle Scholar
  8. M. Fowler. Bliki: Projectional editing, Jan. 2008. http://martinfowler.com/bliki/ProjectionalEditing.html.Google ScholarGoogle Scholar
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. M. Hennessy and R. Milner. Algebraic laws for nondeterminism and concurrency. J. ACM, 32 (1): 137--161, Jan. 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. P. Hudak. Building domain-specific embedded languages. ACM Computing Surveys (CSUR), 28 (4es), 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. D. Knuth. Backus normal form vs. Backus Naur form. Communications of the ACM, 7 (12): 735--736, 1964. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle Scholar
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. S. Mellor, A. Clark, and T. Futagami. Model-driven development. IEEE software, 20 (5): 14--18, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. M. Mernik, J. Heering, and A. M. Sloane. When and how to develop domain-specific languages. ACM Comput. Surv., 37, Dec. 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. R. Milner. A Calculus of Communicating Systems. Number 92 in Lecture Notes in Computer Science. Springer-Verlag, New York, NY, USA, 1980. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. A. Mycroft and R. A. O'Keefe. A polymorphic type system for Prolog. Artificial intelligence, 23 (3): 295--307, 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle Scholar
  25. 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 ScholarGoogle Scholar
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. C. Simonyi. The death of computer languages, the birth of intentional programming. Technical Report MSR-TR-95--52, Microsoft Corporation, 1995.Google ScholarGoogle Scholar
  28. C. Simonyi, M. Christerson, and S. Clifford. Intentional software. ACM SIGPLAN Notices, 41 (10): 451--464, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Z. Somogyi, F. Henderson, and T. Conway. Mercury, an efficient purely declarative logic programming language. Australian Computer Science Communications, 17: 499--512, 1995.Google ScholarGoogle Scholar
  30. T. Stahl and M. Völter. Model-Driven Software Development: Technology, Engineering, Management. John Wiley & Sons, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. C. Szyperski. Component Software, Beyond Object-Oriented Programming. Addison-Wesley, 2nd edition, 2002. With Dominik Gruntz and Stephan Murer. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle Scholar
  34. M. P. Ward. Language-oriented programming. Software-Concepts and Tools, 15 (4): 147--161, 1994.Google ScholarGoogle Scholar
  35. 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 ScholarGoogle Scholar
  36. XLR. XLR: Extensible language and runtime, 2008. http://xlr.sourceforge.net/concept/XL.html.Google ScholarGoogle Scholar

Index Terms

  1. Cedalion: a language for language oriented programming

          Recommendations

          Comments

          Login options

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

          Sign in

          Full Access

          • Published in

            cover image ACM SIGPLAN Notices
            ACM SIGPLAN Notices  Volume 46, Issue 10
            OOPSLA '11
            October 2011
            1063 pages
            ISSN:0362-1340
            EISSN:1558-1160
            DOI:10.1145/2076021
            Issue’s Table of Contents
            • cover image ACM Conferences
              OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
              October 2011
              1104 pages
              ISBN:9781450309400
              DOI:10.1145/2048066

            Copyright © 2011 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 22 October 2011

            Check for updates

            Qualifiers

            • research-article

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader