



Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
This paper discusses the similarities and differences between programming and modeling languages and provides criteria for their classification. It applies these criteria to several domain-specific languages (dsls) to determine if they represent a modeling or programming language.
Typology: Papers
1 / 5
This page cannot be seen from the preview
Don't miss anything!




(^1) University of Alabama at Birmingham, USA Department of Computer and Information Sciences {yusun, zekzek, gray, bryant}@cis.uab.edu
(^2) University of Maribor, Slovenia Faculty of Electrical Engineering and Computer Science [email protected]
It is often difficult to discern the differences between programming and modeling languages. As an example, the term “domain-specific language” has been used almost interchangeably in academia and industry to represent both programming and modeling languages, which has caused subtle misconceptions. The borders between a modeling and programming language are somewhat vague and not defined crisply. This paper discusses the similarities and differences between modeling and programming languages, and offers some suggestions on how to better differentiate such languages. A list of criteria is presented for language classification, but it is suggested that a set of the criteria be used, rather than a single criterion. Several example domain-specific languages are used as case studies to motivate the discussion.
This paper focuses on the differences and similarities between programming and modeling languages and provides some criteria for classifying a language. The lack of a well-established definition of the terms “programming” and “modeling” has fostered some widely held misconceptions (e.g., the idea that textual languages are always programming languages and that graphical languages are always modeling languages). This is a difficult question that others have also identified. For example, Greenfield et al. [9] noticed this distinction, but did not provide any criteria for classifying a language. They concluded that the differences between programming and modeling languages are rather insignificant. However, we believe that the differences may have some consequences that are worth considering. The implementation of a language can be better informed by understanding the differences, available tools and implementation strategies for each type of language. There are many different views and opinions on whether a particular language is a programming or modeling language. The distinction becomes more challenging when domain-specific languages (DSLs) [20] are considered. The aim of this paper is to discuss criteria for classification and apply the criteria to several DSLs to determine if the DSL represents a modeling language or programming language. Several existing criteria for classifying a DSL include: 1) whether the language is
expressed in a visual or textual notation, 2) how the language syntax and semantics are defined, 3) issues of language executability, 4) level of abstraction, 5) underlying fundamental concepts of the language, 6) how the language is used in a specific development phase, and
Programming languages play a central role in computer science. Not surprisingly, it has been observed that programming languages are a programmer’s most basic tools [11]. Several informal definitions of a programming language are offered as follows:
hal-00350257, version 1 - 6 Jan 2009
Author manuscript, published in "Domain-Specific Program Development, Nashville : États-Unis d'Amérique (2008)"
engineering technique [24], where models are used to understand and comprehend the parts of a complex system under development. The confusion among modeling and programming languages comes from the perception of what constitutes the essential properties of a model. Despite the fact that models are the core of Model Driven Engineering (MDE) [24], there is still not a widely accepted consensus on the definition of a model. Researchers use either too narrow (e.g., a model is an artifact of a modeling language, such as UML [2], describing a system) or too broad definitions (e.g., everything is a model). Recent attempts to unify various views are described in [17], where a model is an abstraction of a system allowing predictions or inferences to be made. The intention of a model is to represent or describe the system, where the model elements correspond to a concept in the system’s domain. An important feature of a model is the reduction principle [17], which states that a model only reflects some of the system’s properties. Hence, some models can capture only particular aspects of the system, while other models might be more detailed. In this view, a program is also a model, albeit a very detailed model. Hence, the distinction between modeling languages and programming languages can be blurry. In this paper, we assume that a model must exhibit the reduction principle and be free of full details. But, this also offers a challenge to the ability to distinguish programming and modeling languages. There are domain- specific models that are not detailed, but are still complete and executable (i.e., it might be that in a narrow domain these details are fixed and should not be represented in a model). Below are some standard definitions for modeling languages:
This section introduces criteria that could be used to classify a language as a programming or modeling language. The thesis of this paper is that no single criterion can classify a language reliably, but that a profile of several criteria may suggest whether a language is a programming or modeling language. The criteria are as follows:
hal-00350257, version 1 - 6 Jan 2009
lightweight metamodel definition language allowing easy creation and modification of metamodels.
properties like multiple views, metamodel syntax definition are also qualified, the conclusion is even more precise. Programming languages share the same characteristics such as being executable, applied during the implementation phase, having the same fundamental concepts. Using these criteria together can help toward classifying a language as a programming language. If the criterion of lower level abstraction is applicable, the result further leans toward a programming language. Some obvious questions arise from this discussion, such as: How complete is this criteria list? What other criteria could be added? During our experimentation, the proposed criteria were very beneficial for classification of each language. Inevitably, there may be some criteria that can be added. As an example, the concept of Turing completeness could be used to differentiate among general-purpose languages (GPLs) and DSLs. GPLs are Turing complete, but there is no such requirement for DSLs. However, this criterion alone is not sufficient since some DSLs may also be Turing complete (e.g., XSLT).
The recent popularity of DSLs has created some confusion and misconceptions regarding the specific classification of each language. This paper has suggested several criteria that can be used to assist in classifying a DSL as a programming or modeling language. However, each criterion alone is not sufficient to classify a language
This work supported by NSF CAREER award CCF- and NSF award CCF-0811630.
hal-00350257, version 1 - 6 Jan 2009
Table 1 : Summary of classification of various DSLs according to suggested criteria VHDL EBNF ATL KM3 ESML SQL XSLT Graphical Notation
textual ⇒ P textual ⇒ P textual ⇒ P textual ⇒ P graphical ⇒ M textual => P^ textual => P
Language Definition
BNF, informal semantics ⇒ P
BNF, informal semantics ⇒ P
BNF, informal semantics ⇒ P
BNF, operational semantics ⇒ P
metamodel, model interpreter ⇒ M
BNF, formal semantics [21] ⇒ P
XML schema, formal [27] semantics ⇒ P Language Executability
executable ⇒ P not directly executable ⇒ M
executable ⇒ P not executable ⇒ M
not directly executable ⇒ M
executable ⇒ P executable ⇒ P
Level of Abstractions
low ⇒ P high ⇒ M high/medium (both declarative and imperative) ⇒ M
high ⇒ M high ⇒ M medium (both declarative and imperative) ⇒ M
medium ⇒ M
Fundamental Concepts
values, storage, bindings, abstract ⇒ P
entities, connections ⇒ M
values, storage, bindings, abstract ⇒ P
entities, connections ⇒ M
entities, connections, ports ⇒ M
values, storage, bindings ⇒ P
values, storage, bindings ⇒ P
Development Phase
implementation phase ⇒ P
requirement/ design phase ⇒ M
implementation phase ⇒ P
requirement/ design phase ⇒ M
design / implementation ⇒ M
implementation phase ⇒ P
implementation phase ⇒ P
Multiple Views
no ⇒ P no ⇒ P no ⇒ P no ⇒ P yes ⇒ M no ⇒ P no ⇒ P
Conclusion programming language
modeling language
programming language
modeling language
modeling language
programming language
programming language
[1] P. J. Ashenden. The Designer's Guide to VHDL. 2 nd^ Edition, Morgan Kaufmann, 2002. [2] G. Booch, J. Rumbaugh, and I. Jacobson. The Unified Modeling Language User Guide. Addison-Wesley, 1999. [3] M. Burnett and M. Baker. A classification system for visual programming languages. Journal of Visual Languages and Computing , 5(3):287-300, 1994. [4] J. Cuadrado and J. Molina. Building domain-specific languages for model driven development. IEEE Software , 24(5):48-55, 2007. [5] C. J. Date and H. Darwen. A Guide to SQL Standard , 4th Edition, Addison-Wesley, 1997. [6] GME. http://www.isis.vanderbilt.edu/projects/gme/ [7] C. Gonzalez-Perez and B. Henderson-Sellers. Modelling software development methodologies: A conceptual foundation. Journal of Systems and Software , 80(11):1778- 1796, 2007. [8] J. Gray, J.-P. Tolvanen, S. Kelly, A. Gokhale, S. Neema, and J. Sprinkle. Domain-specific modeling. In P. A. Fishwick, editor, CRC Handbook of Dynamic System Modeling. CRC Press,
[14] F. Jouault, and J. Bézivin. KM3: A DSL for Metamodel Specification. International Conference on Formal Methods for Open Object-Based Distributed Systems , Bologna, Italy, pp. 171-185, 2006. [15] G. Karsai, S. Neema, and D. Sharp. Model-driven architecture for embedded software: A synopsis and an example. Science of Computer Programming , 73(1): 26-38, 2008. [16] J. Kramer. Is abstraction the key to computing? Communications of the ACM , 50(4): 36-42, 2007. [17] T. Kühne. Matters of (meta-) modeling. Software and Systems Modeling , 5(4):369-385, 2006. [18] K. C. Louden. Programming Languages: Principles and Practice. 2nd^ Edition, Thomson - Course Technology, 2003. [19] S. Mellor and M. Balcer. Executable UML. Addison-Wesley,
[20] M. Mernik, J. Heering, and A. M. Sloane. When and how to develop domain-specific languages. ACM Computing Surveys , 37(4):316-344, 2005. [21] M. Negri, G. Pelagatti, and L. Sbattela. Formal semantics of SQL queries. ACM Transactions on Database Systems , 16 (3):513-534, 1991. [22] F. G. Pagan. Formal Specification of Programming Languages: A Panoramic Primer. Prentice Hall, 1981. [23] R. Paige, J. Ostroff, and P. Brooke. Principles for modeling language design. Information and Software Technology , 42(10):665-675, 2000. [24] D. Schmidt. Guest editor's introduction. Model-driven engineering. IEEE Computer , 39(2):25-31, 2006. [25] R. Sethi. Programming Languages: Concepts and Constructs. 2 nd^ Edition, Addison-Wesley, 1996. [26] XSLT. http://www,w3.org/TR/xslt.html [27] P. Wadler. A formal semantics of patterns in XSLT, Markup Technologies , Philadelphia, USA, 1999. [28] D. Watt. Programming Language Concepts and Paradigms. Prentice-Hall, 1990. [29] Wikipedia. Programming languages, http://en.wikipedia.org/wiki/Category:Programming_languages
hal-00350257, version 1 - 6 Jan 2009