How to learn MPS

We often hear that the documentation for MPS is bad, and so it is hard or impossible to learn MPS. Granted, MPS has a somewhat steeper learning curve than some other DSLs tools, but on the other hand it is also much more comprehensive than many others: for example, it supports declarative type systems, dataflow analysis, language composition and domain-specific debugging. And granted also, any documentation can always be better, and there is always some point at which you won’t find a problem solved by reading docs. In this case you can always ask questions in the MPS forum or the mbeddr mailing list.

We think, however, that the available documentation for learning MPS is actually quite good. So let’s take a somewhat closer look.

To get started, and to get an initial idea of how MPS works, we suggest you take a look at two screencasts from Vaclav Pech at JetBrains TV (screencast 1, screencast 2).

Then, to get an overview over all the different language aspects and how they fit together, we suggest you take a look at the DSL Engineering book. In Part III on DSL implementation it contains a lot of examples with MPS. The book is available as a PDF (donationware), so it’s easy to obtain.

Next, we suggest you grab the mbeddr user guide and read the tutorials on language extension. It describes in quite some detail 10 different extensions to the C language in MPS.

If that is not enough, there is of course a lot of additional documentation available at the MPS docs page. It contains many screencasts and written tutorials. Some of them are a bit outdated, but they still help convey the fundamentals of how MPS works.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s