Why was the language originally named Cool, and what promoted the change to C#?
The code name was Cool, which stood for ‘C like Object Oriented Language’. We kind of liked that name: all of our files were called .cool and that was kind of cool! We looked seriously at keeping the name for the final product but it was just not feasible from a trademark perspective, as there were way too many cool things out there.
So the naming committee had to get to work and we sort of liked the notion of having an inherent reference to C in there, and a little word play on C++, as you can sort of view the sharp sign as four pluses, so it’s C++++. And the musical aspect was interesting too. So C# it was, and I’ve actually been really happy with that name. It’s served us well.
How has your experience designing Visual J++, Borland Delphi and Turbo Pascal impacted on C#?
If you go back to the Turbo Pascal days, the really new element created by Turbo Pascal was that it was the first product ever to commercialize the integrated development environment, in a broad sense – the rapid turnaround cycle between compile, edit or edit, compile, debug. Any development tool today looks that same way, and that of course has always been a key thing.
[I also learnt to] design the language to be well-toolable. This does impact the language in subtle ways – you’ve got to make sure the syntax works well for having a background compiler, and statement completion. There are actually some languages, such as SQL, where it’s very hard to do meaningful statement completion as things sort of come in the wrong order. When you write your SELECT clause, you can’t tell what people are selecting from, or what they might select until after writing the FROM clause. There are things like that to keep in mind.
Each of the products I’ve worked on, I’d say, have taught me valuable lessons about what works and what doesn’t, and of course you end up applying that knowledge to subsequent products you work on. For example, Delphi was the first product I worked on to natively support properties, and then that got carried over to C# for example. We added a similar feature there.
Have you encountered any major problems in the development of C#? Any catastrophes?
No, I wouldn’t say that there have been any catastrophes! But life is nothing but little missteps and corrections along the way, so there are always little fires you’re putting out, but I wouldn’t say we ever had total meltdowns. It’s been a lot of fun to work on and it’s been over 10 years now.
Can you give me an example of a little fire that you’ve had to put out?
Every project is about not what you put in, but what you don’t have time to put in! So it’s always about what we’re going to cut… so every project is like that. It’s so hard to single out anything in particular as we’re always putting out fires. New people leave the team and new people come in, it’s like every day you come to work and there’s something new to be dealt with.