BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage DSLs Content on InfoQ

Articles

RSS Feed
  • How DSLs Withstand the Test of Time

    Domain-specific languages let domain experts participate in the software development process. Few DSLs however withstand the test of time. Key success factors for longstanding DSLs seem to be user-centered design and adhering to the open–closed principle. Markdown, TeX, and CSS, have remained popular and relevant for two decades, even as their original target audience evolved.

  • Why DSLs? A Collection of Anecdotes

    Two years ago, I gave a talk on one of the systems discussed here. Together with a colleague, I explained the business case, the technical benefits, why a regular programming language would not work and the all-around positive outcomes of using the DSLs, plus some of the problems we’ve run into.

  • Metadata-Driven Design: Creating an User-Friendly Enterprise DSL

    What if we could create a language that could be easily understood by the layman but yet enforce those rules that apply to our business domain? What if a snippet of this language could then be interpreted and performed at runtime, without the need for recompilation or redeployment of the system? Aaron Kendall shows how to build such a domain-specific language for a saavy but non-technical crowd.

  • Introducing Spring XD, a Runtime Environment for Big Data Applications

    Spring XD (eXtreme Data) is Pivotal’s Big Data play. It joins Spring Boot and Grails as part of the execution portion of the Spring IO platform. Whilst Spring XD makes use of a number of existing Spring projects it is a runtime environment rather than a library or framework, comprising a bin directory with servers that you start up and interact with via a shell.

  • Interview and Book Review: DSL Engineering

    Markus Völter, one of the authors of "Model-Driven Software Development", has published a new book in the field of model-driven software development (MDSD). "DSL Engineering" focusses on the design and implementation of domain specific languages (DSLs).

  • Book on Leveraging Domain-Specific Languages by Martin Fowler with Rebecca Parsons

    In their new book Martin Fowler and Rebecca J. Parsons address the topic of Domain-Specific Languages. “Domain-Specific Languages” does not only address the concepts behind DSLs, but also tries to explain the subject in a pragmatic manner using examples in Java, C# and other languages.The book contains different patterns that reveal best practices in designing DSLs.

  • Concrete: Rich, Customizable DSL Editors for the Browser

    Text-based DSLs are useful, an custom editor for the DSL is even better. Concrete allows to build customized editors for JSON-based DSLs/Models. InfoQ talks to Concrete's creator Martin Thiede.

  • DSL Evolution

    In this article, author Peter Bell discusses the best practices on how to evolve the DSLs using techniques like backwards compatibility through versioning, to automated transformation of statements.

  • Evolving Java Without Changing the Language

    InfoQ examines three techniques for encouraging experimentation with potential new Java language features - DSLs, the annotation processor, and moving the syntactic sugar from the language to the IDE.

  • Metamodel Oriented Programming

    In this article, Jean-Jacques Dubray questions the belief that code and models are two separate worlds. He presents a unified view of Model Driven Engineering, Architecture and Programming models. In particular, he introduces a novel approach to specify execution element semantics in DSLs.

  • Developing a Complex External DSL

    In this article Vaughn Vernon explains the difference between internal and external DSLs and shows the steps involved in developing a complex external DSL.

  • RGen: Ruby Modelling and Code Generation Framework

    This article introduces RGen, a modelling framework inspired by openArchitectureWare. RGen uses internal DSLs for defining metamodels and offers a full modelling stack for Ruby.

BT