Channels ▼

Christopher Diggins

Dr. Dobb's Bloggers

Language Workbenches have Finally Arrived

July 29, 2009

Martin Fowler has been talking about Language Workbenches  as the next great thing for several years now. Intentional Software had been promoting their intentional programming editor as a language workbench, but you still can't buy it. Recently JetBrains launched version 1.0 of their own language workbench, MPS, and it looks promising.

For about 15 years Charles Simonyi has been working on the idea of using domain specific languages (DSL) to capture domain knowledge . This is called Intentional Programming  because the DSL captures the intent. A closely related idea is that of Language Oriented Programming. Both ideas share the idea of a language workbench, a term coined by Martin Fowler.

A language workbench is a tool intended to make it easy to define multiple DSLs and use them on the same piece of code. So imagine that the syntax of your programming language, was just as a detail that was managed by the editor, just like modern editors control your font or syntax coloring today.  

So do we care? I don't really know. As a language designer, I have looked at a lot of DSL toolkits and found them lacking in one way or another. The problem I have is that usually underneath it all is a mediochre VM driving the thing. I would need full control under the hood as well as the syntax. However, I do think that the idea of presenting the same abstract syntax tree (AST) in different ways to the user, probably can't hurt.

For more information on MPS the new JetBrains language workbench, read this article  by Jon Erickson, or go to their site .

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 


Video