A proprietary version of a meta language (ML) in development by Microsoft
researchers is causing quite a stir in the developer community. The issue at
hand is whether or not Microsoft is trying to co-opt another programming
language for its own purposes, which is what some experts perceived the
company did when it crafted Visual C++ and C#.
Called F#, the ML is designed to solve extensibility issues and problems on the
.NET Framework. Meta languages are used for writing tools and compilers,
programs that translate source code into object code. The compiler produces
an intermediary form called object code. Object code is often the same as a
computer’s machine language.
CAML, from which F# is derived, is a
meta language that was developed by INRIA, a French research institute for
computer science. One type of CAML is Objective CAML, which is used for
teaching programming.
But while they are extolled for such tasks and features as static type
checking and fine type inference, Microsoft argues that MLs, are not perfect. Microsoft said there are problems for these languages
on the .NET platform because of poor feature interaction between subtyping,
overloading and type inference, and because they lack the extensibility
mechanisms of class-based languages.
F# was forged to address those problems for .NET programmers. The language,
written by Don Syme, of Microsoft Research’s Cambridge, U.K., team, joins
the software giant’s family of programming languages, including Visual C++, C# and
J#.
“I believe that it is reasonable to innovate with syntax and semantics in
order to increase the usability of a programming language,” Syme said on the
Microsoft
research site.
As is customary with new programming languages, debate was widespread and
fierce on such developer-oriented sites as Slashdot.org. One argument is that functional compilers already exist on the market to convert Standard ML
onto the .NET framework, such as SML.NET. But
Microsoft contends that it wishes to make F# work seamlessly with C#, Visual
Basic, SML.NET and other .NET programming languages.
The notion that Microsoft is standardizing another language, as it has
with C++ and C#, is the major source of contention for those who have come
to distrust Microsoft in the wake of antitrust concerns that came to a head
in U.S. courts a few years ago.
One anonymous slashdot poster, distressed by the news, said: “I guess anyone taking
computer science will have to learn this, as it is the ‘language of the
future.’ MS has the power to dictate what the future of its monopoly is, and
thus also the future of computing. And with computer science graduates
familiar with this, they will start to use it. Then, others like myself will
either have to learn it or lose their job.”
Another rebutted that tack: “F# will be learned by people when managers and
not university lecturers decide that it is something that coders need to
learn or even when coders decide it’s necessary for something. Stop thinking
that the world is out to make you use MS products no matter what. The
businesses that do the employment and the people who should be advising them
(cough -you- cough) are the people who make those decisions.”
Microsoft could not be reached for comment as of press time, but analysts
familiar with Microsoft’s adventures in programming discussed the issue with
internetnews.com. Stephen O’Grady, of Redmonk, considered the possibility that
Microsoft’s purpose may be less than altruistic, but downplayed it.
“Does Microsoft intend to modify ML for its own purposes? Sure, but some
would call that optimizing for the platform and
the framework,” O’Grady said. “People do this all the time — SAP in the past
has added its own custom classes to JSP libraries, and BEA introduced a
proprietary format for its Workshop product in the .JWS extension (although
the latter’s been submitted as a standard to the JCP). And as for C++ and
C#, I haven’t noticed that they exactly put C out of business.”
O’Grady said it is possible that developers may have to get
used to Microsoft’s version of ML in F#.
“But I’d say that’s not exactly a near horizon threat. Plus it’s likely that
if it becomes perceived as a threat, the Java community will develop CAML or
Standard ML plugins to something like the Eclipse framework, if in fact
they’re not available already.”
ZapThink Senior Analyst Ronald
Schmelzer was less concerned about Microsoft’s intentions. He noted that
Microsoft is known for doing research on a variety of topics that may never
see the light of day as a product, and “this might be one of them.”
“However, I don’t think there is cause for alarm here. Microsoft was one of
the original creators of XML, and things like SOAP and BPEL, so why would
they dump it? By and large, this looks to be a focused research project by
an individual
or a small group exploring the topic of how to produce better compiled
languages. I don’t see any indication that this would replace C, C#, C++,
Java, or any other language that Microsoft supports. In fact, the Microsoft
CLR that forms the basis of the .NET runtime explicitly supports things like
new languages and F# might just be one of those.”
But does the programming world need another # language from Microsoft?
“Probably not at the moment, but this doesn’t look to be an immediately
productized offering. Instead, they’ve used this implementation obviously to
offer .NET programmers an ML based language to work from if that’s suitable,
but just as much to prove it can be implemented in short order (less than
10K lines of code, apparently),” O’Grady said.
F# isn’t the only language Microsoft is working on, although details about
an “X#” are rather murky. X# is rumored to be a language focused on more
intelligent processing of things like XML documents, much like ClearMethods’
Water language, but there have been denials that the company is working
on this.