April 13th, 2009
This week we are starting something we are very excited about.
Konstantin Solomatov, the lead developer of JetBrains MPS, will be giving MPS presentations in a new format (at least for us) — the webinars. The first online MPS seminar will take place this Friday, April 17, at 3pm (GMT+3). The duration is 1 hour.
If you want to attend the webinar, to listen about MPS, ask questions and get them answered promptly, please send us the request at Konstantin.Solomatov@jetbrains.com.
The number of attendees is limited now, so hurry up to join. We are planning to gather the momentum and have more and more webinars, and for other our products too.
See you at the webinar!
Posted by Eugene Toporov, Marketing Manager
Posted in Announcement, Events | 3 Comments »
April 7th, 2009
I have written article for DZone on DSLs and MPS.
DSLs, or Domain Specific Languages, have been known in software engineering for many years. Despite this fact, they aren’t widely used today. In this article we take a look at what DSLs are and why they aren’t widely accepted by mainstream developers. Then we describe how JetBrains MPS solves the main problems which stop DSLs from being widely used.
You can read it here
Posted by Konstantin Solomatov, Lead MPS developer
Posted in Announcement | No Comments »
March 25th, 2009
Language of mathematics contains a lot of domain specific constructs. Almost every part of mathematics has its own domain specific “extensions”. So it’s a good idea to borrow from there. In MPS we have a special base language extension that contains some mathematical notation. In this post we will consider one of such notations that we borrowed from mathematics.
We quite often write code that checks whether a value lies in a specific range. This is especially widespread in a code working with graphics. We might write something like this:

This piece of code checks whether a point lies inside a rectangle. Quite boring, isn’t it? In our jetbrains.mps.baseLanguage.math language we have support for intervals. Instead of the code above, you can write this:

As you can see it is shorter and much easier to read. Intervals, in the language can be open or closed. For example you can write this:

They can even contain infinities:

This language feature will be available in MPS 1.0. In addition to the intervals MPS will provide other mathematical notations, for example sums. We will write about them in one of the following posts.
Posted by Konstantin Solomatov, Lead MPS developer
Tags: extensions
Posted in Feature | 4 Comments »
March 10th, 2009
Konstanting Solomatov, the lead MPS developer, is at QCon this week. He is showing the latest MPS Beta2 there.
If you are nearby, come to talk, ask questions and share your thoughts.
Posted by Eugene Toporov, Marketing Manager
Posted in Events | 1 Comment »
March 5th, 2009
It’s been almost 3 months since the first Beta of Meta Programming System. Since then we have received a good amount of feedback and a lot has been done to improve MPS.
MPS Beta 2 is now available introducing the following major changes:
- Automatic generator generation. MPS tracks whether the required generator is up to date and generates it automatically, if not, before the model that uses this language is generated.
- Easier language generation. When a model that uses a language is being edited, an note will appear in the editor reminding to generate the language and providing one-click option to start generation.

- Smart complete. The code completion (available with Ctrl+Shift+Space) became even smarter: it filters out actions according to the type of the result.
- Faster “find usages”. The usages search speed improved by using the persistent caches.
- Faster “go to root node” action. We use persistent caches in order to make the “go to root node” action work faster.
- Better search in editor. We have FireFox-like search in the editor.

- Other usability, performance improvements and bugfixes.
You are welcome to download MPS Beta 2, try it and let us know your feedback.
Tags: beta
Posted in Announcement | No Comments »
February 26th, 2009
Many functional and dynamic languages have “tuples” in their syntax. Tuple is a sequence of a fixed length. For example, pair, triple and quadruple are tuples. They are very useful when you have algorithms operating on entities which have two, three or more parts and you don’t want to create devoted classes for them, or if you want to return multiple instances from a method.
Let’s take a closer look at how tuples are implemented in MPS.
We have a tuple type. Here is a pair of String and int:

We have a special syntax for tuple construction: we added a new type of literal to the base language:

Each element of a tuple has a name by which it can be accessed:

