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.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.