Microsoft’s New ‘M’ Programming Language
In a software-centric world where we already have many, many languages to program in, from scripting to bytecode compiled languages, to frameworks on top of languages and embedded languages, now Redmond wants to bring ANOTHER language to the table, titled ‘M’ (for Microsoft?).
The new language is to be a part of Microsoft’s new Oslo development and service-oriented strategy, incorporating features from XAML while being textual and domain-specific. M is to be used directly with 2 other components to be released with M along with Visual Studio 2010: Quadrant, a tool for building models visually, and a repository for storing and viewing models in an SQL database.
Microsoft has not said much other than that about the new language, but it will presumably be a compiled .net language (goodbye true native code), and from what Microsoft said, M is to strive to be cross-platform…. with a catch.
By “cross platform”, Microsoft means, “cross platform as long the other platform authors write a backend for the code, and the SQL database MUST be hosted on MS SQL, a proprietary Microsoft Windows service”. It makes perfect sense for being cross platform, if you are Microsoft and trying to purchase many copies of Windows (therefore generating revenue, and presumably the version is Vista or win2k8 since XP is out).
Another source says the language is actually their ‘D’ language (and no, Microsoft did not originally invent D either), only revamped to fit into their new Oslo modeling strategy and renamed to a further letter down the alphabet to attract new interest in an old product. While this may be mostly true, D, which was never really promoted as a .net compilable language (it just kinda disappeared) had many flaws and never really caught on although some were enthusiastic about it (just like Bill Gates said we would write code for OS/2 for the next 10 years after its release).
The fundamentals and principals of the language are attractive, especially for OOP, but its ties to MS SQL and .net would only really make it attractive to Windows-specific applications, although its integration with ASP.net is unclear at this point. The mono project does a descent job of allowing .net code to run on non-windows platforms, and if M adheres to the same standards then after a given time M-written applications will be penguin-friendly as well if Microsoft can get around the MS SQL dependency.
Time will only tell how many will actually use the language outright before Microsoft finds a way to force programmers to use it, most likely by dropping support for some features in all languages except M to promote its usage. For now it appears that the only “non-visual” C/C++ code encouraged for usage with Windows by Microsoft is in fact Windows itself, given the fact that Microsoft’s programmers are on Microsoft’s payroll. But if all newbie programmers learn these new languages, who will manage the billions of lines of C and C++ we currently use in the future, unless it is implied to be completely be rewritten? I’m sure the folks from the original Bell labs team would be interested in the answer to these questions as well.
Comments (21)