Tuples are immutable, so you can only create new tuples but can’t change the existing ones. If two tuples contain same element types but different names they are compatible. I.e. you can write:

It took us only about half a day to implement such a cool features in MPS, so it isn’t really hard to do. This feature is going to be available in MPS Beta 2.
MPS Beta 2 should be available next week. Check back at MPS web site or at this blog for the announcement.
Posted by Konstantin Solomatov, Lead MPS developer
Tags: extensions
Posted in Feature | No Comments »
February 18th, 2009
On Feb 12-13, I was taking part in DSL Workshop by SAP in Walldorf, Germany. Walldorf is a small town 150km away from Frankfurt am Main, with population of about 15000, mostly SAP employees. I spoke on MPS there.
On the first day, presentations on different DSL technologies were scheduled, my speech on MPS among them. I had initially planned to speak for about 20 minutes but it has taken about an hour. People were asking a lot of questions about MPS, especially about our editor. They were surprised when they saw how similar our editor is to conventional text editors even though we edit syntax tree directly. The ability to create and extend languages which is a unique feature of MPS has also drawn a lot of attention. Overall, I believe it was a really successful appearance
Of course, there were lots of other presentations, most notably those on Stratego/XT, WebDSL, SAP DSL Infrastructure, XText, Mod4j (which isn’t available yet) and other interesting stuff. Stratego/XT is a platform for text-based languages developed by Eelco Visser, among others. WebDSL is a set of DSLs for web application development. SAP DSL infrastructure is developed by SAP in order to create DSLs for use in their own products. XText is another product that supports development of text-based languages. In addition to language definition, it provides an Eclipse-based editor and integrates with Eclipse-based modeling framework. Mod4j is a set of tools that simplify JEE development using DSLs. On the second day, we discussed architectural options and tradeoffs that should be decided upon when designing a new DSL infrastructure.
I would definitely like to thank SAP AG for arranging this excellent workshop and making it possible for me to make an appearance. Special thanks go to individual participants of the workshop: Axel Uhl (SAP), Bernd Kold (SAP), Thomas Goldschmidt (SAP), Markus Voelter (Itemis), Lennart Kats (TU Delft), Eelco Visser (TU Delft), and Jos Warmer (Ordina).
You can take a look at pictures that I’ve taken during this workshop.
Posted by Konstantin Solomatov, Lead MPS developer
Tags: DSL
Posted in Events | No Comments »
December 10th, 2008
It is a very exciting moment for us because we just released Beta version of MPS. Based on all the feedback on the Beta we plan to release MPS 1.0 in early 2009.
MPS is quite different from what we’ve all known before so, in order to ease the learning curve of MPS for new users, we’ve created a Tutorial. In this tutorial we create a simple language for programmer’s income calculator according to different development rates.
In the end it generates a Java Swing application. The tutorial covers a wide range of topics, and completing it will teach you how to create non-trivial languages in MPS. It teaches defining a language syntax, editor, generator, constraints and typesystem. It also demonstrates an important feature of MPS — language extension.
We are still working on improving the tutorial, but we think it’s already quite useful to get familiar with main MPS’ concepts and techniques.
Even though completing the tutorial takes a significant amount of effort and time: about 2 hours, you will be rewarded with the skills needed to create real languages in MPS. If you have any thoughts about improving this tutorial or have questions about it or MPS, feel free to post your comments here or to our discussion forum.
-JetBrains MPS Team
Tags: beta, tutorial
Posted in Announcement | 9 Comments »
December 9th, 2008
We are going to be writing here about the Language Oriented Programming (LOP) in general and JetBrains Meta Programming System (MPS) as one of its implementations. We’ll be discussing general patterns of LOP, Domain Specific Languages (DSL) and languages extension.
We also plan to use this blog to notify you about new MPS releases. Subscribe to RSS feed to get prompt notifications about posts in this blog.
If you haven’t yet downloaded MPS, please download it and let us know what you think about it.
-JetBrains MPS Team
PS. For your reference, you may find some interesting posts in the old MPS Blog.
Posted in Announcement | 8 Comments »