Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

Cedalion: a language for language oriented programming

Published: 22 October 2011 Publication History

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

Cited By

View all
  • (2018)Deriving fluent internal domain-specific languages from grammarsProceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3276604.3276621(187-199)Online publication date: 24-Oct-2018
  • (2014)Graceful DialectsProceedings of the 28th European Conference on ECOOP 2014 --- Object-Oriented Programming - Volume 858610.1007/978-3-662-44202-9_6(131-156)Online publication date: 1-Aug-2014
  • (2013)An object-oriented approach to language compositions for software language engineeringJournal of Systems and Software10.1016/j.jss.2013.04.08786:9(2451-2464)Online publication date: 1-Sep-2013
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

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
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
Published in SIGPLAN Volume 46, Issue 10

Check for updates

Author Tags

  1. Cedalion
  2. domain-specific languages (DSLs)
  3. language workbench
  4. language-oriented programming (LOP)
  5. logic programming

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)21
  • Downloads (Last 6 weeks)5
Reflects downloads up to 12 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2018)Deriving fluent internal domain-specific languages from grammarsProceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3276604.3276621(187-199)Online publication date: 24-Oct-2018
  • (2014)Graceful DialectsProceedings of the 28th European Conference on ECOOP 2014 --- Object-Oriented Programming - Volume 858610.1007/978-3-662-44202-9_6(131-156)Online publication date: 1-Aug-2014
  • (2013)An object-oriented approach to language compositions for software language engineeringJournal of Systems and Software10.1016/j.jss.2013.04.08786:9(2451-2464)Online publication date: 1-Sep-2013
  • (2013)The State of the Art in Language WorkbenchesSoftware Language Engineering10.1007/978-3-319-02654-1_11(197-217)Online publication date: 2013
  • (2024)Reclaiming the Unexplored in Hybrid Visual ProgrammingProceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3689492.3690045(13-25)Online publication date: 17-Oct-2024
  • (2024)Natural Language-Oriented Programming (NLOP): Towards Democratizing Software Creation2024 IEEE International Conference on Software Services Engineering (SSE)10.1109/SSE62657.2024.00047(258-267)Online publication date: 7-Jul-2024
  • (2023)Multiple-Representation Visual Compositional Dataflow ProgrammingCompanion Proceedings of the 7th International Conference on the Art, Science, and Engineering of Programming10.1145/3594671.3594681(39-47)Online publication date: 13-Mar-2023
  • (2019)Compiler generation for performance-oriented embedded DSLs (short paper)Proceedings of the 18th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences10.1145/3357765.3359520(94-101)Online publication date: 21-Oct-2019
  • (2018)Deriving fluent internal domain-specific languages from grammarsProceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3276604.3276621(187-199)Online publication date: 24-Oct-2018
  • (2017)Application EmbeddingCompanion Proceedings of the 1st International Conference on the Art, Science, and Engineering of Programming10.1145/3079368.3079380(1-1)Online publication date: 3-Apr-2017
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media