Using Domain Specific Language for modeling and simulation: ScalaTion as a case study

Progress in programming paradigms and languages has over time influenced the way that simulation programs are written. Modern object-oriented, functional programming languages are expressive enough to define embedded Domain Specific Languages (DSLs). The Scala programming language is used to implement ScalaTion that supports several popular simulation modeling paradigms. As a case study, ScalaTion is used to consider how language features of object-oriented, functional programming languages and Scala in particular can be used to write simulation programs that are clear, concise and intuitive to simulation modelers. The dichotomy between “model specification” and “simulation program” is also considered both historically and in light of the potential narrowing of the gap afforded by embedded DSLs.

[1]  Richard E. Nance A history of discrete event simulation programming languages , 1996 .

[2]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1960, Commun. ACM.

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

[4]  Mark Strembeck,et al.  Reusable Architectural Decisions for DSL Design: Foundational Decisions in DSL Projects , 2009, EuroPLoP.

[5]  Robin Milner,et al.  A proposal for standard ML , 1984, LFP '84.

[6]  Lee W. Schruben,et al.  Simulation modeling with event graphs , 1983, CACM.

[7]  David Thomas,et al.  Programming Ruby: the pragmatic programmer's guide , 2000 .

[8]  Ken Arnold,et al.  The Java programming language (2nd ed.) , 1998 .

[9]  John A. Miller,et al.  Java-based query driven simulation environment , 1996, WSC.

[10]  Gilles Dubochet On Embedding Domain-specific Languages with User-friendly Syntax , 2006 .

[11]  John A. Miller,et al.  Supporting interoperability using the Discrete-event Modeling Ontology (DeMO) , 2009, Proceedings of the 2009 Winter Simulation Conference (WSC).

[12]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[13]  Martin Odersky,et al.  Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition , 2010 .

[14]  M PaulHudakEt,et al.  Report on the programming language haskell: a non-strict , 1992 .

[15]  Dean Wampler,et al.  Programming Scala - Scalability = Functional Programming + Objects , 2009 .

[16]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[17]  Paul King,et al.  Groovy in Action , 2007 .

[18]  John A. Miller,et al.  Query driven simulation using SIMODULA , 1989, Annual Simulation Symposium.

[19]  Guido Rossum,et al.  Internet Programming With Python , 1996 .

[20]  Amit P. Sheth,et al.  Investigating ontologies for simulation modeling , 2004, 37th Annual Simulation Symposium, 2004. Proceedings..

[21]  Richard E. Nance,et al.  A history of discrete event simulation programming languages , 1993, HOPL-II.

[22]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[23]  Arie van Deursen,et al.  Domain-specific languages: an annotated bibliography , 2000, SIGP.

[24]  Antonio Cisternino,et al.  Expert F# (Expert's Voice in .Net) , 2007 .

[25]  Tian Zhao,et al.  ScalaQL: Language-Integrated Database Queries for Scala , 2009, SLE.

[26]  Anthony M. Sloane,et al.  Experiences with Domain-Specific Language Embedding in Scala , 2008 .

[27]  Mark Strembeck,et al.  Reusable Architectural Decisions for DSL Design Foundational Decisions in DSL Development , 2009 .

[28]  Eileen Kraemer,et al.  SASSY: A Design for a Scalable Agent-Based Simulation System using a Distributed Discrete Event Infrastructure , 2006, Proceedings of the 2006 Winter Simulation Conference.

[29]  John A. Miller,et al.  JSIM: A Java-based simulation and animation environment , 1997, Proceedings of 1997 SCS Simulation Multiconference.

[30]  Martin Odersky,et al.  Parser combinators in Scala , 2008 .