微软几乎在同一时间发布了.Net和C#。也就是在去年六月的晚些时候。他们将C#和.Net的部分(即通用语言架构或者CLI)提交给了ECMA的同一个技术委员会。因为它们提交过程是结合在一起的,所以大家可能也会以为它们将来也会紧密的结合在一起,但是可能并不完全正确。C#作为一种语言可能会失败,但是.Net还能够继续成功发展下去,但是如果作为C#运行平台的.Net在市场上失败了,那么C#也就注定会失败。
这是一件好事,即使是微软也是这么认为的,虽然我很怀疑他们会这样表述这种情况。.Net非常核心的一个特点就是它支持多种编程语言。也许C#对于.Net来说是一种特别好的编程语言,但是它并不起关键作用,如果你不想使用C#,你还是可以使用几乎其它的任何一种语言来为.Net编写程序。
对于多种语言的支持并不是微软刚刚发明出来用于击败Java的工具。它一直以来就是微软的一个优点,不管是对系统软件来说还是它的业务中的开发工具那一端。微软自从1970年以来就在出售多种语言的开发工具了,而且在80年代它迈出了一大步,让使用不同DOS环境下开发语言的程序能够互相调用。当COM(组件对象模型)出现的时候,它的一个主要的功能之一就是让用不同语言编写的程序之间能够互连。
实际上,C#带有微软批评Java的所有的缺点。它和现存的语言有很大的不同,你必须重新编写你现存的应用程序。至少在现在看来,这些应用程序还只能在.Net平台上运行--也就是说Windows--虽然微软将这些应用程序的一部分提交给ECMA使得这种情形在未来有可能发生改变。但是Java和C#在这个方面的真正区别是在Java VM上只能运行一种语言。你,作为一个程序员,只能在Sun公司下一个定单并只能从几个Java的小团体那里学习如何编写你的程序。
把.Net提交给ECMA的TC-39的本意是有利于语言之间的互连,但是它也提供了这样一种可能,也就是有人能够在其它的平台比方Win9X或者我所知道的所有平台或者Java VM上实现C#语言。那么为什么有人要这么做呢?我可以想像如果C#编程已经变得非常的流行,那么有人可能会想进一步解放C#程序员并让他们有机会移植他们的程序。但是只有当.Net变得流行的时候C#编程才可能变得流行,因为.Net是C#程序员最初所能够编写程序的平台。而且我们不难想像,C#应用程序会象其它的应用程序一样,会变得依赖于它们的语言和操作系统(也就是.Net平台)。
这对微软来说不是一件坏事,即使对.Net来说也不是。虽然你可以争辩说这会使程序员的工作受阻,因为他们在C#里陷得太深了。甚至有可能的是.Net会变得非常的成功而C#会衰弱到微软不愿意再在它身上花功夫了,虽然现在我们还没有理由相信这种情况会发生。不过我们对于C#的认识还很有限,而且我们也还没有实际接触到什么东西。任何事情都还是可能的。