University of Hull

CSRG - Domain-Specific Languages


| CSI Technical Reports | Department of Computer Science | University of Hull |

Domain-Specific Programming Languages (DSLs)

A domain-specific programming language (DSL) is typically a little language or customised lightweight language that helps the rapid development of applications by being in exactly the right form for a particular application area. For example, one might rapidly configure games characters by having a game character specification language. One might ask complex questions of a shipping management system by having exactly the right compact and ship-specific vocabulary for posing such queries. One might integrate together complex heritage datasets by using DSL-oriented data transformation and integration languages. Well-known examples of DSLs and their uses include: website mash-ups that tie together existing data sources and databases; using Lua to specify Minecraft game character behaviour; using an XML transformation language to convert one data source to another automatically. One of the best known examples of a DSL is Structured Query Language - a language specifically for posing database queries.

Our research group are already researching DSL technologies that go considerably beyond these simple examples. Our approach of using rapid and efficient data integration and analytics to gain faster and higher value-add for supporting existing and new business innovations is underpinned by some of our existing research into the use of DSLs

Use of DSL techniques for numerically intensive model simulations is ongoing. DSL and fluent interfaces for managing numerical experiments on regular solvers for partial differential equations is being extended to study irregular problems based on finite element or other matrix based solver techniques. A body of matrix and linear algebra solver software systems for conventional and parallel computing systems underpins DSL approaches to generating rapid prototyping of complex model solvers. In the field of High Performance Computing, DSL techniques are also useful for helping generate much of the boilerplate software and code that can help exploit parallel computers and super-computers. Work on the use of DSLs to generate graph computations also presents a powerful route to generating complex network related problem solver systems.

Some Areas of Research Involving Domain-Specific Languages

The links below connect to Technical Notes or peer-reviewed and published articles on various areas of our domain-specific language research activities. Links are to abstracts and bibliographic details, and in most cases also link onwards to a full-PDF version of each article.

DSLs for Manipulating Complex Datasets and Models

CSI-0021: Domain Modelling and Language Issues for Family History and Near-Tree Graph Data Applications

DSLs for Generating Simulation Models

CSTN-209: CUse of Closures to Engineer Software for a Family of Numerical Simulation Models
CSTN-169: Engineering Internal Domain-Specific Language Software for Lattice-Based Simulations
CSTN-166: Fluent Interfaces and Domain-Specific Languages for Graph Generation and Network Analysis Calculations
CSTN-123: Engineering Domain-Specific Languages for Computational Simulations of Complex Systems

Generating High Performance Codes for PDE Solvers

CSTN-187: Simulation Software Generation using a Domain-Specific Language for Partial Differential Field Equations
CSTN-165: On-Demand Generating and Scheduling Optimised Parallel Applications on Heterogeneous Platforms
CSTN-128: Auto-Generation of Parallel Finite-Differencing Code for MPI, TBB and CUDA

Genetic Programming Applications

CSTN-192: Geometric Optimisation using Karva for Graphical Processing Units
CSTN-171: Genetic Programming using the Karva Gene Expression Language on Graphical Processing Units
CSTN-190: Visualisation of Combinatorial Program Space and Related Metrics

Generating Mobile and App Codes

CSTN-142: Software Engineering a Family of Complex Systems Simulation Model Apps on Android Tablets

| CSI Technical Reports | Ken Hawick | Department of Computer Science | University of Hull |