LOS ANGELES -- While competitors are coming up with new, "modern" programming languages, Microsoft continues to evolve its tried and true languages such as Visual Basic and C#, with new features -- including future plans to open up the respective compilers to developers and to add support for asynchronous programming and immutability.
In a session at the Microsoft Professional Developers Conference (PDC) 2009 here, Luca Bolognese, group program manager for the languages team at Microsoft, said the software giant is working on three primary things regarding the future of Visual Basic and C#. One is delivering compiler-as-a-service capability, another is support for asynchronous programming and a third is immutability. Both support for asynchronous programming and immutability already exist in Microsoft's F# language. In object-oriented and functional programming, an immutable object is an object whose state cannot be modified after it is created.
While Google is developing new programming languages such as its Go general purpose language and Noop Java-like language, Microsoft is adding functionality to Visual Basic and C# to continue to modernize those foundational technologies.
Although Bolognese said there is no guarantee that Microsoft ultimately will pursue any of these directions in product form, "The first thing or area we are exploring is the opening up of the compiler," he said. "Right now the C# and Visual Basic compilers are 'black boxes' -- you push in a file on one side and on the other side comes out IL [Intermediate Language]."
However, the plan with "opening up" the compilers would be to enable developers to work with the internal data structure of the compiler. This would enable some level of aspect-oriented development. And another benefit would be to enable developers to build refactorings, Bolognese said.
"Because we are exposing the compiler this way, we are rewriting them in C# and VB.NET so we can make them available to you as managed APIs."
Bolognese demonstrated some of the coding techniques recommended to make code asynchronous. "This is called inversion of control, which is needed to help make code asynchronous," he said. "We look at the asynchronous code you have to write today and we decided we had to do something about it. It looks very simple, but there are dragons in there."
Meanwhile, Microsoft is working on adding immutability to C# and Visual Basic, but the company has not settled on a particular method or way to deliver it. "I have seen four or five different proposals about how to get this into C# or VB, but we haven't found the silver bullet," he said. "But we like to think of it as a compiler feature.
Bolognese said he could talk so definitively about the future direction for both languages "because of a strategy we call co-evolution. It means that in the future you won't see any big feature inserted in one language and not in the other."
Already, today C# and Visual Basic are declarative, dynamic and concurrent languages.
"The field of programming languages was frozen with Java and C# for the longest time, and it's good to see more dynamic languages come in," Bolognese said.
Thus the move to more dynamic languages merges with the move to more declarative and concurrent systems. "In my view declarative code is a prerequisite for concurrency. You can write parallel code in an imperative fashion and it might run for awhile. But you're much better off writing your code in a declarative fashion so that parallelism is done for you."
Moreover, Bolognese said Microsoft has introduced a new feature called "Dynamic" to tell the compiler what happens at that point in time.