Computerworld has published an in-depth interview with Microsoft’s leader of C# development, Anders Hejlsberg. A prominent Danish software engineer, Hejlsberg also wrote Turbo Pascal and was lead architect of the team that developed Delphi. Hejlsberg shared with Computerworld his thoughts on the development of C#, future programming trends, and his experiences putting out fires. Here is a brief excerpt:
Computerworld: What were the fundamental flaws in other languages that you believe drove the development of Common Language Runtime (CLR), and in turn, C#?
Anders Hejlsberg: I wouldn’t say that our primary motivation for CLR was fundamental flaws in other languages. But we certainly had some key goals in mind. Primarily, we wanted to build a unified and modern development platform for multiple programming languages and application models.
We also wanted to introduce modern concepts, such as object orientation, type safety, garbage collection and structured exception handling directly into the platform. At the time, the underlying infrastructure we were running on was COM, which is a very low level programming model that requires you to deal with the registry and reference counting and HRESULTs and all that stuff.
Now, to move on to C#, in a nutshell our aim was to create a first class modern language on this platform that would appeal to the curly braces crowd: the C++ programmers of the world at the time, and competitively, the Java programmers.
Of course, at the end of the day, productivity has always been a driver for me in all of the projects I’ve worked on. It’s about making programmers more productive.
Computerworld: Would you do anything differently in developing C# if you had the chance?
Hejlsberg: There are several things. First of all, when we shipped C# 1.0 we did not have generics in the language – that came in C# 2.0, and the minute we shipped generics we were able to put a lot of old code to bed as it was superfluous and not as strongly typed as generics. So a bunch of stuff got deprecated right out of the box in C#2.0. We knew generics were coming but it was one of those hard decisions: do you hold the platform longer or do you ship now and work on this and then ship it a couple of years later? I would have loved to have generics from the beginning as it would have left us with less obsolete stuff in the framework today.