10 years of C#

Next week we’re interviewing Anders Hejlsberg – the father of C# – for our sister publication SimpleTalk. We were talking about what questions to ask him, and I suddenly realized how far production programming languages have developed in the last few years. Only a dozen years ago, features like lambda expressions or type inference (and even proper generics) were rarely even mentioned in mainstream programming circles – apart from old Lisp hackers or young graduates trained on Scheme or ML complaining about how non-expressive Java or C++ were! Now these are just part of the daily toolkit for .NET programmers, and they are helping people write better code quicker. I was reminded of an old quote from Todd Proebsting, who managed the Programming Language group at Microsoft Research. In a sly echo of Moore’s Law, he came up with Proebsting’s Law arguing against the focus of programming language research on compiler optimization:

“Compiler advances double computing power every 18 years
and called on language researchers to concentrate on programmer productivity instead. The path of C# over the past 10 years shows the success of this approach, but I admit I am still in the “scared” camp when it comes to dynamic typing. Then again that’s what I thought about extension methods, and they don’t seem to have been that badly abused in practice. As long as dynamic typing gets used to relieve point problems for developers (like the horrors of COM interop), and not used as a new general use-everywhere paradigm, I hope it will be a good extra tool. But I wonder what Anders will say when we ask him…

I’d love to hear your views on C#, dynamic typing, programming language technology, or just on why the 10th birthday of the C# team seems to have slipped by so quietly!