Those commenting on why Microsoft is being so .NET-centered these days might wish to read this article: http://thecoffeedesk.com/news/index.php/archives/210 .
It focuses mainly on the transition to ARM-based netbooks, but could generally be the primary reason MS wants application programmers to migrate to .NET rather than traditional native code, to take .NET to the same portability as Java and therefore aiding a future Windows transition to non-x86 hardware.
Milkweed –
What is it about software written in the 1980s, and evolved through the years, that makes it inferior to software written in the 2000s? Does the functionality of VistA make the physician less effective or less efficient?
Take a look at http://worldvista.org sometime, and also at the hardhats list at http://groups.google.com/group/hardhats
Regards
– Bhaskar
Milkweed: You´re alone on this, maybe because you like some silverlight effects flying from your screen (note: this is very important to patient´s care).
Bhaskar…I am a physician working in the VA system. I also program in .net. Certainly the VAs informatics back bone “VISTA” is impressive…for the 1980s. If you have ever actually used this application you would know.
It is rumored that the M in XML stands for MUMPS!
MUMPS is the most widely used language for implementing health care applications including the EHR system behind the most successful health care delivery network in the US (check out Phil Longman’s “The Best Care Anywhere). GT.M (http://fis-gtm.com), an implementation of MUMPS, is the legal system of record for tens of millions of bank accounts around the world, including the largest real-time core system in daily production use at any bank anywhere in the world. The x86 Linux implementation can be downloaded as FOSS from Source Forge (http://sourceforge.net/projects/fis-gtm) and is routinely in the top 1-2% of projects by activity.
With so much success behind it, MUMPS surely has a foot in the grave already!
– Bhaskar
Forget it all.
After 7 years of .NET I am going back to C++ which is evolving with best engineering minds on the planet.. this CLR stuff is by now for kids only.
Tied in and locked-in into Windows and SQL, enough to bring down the few and odd systems they run on the Web, stock exchanges.. all just runtime and .NET bloat really, and nothing to boast about.
@JulianS- Do some more reading up on Mumps, and rely less on MS marketing for your information.
Firstly-XAML is a MS convention. Mumps certainly does support XML, both native in Cache or with third party extensions. XAML is used to define UI elements. Again, we have that with XML. Read further down if you REALLY want XAML support.
And I love market speak such as “Service Oriented Strategy”. Okay, I’ll write my MUMPS apps as services, no problem.
LINQ and WCF, huh? MUMPS/Cache does SQL/ODBC/JDBC/SOAP/XML is OOP and callable from C/.NET/C++/JAVA and can also embed calls from these languages. XAML in .NET anyone?. Again, in other implementations you may or may not need third party, typically OSF, extensions.
Performance. Check out Krung Thai Bank. How about ViSTA. Or any one of the number of EMR and Financial applications processing millions of transactions of data a year. They aren’t being run on MSSQL!!!
Please do not dismiss a strong, mature language such as MUMPS because you know nothing about it. Just as I will not dismiss MS’s entry, as soon as they change the name.
almost .NET development completed, MS simply en cash the money for introducing new languages, OS, and new databases and also simply change the machine or upgrade to existing machine.
once release the software, span of few months (not less than 3 months) releases the patches or service packs. This means people to know the quality of software.
julianS: It´s stange that those who really demands high scale internet distributed database doesn´t like your MSSQL or Oracle relational exhausted model. I´m talking about Google Big Table and Amazon SimpleDB. They are schemaless, multi-dimensional db models, just like MUMPS. Sorry to say to you: we´re back !!!
Well, I don’t think Microsoft would invest resources in something that would not be lucrative, so let’s see ‘M’ after it is released and how it can help developers out. So far, the Visual Studio platform and its languages have been great for programmers in many ways, let’s see how ‘M’ does, over time.
Mumpster (Allan), I think you have missed the point about the language M
The language will have “features of XAML” which MUMPS does not have. It will support MS “service-oriented strategy” amongst other things mentioned in the article.
MUMPS has little to offer even when compared to some of the current .Net offerings such as LINQ and WCF.
Also with the modern Database Architectures, it is impossible for something which is basically a glorified set of macros with limited database functionality to have a similar performance.
eg. a MS SQL or an ORacle backend can have multiple processes working together simultaneously to execute a single SQL statement
No more MUMPS Alan.
I give up with them, I’m going back to C++ and maybe python.
M – MUMPS already exitst.
What does this (new one) add to the cloud of available languages?
I don’t see the use for this; It MUST be hosted on MS Sql Server? Pure Bunk.
‘M’ should get ‘X’d.
Quite a few of us have been programming in M for years, building systems that outperform relational DBs by a significant margin. This M, also known as MUMPS (Mgh Utility Multi Programming System) has evolved over several decades and is used in medical, financial and library applications – it is, as far as I know, the best-performing system for situations with a large database and large numbers of simultaneous users.
This is interesting – what in the world are they looking to achieve by introducing the programming world to their new language?
Hmmm…
Where are the references in this article? Sure way to get on Slashdot…just write something critical of Microsoft be proprietary!
@mgen
As I read it, it was blatently obvious that they were talking about Microsoft’s D.
Quote: “Another source says the language is actually their ‘D’ language (and no, Microsoft did not originally invent D either)”
Just to add to the confusion, if you know anything about some of the directions relational database research has gone over the last ten or so years, you’d know that Date and Darwen have been talking about a database language they call D (so as not to be confused with SQL); it’s discussed in The Third Manifesto http://www.thethirdmanifesto.com/
At first I thought you were referring to that, but apparently not.
There’s also Sun’s D, used as an interface to their Dtrace stuff.
Single letter language names are not a great idea.
Got confused about the D reference since there is a Microsoft D (gone to my knowledge) and a Digital Mars D language (still used), might want to specify which a little more clearly.