Learning the M family of languages – I want to believe!
I have an itch. A modelling domain specific language itch. I must say that my interest in new languages has been reinvigorated of late and this has seen a flurry of activity around the DLR, IronRuby, IronPython and now most recently the M family of languages via my curiosity in what Oslo has to offer. I haven’t yet delved nearly as far as I intend into M and Oslo, however from what I have seen I must admit I am interested in the possibilities that (small) DSL’s might offer, particularly in the vertical I happen to work in.
HOWEVER
My grandfather had a great saying for when he or other people seemed to find themselves in a state of confusion, he called it “oogle boogled” and I have to say that after Doug Purdy’s latest post I am feeling a bit that way right now. My read on things is that Microsoft seem to be placing “M” and Oslo adjacent to a war cry of “DATA, DATA, DATA, DATA” and hence the announcement that:
“the modelling platform is aligned in a deep and fundamental way with the data programmability stack (ADO.NET, EF/EDM, Astoria, etc”
Doug also goes on to announce that the teams have come closer (much) together, with:
“we made a decision to merge the Data Programmability team (EDM, EF, Astoria, XML, ADO.NET, and tools/designers) and the “Oslo” team (“Quadrant”, Repository, “M”) together”
What Interested me in the first place?
The piece that interested me mostly about Oslo was MGrammar and building textual DSL’s. The reason was simple, I work in a industry where we have a throng of ‘Data Managers’, where I (and others) are engaged in building tools that help these guys manage data. These ‘Data Managers’ are by definition pretty data savvy and tech literate. The potential for the DSL’s in this space largely revolves around tool aids and even the ability to code gen workflow and deployment instructions. So in short I look forward to seeing what the possibilities are with writing DSL’s that produce navigable models and from there it’s a land of unknown promise. Of course to the Eclipse community this is nothing new, but for an old Visual Studio hack like me, it’s a brave new world.
My concern is that if the focus swings deep enough into the “DATA DATA DATA DATA” mantra, somehow the potential for what excited me about the Oslo initiative will perhaps be diminished in it’s significance. I am certainly not stating this to be case, only that it’s a concern of a dilatant, (me), on his way to becoming enlightened. Perhaps misunderstanding on my part and perhaps lost in the articulation on theirs?
No commentsDon’t be COMMON, in Oslo MGrammar or any language for that matter.
I have yet to be convinced (some have tried) that any code libraries warranted the COMMON label. When tested by colleagues on this, it turned out that the contents of any so-called COMMON libraries could easily broken into several new libraries or had their contents attributed to existing libraries within the domain and none of them labelled as COMMON.
This really is one of my pet hates and I keep seeing it over and over again and recently came across it again whilst reading the Microsoft primer document on MGrammer. At the time of this writing the link provided here is not available, presumably due to the timing of the latest CTP drop of the Oslo tools (which now includes Quadrant) but I digress.
This is just the latest offence of the COMMON misdemeanour that I have come across.
module SongSample
{
language Common
{
// Parameterized List rule
syntax List(element)
= e:element => [e]
| es:List(element) e:element => [valuesof(es), e];
// Whitespace
syntax LF = “\u000A”;
syntax CR = “\u000D”;
syntax Space = “\u0020″;
syntax Whitespace = LF | CR | Space;
}
language Song
{
// Reference List rule in Common language
syntax Bars = bs:Common.List(Bar) => Bars[valuesof(bs)];
syntax Songs = ss:Common.List(ASong) => Songs[valuesof(ss)];
// Reference Whitespace rule in Common language
interleave Whitespace = Common.Whitespace;
}
language AnotherLanguage
{
// Reference List rule in Common language
syntax ListOfAs = Common.List(“A”);
}
}
Here we can see that in an effort to describe reusable rules across languages, a language call COMMON has been created with the idea the the syntax rule definitions might be reused, therefore becoming ‘common’ amongst the other languages that reuse them. The thing that starts me wanting to chew on my ear is the use of the word COMMON, which is a word that is descriptive of nothing! COMMON tells me nothing by looking at it. COMMON ensures that I must read the contents if I want to begin to gain an understanding. If we consider that the ‘so-called’ common language (above) contains a parameterized list rule and a set of syntax rules for whitespace, space and line termination then perhaps we can craft some description around those elements? Perhaps we might take the LF, CR, Space and Whitespace elements and put them in a language called MusicalWhitespace? Now I’m sure plenty of you can come up with a better name than that, but I guess the point is that MusicalWhitespace gives me some idea of what it might be about. I still prefer not to let my intent get lost by being common.
Let me finish by saying that I know that the author of the MGrammar in a nutshell document was using this to convey the reuse in as simple and obvious fashion possible and I am not taking a swipe at that document, on the contrary it’s a great quick start into MGrammer, it simply offered an example (albeit a non real world one) where the concept was present and could be highlighted.
No commentsIs SOA really dead? Can you kill something that never existed?
I really had to laugh when I read this article on InfoQ, that discussed a post from Anne Thomas Manes, who suggests that Jan 1, 2009 and the world financial crisis marked the death of SOA. Given that most people in IT don’t know what SOA is and because no-one can agree on a common definition, then what actually died? If this means that JBOWS is dead well then good riddance and perhaps Microsoft weren’t listening and just went ahead and bet the farm on all the new Oslo / Azure platform anyway. Just think, the Internet Service Bus, Dublin Application Server and all the other paraphernalia for nothing; however just cause MS is building this stuff doesn’t mean it will fly. Damn I won’t be able to use NServiceBus or MSMQ or anything ever again………………
SOA is dead! ![]()








