Here's an incomplete history of the CsharpLanguage
(C#) and the MicrosoftDotNet
(CLR) that should help address some of the claims that C#/.NET is a direct Java knock-off. The results may be similar, but the paths taken to get there are definitely not the same.
Note to the original author - you might consider just fixing this text rather than ammending the corrections at the bottom
- Nonetheless, in a strategic business sense, CsharpLanguage is Microsoft's answer to Java, and that aspect should be mentioned here as well.
The .NET CLR is based on Colusa software's language-neutral OmniVM, a part of their Omniware product.
OmniVM was based on research carried out by Steven Lucco at Carnegie Mellon University. Steven co-founded Colusa Software in February 1994 in Berkeley, California. Omniware was released in August 1995. Colusa started working with Microsoft in February 1996. Microsoft acquired Colusa Software on March 12, 1996. Steven is currently a senior researcher at the Microsoft Bay Area Research Center.
OmniVM was appealing to Microsoft because Colusa had already created Visual Basic and C/C++ development environments for the VM. The VM was also claimed to be capable of running Java.
Microsoft took to calling the VM by the name of CVM, presumably for Colusa Virtual Machine. Or perhaps this is where the code name Cool came into being. Other names used at Microsoft include Universal Virtual Machine (UVM), and Intermediate Language (IL).
Perhaps the IL referred to the Common Executable Format. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnce30/html/cef2.asp
No, IL refers to Microsoft Intermediate Language (MSIL).
Microsoft denies rumors that C# went by the code name Cool, however there have been many apparent slip-ups by Microsoft employees where the word Cool is used in code snippets, file paths, etc.
Its story time children, gather round while uncle nobody tells another of his fanciful programming tales. There once was a Danish boy named AndersHejlsberg
who made a rather speedy PascalLanguage
Compiler on the new fangled personal computers of that time. This compiler was so fast, it put to shame compilers that ran on big mainframe computers so common in that day. So along comes Borland and says, come along lad, were going to hire you and sell your compiler. And so was born TurboPascal
. Years later, big bad BillGates
comes along and says, you know, we should make a compiler like Turbo Pascal, but with a fancy graphical interface for making windows apps. Will just rename it Basic, like that language we used to use with all the goto's on line numbers, no-one will know the difference. Well the people at Borland saw this, and are not fooled. So they have Anders make a pascal compiler that can make windows apps just like VisualBasic
and that uses a nifty graphic development environment also. Meanwhile SunMicrosystems
makes this simplified C++ language that uses a VirtualMachine
to make portable apps. The portable part is nifty, the language itself is slow and doesn't knock down C++. Now big bad Bill comes along again and says, we should hire that Danish boy, he can help us in our plan to take over the world. So Anders goes to work for Micosoft and makes another slow simplified version of C++ called C#. He also takes SunMicrosystem?
's idea of a virtual machine and uses it to forward big bad Bill's idea of taking over the world by having all programming languages run off MicroSoft
's version of a virtual machine. And thus, DotNet
is born. And they all live happily ever after.
Boys and girls, can you spot the parts that aren't true? Did Sun invent the idea of the virtual machine? Anyone?
[No, Sun did not invent the idea of the virtual machine. It harks back to the 1960s, well before there was a SunMicrosystems
. See http://cs.gmu.edu/cne/itcore/virtualmachine/history.htm
Omniware: A Universal Substrate for Web Programming (December 1995 overview of the technology)
Chart of Microsoft's Internet Acquisitions
MS fills Net strategy holes (article written the day of the Colusa acquisition, March 12, 1996)
Salient quote (remember, this is 1996): "Eventually, you'll be able to take Visual Basic code and run it cross-platform," said Rob Bennet, product manager at Microsoft. "You'll probably see [Omniware] in our Developer Studio stuff."
Close up on .NET (contains a brief history of C#)
Microsoft Eyeing Java Alternative (1998 article on the VM)
Cool Vapor (VM history, features)
Too bad the Colusa site referenced here http://groups.google.com/groups?q=omniware+microsoft&hl=en&selm=3241A46F.3EF6%40cs.ucla.edu&rnum=4
wasn't caught by archive.org until after the domain changed hands. The Microsoft press release would be interesting to see.
It 'borrows' lots of stuff from BorlandDelphi
too. The .NET object framework works much like the Delphi / Kylix / C++Builder CLX framework. They got the guy who did the Delphi VCL (superior framework to MFC) to design it. -- SteveEyles
the Delphi guy designed it. He also designed Windows Foundation Classes for J++. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndevqa/html/msdn_andersh.asp
It borrows a lot from Java, but makes it multi language instead of single language. The idea of Delphi was that you could ship one single exe with no runtime, whereas .Net is the opposite; it requires a run time, and is multi language. I don't think it is the new delphi nor do I think they stole that much from delphi, I think it is quite different and more like Java since Java also has a run time and has garbage collection, whereas delphi does not. The idea of delphi "components" existed before delphi. Visual Basic had VBX custom controls before delphi did. So .Net is also the new "visual basic" moreso than the new delphi, but visual basic 6 was only a single language, whereas .Net is multi language.
AndersHejlsberg is also part of the MicrosoftLinq project which unfortunately again confuses the relational model, muddies the waters, and we still don't have a proper implementation of the relational model widely used. I think Anders H. is on the wrong path and is misusing his brain. He's a very smart programmer who doesn't have enough computer science theory behind him, so LINQ is reinventing the relational model in a bad way. It's sad that Anders H. is part of this mess. The other problem with .Net is that it is generally a microsoft lock in. Mono Project attempts to make it cross platform, but .Net will always be intended more for Microsoft platforms.
As the original author of this page several years ago, curiosity finally got the better of me and I asked someone on the CLR team for more insight on this. Here is the response:
Steve Lucco from Colusa did indeed work on the CLR during the very early days. He was particularly involved in the initial discussions of what the IL should look like. However, I don't think it's accurate to say that Colusa had a big influence over the CLR. There were a number of other bright and opinionated people who had very different ideas and who tended to have more influence.
I agree that Anders had a far bigger impact on the design of the CLR than Steve. But even he was primarily involved in the frameworks, C#, and the CLS rules for language interopability. We would consider all those areas to be separate from the CLR proper. The management, architecture, dev and pm teams of the CLR largely defined their own destiny -- though obviously subject to requirements from languages, ASP.NET, WinForms?
, BCL, etc.
Here are a few more facts.
1. Colusa was based on the software fault isolation (SFI) research that Steve did at UC Berkeley with Susan Graham, and Colusa co-founder Robert Wahbe.
2. Steve was at Transmeta during some period of the CLR's development. Here's a paper he published while a Transmetan http://portal.acm.org/citation.cfm?id=349307
3. While the CLR is a very distant relative to the Colusa VM, Singularity is a much closer relative (spiritually if not in actual bits) with its Software-isolated processes.
4. Steve is now a distinguished engineer at Microsoft. See http://www.microsoft.com/presspass/exec/de/Lucco/default.mspx
5. Robert is now a VP at Microsoft. See http://www.microsoft.com/presspass/exec/wahbe/default.mspx
6. Oliver Sharp (Colusa employee #3) is now general manager of Microsoft BizTalk