Newsletters:

Is F# a Major or Minor Consideration for Microsoft?

May 23, 2003
By

Clint Boulton






A proprietary version of a meta language (ML) in development by Microsoft researchers is causing 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 C++ and C#.

Called F#, the meta language 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, or 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 meta languages 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 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 common with new programming languages, debate was widespread and fierce on 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 wants 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. 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 meta language 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.


 

0 Comments (click to add your comment)
Comment and Contribute

Your comment has been submitted and is pending approval.

Author:

Comment:

 (click to add your comment)

Comment and Contribute

Your name/nickname

Your email

Comment:

(Maximum characters: 1200). You have characters left.