All Topics  
Domain-specific programming language

 

   Email Print
   Bookmark   Link






 

Domain-specific programming language



 
 
In software development
Software development

Software development is the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products....
, a domain-specific language (DSL) is a programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
 or specification language
Specification language

A specification language is a formal language used in computer science.Unlike most programming languages, which are directly executable formal languages used to implement a system, specification languages are used during systems analysis, requirements analysis and systems design....
 dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique. The concept isn't new—special-purpose programming languages and all kinds of modeling/specification languages have always existed, but the term has become more popular due to the rise of domain-specific modeling
Domain-Specific Modeling

Domain-specific modeling is a software engineering Methodology for designing and developing systems, such as computer software. It involves systematic use of a graphical domain-specific language to represent the various facets of a system....
. Domain-specific languages are Fourth-generation programming languages (4GL)
Fourth-generation programming language

A fourth-generation programming language is a programming language or programming environment designed with a specific purpose in mind, such as the development of commercial business software....
.

The opposite is: Thus, "general" in this sense means "non-specific" rather than "universal".

Examples of domain-specific languages include spreadsheet
Spreadsheet

A spreadsheet is a computer application that simulates a paper worksheet. It displays multiple cells that together make up a grid consisting of rows and columns, each cell containing either alphanumeric text or numeric values....
 formulas and macros, YACC
Yacc

The computer program yacc is a parser generator developed by Stephen C. Johnson at AT&T for the Unix operating system. The name is an acronym for "Yet Another Compiler Compiler." It generates a parsing based on an Formal grammar written in a notation similar to Backus-Naur form....
 grammars for creating parsers, regular expressions for specifying lexers
Lexical analysis

In computer science, lexical analysis is the process of converting a sequence of characters into a sequence of tokens. Programs performing lexical analysis are called lexical analyzers or lexers....
, the Generic Eclipse Modeling System
Generic Eclipse Modeling System

Generic Eclipse Modeling System is a configurable toolkit for creating domain-specific modeling and program synthesis environments for Eclipse ....
 for creating diagramming languages, Csound
Csound

Csound is a computer programming language for dealing with sound, also known as a sound compiler or an audio programming language. It is called Csound because it is written in the C , as opposed to some of its predecessors....
, a language used to create audio files, and the input languages of GraphViz
Graphviz

Graphviz is a package of open source tools initiated by AT&T Labs for Graph drawing Graph theory specified in DOT language scripts. It also provides libraries for software applications to use the tools....
 and GrGen
GrGen

GrGen.NET is a graph transformation tool which generates efficient C Sharp -code out of declarative Graph rewriting rule specifications.Graph and graph rewrite rules are specified by intuitive Domain Specific Language ; they may get used from graph rewrite sequences, a simple, yet for most graph transformation tasks sufficient, special...
, software packages used for graph layout and graph rewriting
Graph rewriting

Graph transformation, or Graph rewriting, concerns the technique to create a new graph out of an original graph using some automatic machine....
.

Creating a domain-specific language (with software to support it) can be worthwhile if the language allows a particular type of problems or solutions to them to be expressed more clearly than pre-existing languages would allow, and the type of problem in question reappears sufficiently often.






Discussion
Ask a question about 'Domain-specific programming language'
Start a new discussion about 'Domain-specific programming language'
Answer questions from other users
Full Discussion Forum



Encyclopedia


In software development
Software development

Software development is the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products....
, a domain-specific language (DSL) is a programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
 or specification language
Specification language

A specification language is a formal language used in computer science.Unlike most programming languages, which are directly executable formal languages used to implement a system, specification languages are used during systems analysis, requirements analysis and systems design....
 dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique. The concept isn't new—special-purpose programming languages and all kinds of modeling/specification languages have always existed, but the term has become more popular due to the rise of domain-specific modeling
Domain-Specific Modeling

Domain-specific modeling is a software engineering Methodology for designing and developing systems, such as computer software. It involves systematic use of a graphical domain-specific language to represent the various facets of a system....
. Domain-specific languages are Fourth-generation programming languages (4GL)
Fourth-generation programming language

A fourth-generation programming language is a programming language or programming environment designed with a specific purpose in mind, such as the development of commercial business software....
.

