The science, tools, strategies, patterns and tools behind the creation and processing of languages

How would I go about creating a programming language

How would I go about creating a programming language?

The title of this article reflects a question I hear over and over in forums or in emails I receive. I think all curious developers asked it at least once. It is normal to be fascinated by how programming languages work. Unfortunately, most answers we read are very academic or theoretical. Some others contain too […]

A complete tutorial on the Drools business rule engine

A complete tutorial on the Drools business rule engine

Business rules work very well to represent the logic for certain domains. They work well because they result intuitive and close to the way of thinking of many types of domain experts. The reason for that it is that they permit to decompose a large problem in single components. In this way the user has […]

Create a Transpiler: From VBA to VB.NET

Create a Transpiler: From VBA to VB.NET

In this tutorial we show how to create a transpiler, a software that can be useful in a few scenarios: if you have a large codebase in a language that does not fit your needs anymore, you still want to keep developing in one language, but you need better performance or need to run in […]

Developing Business Applications using Jetbrains MPS: interview to Daniel Stieger

Developing Business Applications using Jetbrains MPS: interview to Daniel Stieger

Why this interview? This time I sat down with Daniel Stieger, who is the co-founder of a well known consulting company in the Language Engineering field. We met at at Jetbrains MPS meeting in Munich last year and our companies (ours Strumenta and his Modellwerkstatt) offer similar services. So for us it was a great opportunity […]

Bromium DSL: a DSL to test UI actions

Bromium DSL: a DSL to Test UI Actions

  I recently heard about Bromium, a Domain Specific Language (DSL) to describe user actions on a UI. Given I love everything regarding DSLs I contacted his author, Hristo Vrigazov, and chatted with him about: the DSL he has built, building editors using Xtext, working on an open-source project his visions on language engineering Enjoy! […]

Designing a DSL for accounting

Designing a DSL for accounting: use a DSL to describe taxes, pension contributions, and general financial calculations

Let’s see how we can design a DSL. Many readers appreciated the tutorials we wrote on implementing Domain Specific Languages but kept asking us resources on the designing of these languages. On this blog we have discussed already how to write parsers, interpreters, and compilers but we did not write much on what comes before, […]

Telosys: a Code Generation Tool

Telosys: a Code Generation Tool by Laurent Guerin

In this article we are going to examine Telosys, a code generation tool. We will do that by discussing with its author, Laurent Guerin. This will give us the possibility to learn also about his views on code generation and what its users have accomplished by using Telosys. Why are code generation tools relevant? Code […]

So Much Data, So Many Formats

So Much Data, So Many Formats: a Conversion Service

Data is a core resource for many activities. One important challenge for handling data is storing the data in the right way. We need to choose a format that makes easy solving the problem at hand. When multiple problems are being solved using the same data, that could mean that the same data has to […]

Blazor: .NET in the Browser

Blazor: .NET in the Browser

In this article and tutorial we are going to use Blazor to bring C# in the browser. We are going to talk about what you can do and the things you have to think about when creating a Blazor app. WebAssembly is a great platform that promises to revolutionize development on the browser. Thanks to […]

Tutorial_ how to add an Action to the Jetbrains MetaProgramming-System

How to Add an Action to the Jetbrains MetaProgramming-System

The Jetbrains MetaProgrammin-System (MPS) I published the original version of this article in March 2012, using MPS 2.0.6. I have then updated in July 2018, using MPS 2018.1.5. It is interesting to see how MPS evolved in the meantime. The MetaProgramming-System is a Language Workbench based on projectional editing and it is the most advanced […]