I’ve just finished watching the “C# 4.0 Meet the Design Team” video, and here’s what I’ve learned:
According to Anders, the big “target areas” for 4.0 are:
- More declarative programming (a la LINQ)
- More dynamic features
- Concurrency management
Anders has brought in some dynamic language guys (IronPython and (to a much lesser extent) VB). They all spoke about different things they’re interested in adding to the language. As dynamic languages are being introduced into the .NET platform, other .NET languages are looking at ways of better integrating with these languages and the libraries written in them. However, C# will not loose its static typing.
Another example of what they are talking about is scripting. Its hard to use a statically typed language used as a scripting language within another application. IronPython has been the current choice for this internally in Microsoft.
Listening to Anders, the big push seems to be parallelism. There is much talk about how to guarantee purity in functions and how parallelism can be implemented in different ways without placing this on the backs of the developer. Anders doesn’t want to hide concurrent execution, however. Developers should know and understand that their code may run in parallel, but have a well-stocked toolbox to use in order to take advantage of this.
The parallelism stuff sounds promising, however I’m a bit skeptical about the ability of developers to take advantage of it. One of the toughest things to do is think about how your code will work in a multithreaded environment and what possible issues you may have. But it definitely is, as Anders says, the big problem that nobody is paying attention to. Moore’s law is going to be upheld by increasing cores in CPUs, not just by cramming more transistors into a single core.
I am a bit disappointed that there wasn’t any mention about adding more language features to bring testing forward. There are a few areas where some compiler work could help make it much easier to do….