The opposite is:
  • a general-purpose programming language
    Programming paradigm

    A programming paradigm is a fundamental style of computer programming. . Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation ....
    , such as C
    C (programming language)

    C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
     or Java
    Java (programming language)

    Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
    ,
  • or a general-purpose modeling language such as the UML
    Unified Modeling Language

    Unified Modeling Language is a standardized general-purpose modeling language in the field of software engineering.UML includes a set of graphical notation techniques to create abstract models of specific systems....
    .
Thus, "general" in this sense means "non-specific" rather than "universal".

Examples of domain-specific languages include spreadsheet
Spreadsheet

A spreadsheet is a computer application that simulates a paper worksheet. It displays multiple cells that together make up a grid consisting of rows and columns, each cell containing either alphanumeric text or numeric values....
 formulas and macros, YACC
Yacc

The computer program yacc is a parser generator developed by Stephen C. Johnson at AT&T for the Unix operating system. The name is an acronym for "Yet Another Compiler Compiler." It generates a parsing based on an Formal grammar written in a notation similar to Backus-Naur form....
 grammars for creating parsers, regular expressions for specifying lexers
Lexical analysis

In computer science, lexical analysis is the process of converting a sequence of characters into a sequence of tokens. Programs performing lexical analysis are called lexical analyzers or lexers....
, the Generic Eclipse Modeling System
Generic Eclipse Modeling System

Generic Eclipse Modeling System is a configurable toolkit for creating domain-specific modeling and program synthesis environments for Eclipse ....
 for creating diagramming languages, Csound
Csound

Csound is a computer programming language for dealing with sound, also known as a sound compiler or an audio programming language. It is called Csound because it is written in the C , as opposed to some of its predecessors....
, a language used to create audio files, and the input languages of GraphViz
Graphviz

Graphviz is a package of open source tools initiated by AT&T Labs for Graph drawing Graph theory specified in DOT language scripts. It also provides libraries for software applications to use the tools....
 and GrGen
GrGen

GrGen.NET is a graph transformation tool which generates efficient C Sharp -code out of declarative Graph rewriting rule specifications.Graph and graph rewrite rules are specified by intuitive Domain Specific Language ; they may get used from graph rewrite sequences, a simple, yet for most graph transformation tasks sufficient, special...
, software packages used for graph layout and graph rewriting
Graph rewriting

Graph transformation, or Graph rewriting, concerns the technique to create a new graph out of an original graph using some automatic machine....
.

Creating a domain-specific language (with software to support it) can be worthwhile if the language allows a particular type of problems or solutions to them to be expressed more clearly than pre-existing languages would allow, and the type of problem in question reappears sufficiently often. Language Oriented Programming considers the creation of special-purpose languages for expressing problems a standard part of the problem solving process.

Overview

A domain-specific language is created specifically to solve problems in a particular domain and is not intended to be able to solve problems outside it (although that may be technically possible). In contrast, general-purpose languages are created to solve problems in many domains. The domain can also be a business area. Some examples of business areas include:
  • domain-specific language for life insurance policies developed internally in large insurance enterprise
  • domain-specific language for combat simulation
  • domain-specific language for salary calculation
  • domain-specific language for billing


A domain-specific language is somewhere between a tiny programming language and a scripting language
Scripting language

A scripting language, script language or extension language, is a programming language that allows some control of a single or many Application software....
, and is often used in a way analogous to a programming library. The boundaries between these concepts are quite blurry, much like the boundary between scripting languages and general-purpose languages.

In design and implementation

Domain-specific languages are languages (or most often, declared syntaxes or grammars) with very specific goals in design and implementation. A domain-specific language can be either a visual diagramming languages, such as those created by the Generic Eclipse Modeling System
Generic Eclipse Modeling System

Generic Eclipse Modeling System is a configurable toolkit for creating domain-specific modeling and program synthesis environments for Eclipse ....
, programatic abstractions, such as the Eclipse Modeling Framework
Eclipse Modeling Framework

Eclipse Modeling Framework is an Eclipse -based Model-driven architecture and code generation facility for building tools and other applications based on a structured data model....
, or textual languages. For instance, the command line utility grep
Grep

grep is a command line interface text search utility originally written for Unix. The name is taken from the first letters in global / regular expression / print, a series of instructions for the ed text editor....
 has a regular expression
