XML, Dynamic Languages, and VB

Thursday at PDC saw lots of details being put out about another big project our team has been working on -- the deep support for XML in Visual Basic 9.  This is actually part of an even larger effort that our team member Erik Meijer has been involved in, to support  fully dynamic languages such as Python in the .NET Common Language Runtime. 

On the VB9 front, the big news is that two major features beyond and on top of LINQ will be supported in VB9:

"XML Literals" is  the ability to embed XML syntax directly into VB code. For example,

Dim ele as XElement = <Customer/>

Is translated by the compiler to

Dim ele as XElement =  new XElement("Customer")

The syntax further allows "expression holes" much like those in ASP.NET where computed values can be inserted.

"Late Bound XML" is the ability to reference XML elements and attributes directly in VB syntax rather than having to call navigation functions.  For example

Dim books as IEnumerable(Of XElement) = bib.book

Is translated by the compiler to

Dim books as IEnumerable(Of XElement) = bib.Elements("book")

 We believe that these features will make XML even more accessible to Visual Basic's core audience. Erik Meijer, a hard core languages geek who helped devise the Haskell functional programming language and the experimental XML processing languages X#, Xen, and C-Omega, now touts VB9 as his favorite.  He gave a talk yesterday outlining the spectrum from statically typed languages such as C# and Java at one end, and fully dynamic languages such as Python at the other, but with VB right in the middle.  His mantra is "Static typing where possible, dynamic typing where necessary."  This fits in with what I quoted Anders saying about C# 3.0 having the ease of use of script while fully supporting strong typing, but VB takes it even further.

The proof that .NET is a platform for all languages, not just static ones, might be seein in one bit of information that came out in a presentation on Iron Python (the Python implementation on top of .NET) yesterday.  Iron Python is actually faster on the Python benchmarks than the core Python written in C. 

I'll post links to the supporting material later in a PDC wrapup post, but for now the message I want to get across is that our group is involved in some fascinating innovations to make XML easier for mainstream developers to work with, and we embrace both the static and dynamic languages. 

Mike Champion