News

Sharp Words with Microsoft's Erik Meijer

The architect for the Microsoft SQL Server Group is interviewed about the various research Sharp languages and their impact on future software development and programming.

The architect for the Microsoft SQL Server Group is interviewed about the various research Sharp languages and their impact on future software development and programming.

As part of her reporting into the Microsoft Sharp languages (see "Look Sharp"), author Mary Jo Foley spoke with Microsoft Architect Erik Meijer. After Anders Hejlsberg, the father of C#, Meijer is the most active Microsoft figure associated with Sharp language research.

Meijer, an architect in the SQL Server group, also works with the C# and Visual Basic (VB) teams. Before joining Microsoft, Meijer was an associate professor at Utrecht University, where he worked on advanced scripting languages such as Haskell, XMLambda and Mondrian.

"Most recently [Microsoft Software Architect] Brian Beckman and I are working on reviving the Mondrian project in the incarnation of Visual Basic for the Cloud; our attempt to democratize distributed dynamic data-intensive applications," explains Meijer on his personal Web page (http://research.microsoft.com/~emeijer).

Foley had a chance to ask Meijer a few questions via e-mail. Here's a transcript of their exchange, edited for length.

S. Soma Somasegar"It's obvious to me that the various research Sharp languages have had an impact on future software development and programming."
Erik Meijer, Architect, Microsoft SQL Server Group

What fascinates you about the Sharp languages?
It's obvious to me that the various research Sharp languages have had an impact on future software development and programming. The nice thing [about] the Common Language Runtime [CLR] is that it provides an ecosystem for a wide variety of languages that can benefit from the class libraries and runtime infrastructure, which makes it much easier for language implementers to experiment with advanced language constructs.

X#/Xen/C Omega has been a major influence on LINQ, C# 3.0 and VB 9. Matt Warren was one of the developers of X#/Xen/C Omega [and] is now an architect on the C#/LINQ to SQL team. I am myself a member of both the C# and VB language design teams. Spec# has generated a lot of great research and has influenced major commercial languages such as Eiffel.

F# is being used for many different areas. Don Syme, the designer of F#, was one of the implementers of Generics in the CLR. LINQ expression trees and comprehensions have influenced the design of F#.

What do you mean when you say, 'the technology also flows in the opposite direction?' Does this mean some of the traditional language features are making their way back into the Sharps?
What I mean is that traditional languages trigger interesting research questions. For example, Gavin Bierman from MSR has recently formalized the type inference rules as implemented in C# 2.0.

Bart Jacobs, Wolfram Schulte and I formalized the use of iterators as introduced in C#. The work on generics has triggered some new research work. Expression trees and query comprehensions originally came from research [with] Haskell to the mainstream C# and VB and from there back to research in F#.

What does the Haskell language have to do with the Sharps, if anything?
I'm one of the designers of Haskell. Haskell is unique among all modern programming languages because it's a purely lazy functional language. Other functional languages such as F#, Lisp/Scheme [and] OCaml all support functions as first class values, but they allow side effects [assignments, mutable variables, exceptions] and use strict evaluation.

In Haskell there are absolutely no side effects, but they're made manifest using so-called 'monads' [which also form the theoretical basis of LINQ] and expressions are only evaluated when needed.

This sounds pretty geeky, but the end result is that the purity of Haskell makes it an ideal test bed for advanced language and type system features -- for example, Software Transactional Memory.

In a nutshell, what's the impact the Sharp languages have had and will continue to have on programming-language futures?
When you design a commercial language like C# or VB, you have to be extremely careful what [you] put in because once something is in the language you can never remove it. Also, in order to be able to actually ship a commercial language, all hard and fundamental research problems should be solved and it should mainly be a matter of engineering to implement the various language features.

Many people don't realize the amount of work it takes to turn a piece of software into a product. Writing the parser, type checker and code generator is the easy part. Then you have to think about the IDE, pretty listing, coloring, the debugger, the project system, Intellisense, error messages, documentation, localization, security ... So the Sharp languages are a great vehicle for experimentation to see which features really stick, sort out the hard problems, try crazy things. From the experience gained by that we can then prioritize which features to put in the mainstream languages.

Will the Sharps have an impact on other software areas or products -- say, databases?
I really hope that there will be much more influence of the Sharp languages to other areas, in particular databases. There's a lot of very interesting theory about using monads or monoids as the basis for query languages instead of relational algebra [the basis for SQL]. Query comprehensions in LINQ are just the first step -- the tip of the iceberg. I'll be lifting a tip of the curtain at the upcoming InfoQ conference in London in March.

With the advent of many core machines on the one hand and the rise of service orientation on the other, I expect that we'll see ideas from research adopted by commercial languages in the future.

About the Author

Mary Jo Foley is editor of the ZDNet "All About Microsoft" blog and has been covering Microsoft for about two decades. She's the author of "Microsoft 2.0" (John Wiley & Sons, 2008), which examines what's next for Microsoft in the post-Gates era.

comments powered by Disqus

Featured

  • Full Stack Hands-On Development with .NET

    In the fast-paced realm of modern software development, proficiency across a full stack of technologies is not just beneficial, it's essential. Microsoft has an entire stack of open source development components in its .NET platform (formerly known as .NET Core) that can be used to build an end-to-end set of applications.

  • .NET-Centric Uno Platform Debuts 'Single Project' for 9 Targets

    "We've reduced the complexity of project files and eliminated the need for explicit NuGet package references, separate project libraries, or 'shared' projects."

  • Creating Reactive Applications in .NET

    In modern applications, data is being retrieved in asynchronous, real-time streams, as traditional pull requests where the clients asks for data from the server are becoming a thing of the past.

  • AI for GitHub Collaboration? Maybe Not So Much

    No doubt GitHub Copilot has been a boon for developers, but AI might not be the best tool for collaboration, according to developers weighing in on a recent social media post from the GitHub team.

  • Visual Studio 2022 Getting VS Code 'Command Palette' Equivalent

    As any Visual Studio Code user knows, the editor's command palette is a powerful tool for getting things done quickly, without having to navigate through menus and dialogs. Now, we learn how an equivalent is coming for Microsoft's flagship Visual Studio IDE, invoked by the same familiar Ctrl+Shift+P keyboard shortcut.

Subscribe on YouTube