Regular expression

In computing, regular expressions provide a concise and flexible means for identifying strings of text of interest, such as particular characters, words, or patterns of characters....
 syntax which matches patterns in lines of text. The sed
Sed

sed is a Unix utility which parses text files and implements a programming language which can apply textual transformations to such files. It reads input files line by line , applying the operation which has been specified via the command line , and then outputs the line....
 utility defines a syntax for matching and replacing regular expressions. Often, these tiny languages can be used together inside a shell to perform more complex programming tasks.

The line between domain-specific languages and scripting language
Scripting language

A scripting language, script language or extension language, is a programming language that allows some control of a single or many Application software....
s is somewhat blurred, but domain-specific languages often lack low-level functions for filesystem access, interprocess control, and other functions that characterize full-featured programming languages, scripting or otherwise. Many domain-specific languages do not compile to byte-code or executable code, but to various kinds of media objects: GraphViz exports to PostScript
PostScript

PostScript is a dynamically typed concatenative programming language programming language created by John Warnock and Charles Geschke in 1982. PostScript is best known for its use as a page description language in the electronic and desktop publishing areas....
, GIF
GIF

The Graphics Interchange Format is a Raster graphics that was introduced by CompuServe in 1987 and has since come into widespread usage on the World Wide Web due to its wide support and portability....
, JPEG
JPEG

In computing, JPEG is a commonly used method of for photographic images. The degree of compression can be adjusted, allowing a selectable tradeoff between storage size and image quality....
, etc, where Csound
Csound

Csound is a computer programming language for dealing with sound, also known as a sound compiler or an audio programming language. It is called Csound because it is written in the C , as opposed to some of its predecessors....
 compiles to audio files, and a ray-tracing domain-specific language like POV
POV-Ray

The Persistence of Vision Raytracer, or POV-Ray, is a ray tracing program available for a variety of computer platforms. It was originally based on DKBTrace, written by David Kirk Buck and Aaron A....
 compiles to graphics files. A computer language like SQL
SQL

