One more for today. This is less crucial for all programmers, but probably interesting to anybody who is working in the .NET stack or might be doing so.
The last presentation consuming my time today is Anders Heilsberg describing The Future of C#
, mainly C# 4.0. I wouldn't say that there is anything dramatic happening here, but they are continuing to add major new capabilities to the language.
So I think this enhancement to C#, making it clean and easy to use dynamic components within the overall static framework, is a fine acknowledgement of reality, and should make integration generally easier.
There are several other new features, less crucial but still useful. They've added the long-begged-for optional parameters for methods, as well as named parameters. COM interoperability has been considerably improved, making it significantly less painful to write .NET programs that work with traditional Microsoft tools. (He shows an example of working with Excel, and how it's a more natural programming experience now.) And they've added some fairly subtle new concepts to support co- and contra-variance in parameter types, which allow certain types of obvious generic programming that weren't previously possible.
In the last few minutes, he talks about where things are going in future releases, 5.0 and further. Suffice it to say, they're starting to take metaprogramming seriously, opening up the compiler, turning it into a proper API so that you can do code at runtime, hook and enhance the compiler, generate strongly-typed objects at runtime, and so on. While this is old hat in many languages, the idea of having a Read-Eval-Print loop is pretty radical in C# (he shows the fairly modest code to write a dynamic C# command line, as one expects in dynamic languages). I suspect that this is going to open up a bunch of use cases for C# that were not previously practical.