Here is a video on Channel 9 with the members of the C# design team. The discussion covers C# 4.0, dynamic languages, concurrency and declarative programming,
Attendees include Anders Hejlsberg, Paul Vick, Scott Wiltamuth, Mads Torgersen, Matt Warren, Eric Lippert and Jim Hugunin.
Some of the topics discussed include:
- When is the right time to use a dynamic language, when should one use a statically typed language? How can we begin to think about integrating C# with dynamic languages? What is the DLR and how can it be used from C#? LINQ and the dynamic construction of statically typed code.
- How does one evolve a language without upsetting a user base? When do you build something into the language, and when do you just add a new API? If you add something into the language, how can you be sure you are betting on the right horse?
- How does the design team work? The continuity of the process: meeting for 9 years, three times a week, in the same room. Design often happens in spurts. Keeping notes, a preserved history that reaches back 9 years.
- Concurrency and purity, building isolation domains. Concurrency is very important, it is the heart of the current set of problems we are facing. Moore's law is still in effect: the number of transistors is continuing to double every 18 months, but the clock speed has stopped growing, it has literally stopped. So the way we get the more is more CPUs. It is hard problem, and that is why so many people have ignored it. How do you get developers to express their intent in a way that can scheduled across multiple processors? Should developers have to think about whether their code will run concurrently? Can we build programming models that are sufficiently close to what we know now, but which can automatically run concurrently? How can we guarantee that a given chunk of code will not have side effects? People think sequentially, how can we ask developers to think in a parallel style?