SQL is a database computer language designed for the retrieval and management of data in relational database management systems , database schema creation and modification, and database object access control management....
 presents an interesting case: it can be deemed a domain-specific language because it is specific to a specific domain (in SQL's case, accessing and managing relational databases), and is often called from another application, but SQL has more keywords and functions than many scripting languages, and is often thought of as a language in its own right, perhaps because of the prevalence of database manipulation in programming and the amount of mastery required to be an expert in the language.

Further blurring this line, many domain-specific languages have exposed APIs, and can be accessed from other programming languages without breaking the flow of execution or calling a separate process, and can thus operate as programming libraries.

Programming tools

Some domain-specific languages expand over time to include full-featured programming tools, which further complicates the question of whether a language is domain-specific or not. A good example is the functional language XSLT, specifically designed for transforming one XML graph into another, which has been extended since its inception to allow (particularly in its 2.0 version) for various forms of filesystem interaction, string and date manipulation, and data typing.

In model-driven engineering
Model-driven engineering

Model-driven engineering is a software development methodology which focuses on creating models, or abstractions, more close to some particular domain concepts rather than computing concepts....
 many examples of domain-specific languages may be found like OCL
Object Constraint Language

The Object Constraint Language is a declarative language for describing rules that apply to Unified Modeling Language models developed at IBM and now part of the UML standard....
, a language for decorating models with assertions or QVT
QVT

QVT , in the model-driven architecture, is a standard for model transformation defined by the Object Management Group....
, a domain specific transformation language. However languages like UML
Unified Modeling Language

Unified Modeling Language is a standardized general-purpose modeling language in the field of software engineering.UML includes a set of graphical notation techniques to create abstract models of specific systems....
 are typically general purpose modeling languages.

To summarize, an analogy might be useful: a Very Little Language is like a knife, which can be used in thousands of different ways, from cutting food to cutting down trees. A domain-specific language is like an electric drill: it is a powerful tool with a wide variety of uses, but a specific context, namely, putting holes in things (although it might also be used to mix paint or remove screws). A General Purpose Language is a complete workbench, with a variety of tools intended for performing a variety of tasks. Domain-specific languages should be used by programmers who, looking at their current workbench, realize they need a better drill, and find that a specific domain-specific language provides exactly that.

Domain-specific language topics


Usage patterns

There are several usage patterns for domain-specific languages:
  • processing with standalone tools, invoked via direct user operation (often on the command line or from a Makefile), e.g. the GraphViz
    Graphviz

    Graphviz is a package of open source tools initiated by AT&T Labs for Graph drawing Graph theory specified in DOT language scripts. It also provides libraries for software applications to use the tools....
     tool set
  • domain-specific languages which are implemented using programming language macro systems, and which are converted or expanded into a host general purpose language at compile-time or read-time.
  • domain-specific languages are called (at runtime) from programs written in general purpose languages like C
    C (programming language)

    C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
     or Perl
    Perl

    In computer programming, Perl is a high-level programming language, List of programming languages by category, Interpreter , dynamic programming language....
    , to perform a specific function, often returning the results of operation to the "host" programming language for further processing. Generally, an interpreter or virtual machine
    Virtual machine

    In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
     for the domain-specific language is embedded into the host application.
  • domain-specific languages are embedded into user applications, like macro languages within spreadsheets, and they are used to execute code that is written by users of the application, dynamically generated by the application, or both.


Many domain-specific languages can be used in more than one way.

Design goals

Adopting a domain-specific language approach to software engineering involves both risks and opportunities. The well-designed domain-specific language manages to find the proper balance between these.

Domain-specific languages have important design goals that contrast with those of general-purpose languages:
  • domain-specific languages are less comprehensive.
  • domain-specific languages are much more expressive in their domain.
  • domain-specific languages should exhibit minimum redundancy according to the following subjective definition.
Redundancy of a program is defined as the average number of textual insertions, deletions, or replacements necessary to correctly implement a single stand-alone change in requirements. For a language, this is averaged over programs in the problem domain. This measure is useful because, the smaller it is, the less likely that bugs can be introduced by incompletely implementing changes.

Idioms

In programming, idioms are methods imposed by programmers to handle common development tasks, e.g.:
  • Ensure data is saved before the window is closed.
  • Before conducting expensive tests, perform cheap tests that can rule out need for expensive tests.
  • Edit code whenever command-line parameters change because they affect program behavior.


General purpose programming languages rarely support such idioms, but domain-specific languages can describe them, e.g.:
  • A script can automatically save data.
  • A smart test harness can learn what good tests are.
  • A domain-specific language can parameterize command line input.


Examples


UNIX shell scripts

UNIX shell scripts give a good example of a domain-specific language for data organization. They can manipulate data in files or user input in many different ways. Domain abstractions and notations include streams (such as stdin and stdout) and operations on streams (such as redirection and pipe). These abstractions combine to make a robust language to talk about the flow and organization of data.

The language consists of a simple interface (a script) for running and controlling processes that perform small tasks. These tasks represent the idioms of organizing data into a desired format such as tables, graphs, charts, etc.

These tasks consist of simple control-flow and string manipulation mechanisms that cover a lot of common usages like searching and replacing string in files, or counting occurrences of strings (frequency counting).

Even though UNIX scripting languages are Turing-complete, they differ from General Purpose Languages.

In practice, scripting languages are used to weave together small UNIX tools such as AWK (or gawk), ls
Ls

In computing, ls is a command to list files in Unix and Unix-like operating systems. ls is specified by POSIX and the Single UNIX Specification....
, sort
Sort (Unix)

Sort is a standard Unix command line program that prints the lines of its input or concatenation of all files listed in its argument list in sorted order....
 or wc
Wc (Unix)

wc is a command in Unix-like operating systems.The program reads either standard input or a list of files and generates one or more of the following statistics: number of bytes, word count, and number of lines ....
.

Although notorious for its use of Greek letters and special symbols, the APL programming language
APL programming language

APL is an array programming language based on a notation invented in 1957 by Kenneth E. Iverson while at Harvard University. It originated as an attempt to provide consistent notation for the teaching and analysis of topics related to the application of computers....
, with its interactive session, provided for rapid design and deployment of interactive and scriptable domain specific languages. These usually, by design, required no special input consideration from its users such as APL keyboards or fonts.

ColdFusion Markup Language

ColdFusion's
ColdFusion

ColdFusion is an application server and software language used for Internet application development such as for dynamic web page. In this regard, ColdFusion is a similar product to Microsoft Active Server Pages, JavaServer Pages or PHP....
 associated scripting language is another example of a domain-specific language for data-driven websites. This scripting language is used to weave together languages and services such as Java, .NET, C++, SMS, email, email servers, http, ftp, exchange, directory services, and file systems for use in websites.

The ColdFusion Markup Language
ColdFusion Markup Language

ColdFusion Markup Language, more commonly known as CFML, is the server-side scripting used by Adobe Systems ColdFusion, BlueDragon and Railo, as well as ColdFusion#Alternative server environments....
 includes a set of tags that can be used in ColdFusion pages to interact with data sources, manipulate data, and display output. CFML tag syntax is similar to HTML element syntax.

FilterMeister

The FilterMeister language is a programming language based on C for the specific purpose of creating Photoshop plug-ins. Although FilterMeister contains much of the C language and function library, it contains only those features which can be used within the context of Photoshop plug-ins and adds a number of specific features only useful in this specific domain. FilterMeister can only compile Photoshop plug-ins and cannot be used to create software usable in other contexts.

MediaWiki templates


The Template feature of MediaWiki
MediaWiki

MediaWiki is a World Wide Web wiki software application used by all projects of the Wikimedia Foundation, all wikis hosted by Wikia, and many other wikis, including some of the largest and most popular ones....
 is an embedded domain-specific language whose fundamental purpose is to support the creation of page templates and the transclusion (inclusion by reference) of MediaWiki pages into other MediaWiki pages.

A detailed description of that domain-specific language can be found at the corresponding article at the .

Software engineering uses

There has been much interest in domain-specific languages to improve the productivity and quality of software engineering
Software engineering

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches....
. Domain-specific language could possibly provide a robust set of tools for efficient software engineering. Such tools are beginning to make their way into development of critical software systems.

The Software Cost Reduction Toolkit is an example of this. The toolkit is suite of utilities including a specification editor to create a requirements specification, a dependency graph browser to display variable dependencies, a consistency checker to catch missing cases in well-formed formula
Well-formed formula

In computer science and mathematical logic, a well-formed formula or simply formula is a symbol or string of symbols that is generated by the formal grammar of a formal language....
s in the specification, a model checker and a theorem prover to check program properties against the specification, and an invariant generator that automatically constructs invariants based on the requirements.

A newer development is Language-oriented programming
Language-oriented programming

Language oriented programming is a style of computer programming, via metaprogramming in which, rather than solving problems in general-purpose programming languages, the programmer creates one or more domain-specific programming languages for the problem first, and solves the problem in those languages....
, an integrated software engineering methodology based mainly on creating, optimizing, and using domain-specific languages.

Advantages and disadvantages

Some of the advantages:
  • Domain-specific languages allow solutions to be expressed in the idiom and at the level of abstraction of the problem domain. Consequently, domain experts themselves can understand, validate, modify, and often even develop domain-specific language programs.
  • Self-documenting code.
  • Domain-specific languages enhance quality
    Quality

    Quality may refer to:Concepts:* Quality * Quality , an attribute or a property* Quality , which has separate meanings in thermodynamics and harmonics...
    , productivity
    Productivity

    Productivity in economics refers to metrics and measures of output from production processes, per unit of input. Labor productivity, for example, is typically measured as a ratio of output per labor-hour, an input....
    , reliability
    Reliability

    In general, reliability is the ability of a person or system to perform and maintain its functions in routine circumstances, as well as hostile or unexpected circumstances....
    , maintainability
    Maintainability

    In software engineering, the ease with which a software product can be modified in order to:* correct defects* meet new requirements* make future maintenance easier, or...
    , portability
    Portability

    Portability is the general characteristic of being readily transportable from one location to another, and may specifically refer to:*Portability , the portability of social security benefits...
     and reusability
    Reusability

    In computer science and software engineering, reusability is the likelihood a segment of source code can be used again to add new functionalities with slight or no modification....
    .
  • Domain-specific languages allow validation
    Validation

    The word validation has several uses:* In common usage, validation is the process of checking if something satisfies a certain criterion. Examples would include checking if a statement is true , if an appliance works as intended, if a computer system is secure, or if computer data are compliant with an open standard....
     at the domain level. As long as the language constructs are safe any sentence written with them can be considered safe.


Some of the disadvantages:
  • Cost of learning a new language vs. its limited applicability
  • Cost of designing, implementing, and maintaining a domain-specific language as well as the tools required to develop with it (IDE
    Integrated development environment

    An integrated development environment also known as integrated design environment or integrated debugging environment is a software application that provides comprehensive facilities to computer programmers for software development....
    )
  • Finding, setting, and maintaining proper scope.
  • Difficulty of balancing trade-offs between domain-specificity and general-purpose programming language constructs.
  • Potential loss of processor efficiency
    Algorithmic efficiency

    In computer science, efficiency is used to describe properties of an algorithm relating to how much of various types of resources it consumes. The two most frequently encountered are...
     compared with hand-coded software.


See also

  • Architecture description language
    Architecture description language

    Different communities use the term architecture description language. Two important communities are:* The software engineering community* The enterprise modelling and engineering community...
  • Combinator library
    Combinator library

    A combinator library is a Library which implements Combinatory logic for a functional programming language; "the key idea is this: a combinator library offers functions that combine functions together to make bigger functions"....
  • Domain analysis
    Domain analysis

    In software engineering, domain analysis, or product line analysis, is the process of analyzing related software systems in a Application domain to find their common and variable parts....
  • Domain-specific modeling
    Domain-Specific Modeling

    Domain-specific modeling is a software engineering Methodology for designing and developing systems, such as computer software. It involves systematic use of a graphical domain-specific language to represent the various facets of a system....
  • Domain-Specific Multimodeling
    Domain-specific multimodeling

    Domain-specific multimodeling is a software development paradigm where each view is made explicit as a separate domain-specific language .Succesful development of a modern enterprise system requires the convergence of multiple views....
  • Fluent interface
    Fluent interface

    In software engineering, a fluent interface is a way of implementing an Object oriented design API in a way that provides for more readable code....
  • Linguistic Method
    Linguistic method

    In software engineering, the linguistic method is an approach to developing software based on awareness of formal computer science and information theory....
  • Model-driven engineering
    Model-driven engineering

    Model-driven engineering is a software development methodology which focuses on creating models, or abstractions, more close to some particular domain concepts rather than computing concepts....
  • Metalinguistic abstraction
    Metalinguistic abstraction

    In computer science, metalinguistic abstraction is the process of solving complex problems by creating a new language or vocabulary to better understand the problem space....
  • Metamodeling
    Metamodeling

    Metamodeling, or meta-modeling in software engineering and systems engineering among other disciplines, is the analysis, construction and development of the frames, rules, constraints, models and theories applicable and useful for modeling a predefined class of problems....
  • Multi-paradigm programming language
    Multi-paradigm programming language

    A multi-paradigm programming language is a programming language that supports more than one programming paradigm. As Lead designer Tim Budd holds it: The idea of a multiparadigm language is to provide a framework in which programmers can work in a variety of styles, freely intermixing constructs from different paradigms. The design goal...
  • Programming domain
    Programming domain

    A programming domain defines a specific kind of use for a programming language.Some examples of programming domains are:*Application software...
  • Programming paradigm
    Programming paradigm

    A programming paradigm is a fundamental style of computer programming. . Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation ....


Further reading

  • Dunlavey, "Building Better Applications: a Theory of Efficient Software Development" International Thomson Publishing ISBN 0-442-01740-5, 1994.
  • Constance Heitmeyer. Using the SCR Toolset to Specify Software Requirements. Proceedings, Second IEEE Workshop on Industrial Strength Formal Specification Techniques, Boca Raton, FL, Oct. 19, 1998.
  • Marjan Mernik, Jan Heering, and Anthony M. Sloane. When and how to develop domain-specific languages. ACM Computing Surveys, 37(4):316–344, 2005.
  • Diomidis Spinellis. . Journal of Systems and Software, 56(1):91–99, February 2001.


External links

  • (from The Art of Unix Programming
    The Art of Unix Programming

    The Art of Unix Programming by Eric Raymond is a book about the history and culture of Unix programming from its earliest days in 1969 to now, covering both genetic derivations such as BSD and conceptual ones such as Linux....
    )
  • and . Also in
  • and
  • Article
  • Article
  • Article
  • Article
  • Book