I was recently asked, “What is the real story behind the name of C#?” Let’s take a quick stroll down memory lane and on the way we’ll answer that question…
In the beginning – around 1997 – there was Project Lightning. I was also known as Project 42 because DevDiv (Microsoft’s Developer Division) lived (and still lives) in Building 42 on the Redmond Campus. (I’ve always thought that was an awesome building number for DevDiv with the little hat tip to Douglas Adams’ Hitchhikers Guide to the Galaxy. I’ve always wondered if it was intentional.) Early press announcements referred to it as “Next Generation Windows Services”. Eventually Project Lightning was dubbed Microsoft .NET, though some code names have been forever baked into the system.
Marketing was thinking of calling it COM+ 2.0 or the Universal Runtime (URT). Another idea was the COM Object Runtime (COR). Hence mscorlib.dll, which is still the assembly that holds the CLR’s main types and is the one assembly that must be loaded in every .NET app domain. (System.dll is often loaded, but need not be. Mscorlib.dll contains the code for System.String, System.Int32, etc. You honestly can’t do anything without mscorlib.dll loaded.)
Another code name that lives on today is in the Assembly Binding Log Viewer – fuslogvw.exe – which allows you to monitor the loading of assemblies into app domain – successes as well as failures. (If you’re ever having problems figuring out why the wrong assembly is being loaded, where a particular assembly is being loaded from, or why assembly loading fails, the Assembly Binding Log Viewer is the tool to use. It ships with the .NET SDK.) Now why is it called fuslogvw.exe? Fusion was the codename of the CLR Loader, which is responsible for loading assemblies into app domains. I still think that Fusion is a most appropriate name for a loader.
So back to the original question of the origins of C#. The codename of C# was Project Cool, which was rumoured to be a clean-room implementation of Java. This was back in the days when Sun was suing Microsoft over bastardizing the Java language. As I recall, Sun didn’t like the Microsoft-specific extensions in J++, which allowed it to interoperate with COM. So where did the name C# come from?
C# name was musically inspired. It is a C-style language that is a step above C/C++, where sharp (#) means a semi-tone above the note. (Being a musician myself, I think this is awfully fun.) Back when .NET made its debut, an amusing quip from the Linux crowd was to refer to C# as Db (D-flat), which is the same note as C#, but has different connotations. Two MS Research languages also bear musically-related names: Polyphonic C# and F#.
I hope you enjoyed this trip down C#/.NET memory lane.