Anders Hejlsberg 在1996年加入微软,开始是Visual J++ 和 Windows Foundation Classes 的架构师。Hejlsberg 是目前微软杰出的工程师和C#语言的设计者,并在微软 .NET 框架中扮演了重要的角色。今天,他正在领导C#语言的开发工作。John Osborn,是O’Reilly 媒体公司的执行编辑,负责公司在.NET和其他微软开发者书籍的工作,最近和Hejlsberg碰面进行了下面广泛的会谈。
Osborn:我想我最好还是跳回到2000年我们上次聊天的地方。重新复习上次的对话,对我来说是很有趣的。那时,我们曾经被java痴迷,C#语言和java的对比当时也非常的多。
Hejlsberg:是这样的。
Osborn:从那是起,五年过去了,C#现在怎么样了,你现在对语言有什么想法吗?C#是微软唯一的工具吗?是否在社区里有一个很宽的领域?
Hejlsberg:是这样的。这几年发生了很多事情,世界的发展看起来和当时非常不同,特别是从一个竞争的观点来看。我们没有让.NET和java变得更新,更流行。因此,这里有很多比较可以做。我想在过去的五年里,C#已经成长起来了。今天,我们来说说C# 3.0 我们刚刚发布了 C# 2.0 ,在这之前是 1.0 和 1.1 的版本。
我们考虑跟踪研究,从使用方式上看.NET看起来和java有着非常相似的应用。C#的应用更多一些。因此,相对于一个新语言,C#已经成长起来了。很显然,我非常高兴看到这种情况。在.NET和java平台上有着很多明显的不同。我的意思是首先.NET是windows的开发平台。这让你有了一个不同的商业策略。现在,你也知道,我们正在着手进行C#的标准化和. NET框架的核心工作。现在实际上已经有了C# 3.0 的一个标准版本了。ECMA-334 and ISO/IEC 23270]。
这里有一点迷惑:那些可以称为是3.0 ,那些则是2.0......
Osborn:这是我后面要问你的问题。
Hejlsberg:这些数字这有一点不行,我们应该在某种程度上修改一些东西。但除此之外,已经有第三方独立的C#的实现了。这就是大家都知道的Mono。并且,并不是我们的私有策略。
同时我也想微软在过去的五年中从透明化,社区参与,开放程度等方面有了很大的转变。像我们现在和客户进行的对话和五年之前是非常非常不同的,和十年前相比更是天壤之别。你知道,整个行业,通过Blog和开放源代码,已经改变了很多,单个开发者参与的也和过去是不能比拟的。
C# 语言作为面向组建的语言
Osborn:当你在2000介绍C#语言的时候,一个很厉害的武器是这是第一个面向组件的语言。在过去的五年中,这一点改变了吗?
Hejlsberg:哦,当然,变得更好的。可是,C#仍然是有很多面向组件语言的特点。这带给我们属性,方法,事件和其他的开发者每天编程都会平到核心部分。很久以前,甚至最近,编程仍然是一个辅助工具,这些工具仍然倾向于这样一种编程模型:设计界面,在这上面放上组件,然后修改属性,并加上代码。
我总觉得属性,事件,方法是如此重要,应该作为语言的一等公民来对待,这就是我们在C#上所做的工作。老实说:我也听到了一些对属性的抱怨。这其实是个屁事,你明白我的意思吗?事实上,人们总是按照事实来想问题。
从常识上来看:作为一等公民来看待的主意是我们经常做的,是非常自然的。我们在LINQ中有很多方法来做一件事情,语言集成的查询,不是吗?因为我们都需要查询,那么不应该在编程语言中把这些查询符号作为很重要的事情对待吗?用声明的方法在一个更高的层次来表达一些事情比你写很多诸如for循环和if判断语句的来得更自然吧。