Anders Hejlsberg访谈:C#的设计过程

本访谈系列的翻译已经征得原作者的同意,转载请保留原作者和译者的链接。

Copyright © 1996-2005 Artima Software, Inc. All rights reserved

The C# Design Process

A Conversation with Anders Hejlsberg, Part I
by Bill Venners with Bruce Eckel
August 4, 2003

C#的设计过程

翻译:刘晓伟

摘要
Anders Hejlsberg
C#的主架构师,与Bruce EckelBill Venners谈论了C#设计团队所采用的流程,以及在语言设计中可用性研究(usability studies)和好的品味(good taste)相对而言的优点。

Anders Hejlsberg,微软的一位杰出工程师,他领导了C#(发音是C Sharp)编程语言的设计团队。Hejlsberg首次跃上软件业界舞台是源于他在80年代早期为MS-DOSCP/M写的一个Pascal编译器。不久一个叫做Borland的非常年轻的公司雇佣了他并且买下了他的编译器,从那以后这个编译器就作为Turbo Pascal在市场上推广。在BorlandHejlsberg继续开发Turbo Pacal并且在后来领导一个团队设计Turbo Pascal的替代品:Delphi1996年,在Borland工作13年以后,Hejlsberg加入了微软,在那里一开始作为Visual J++windows基础类库(WFC)的架构师。随后,Hejlsberg担任了C#的主要设计者和.NET框架创建过程中的一个主要参与者。现在,Anders Hejlsberg领导C#编程语言的后续开发。

2003730号,Bruce Eckel(《Thinking in C++》以及《Thinking in Java》的作者)和Bill VennersArtima.com的主编)与Anders Hejlsberg在他位于华盛顿州Redmond的微软办公室进行了一次面谈。这次访谈的内容将分多次发布在Artima.com以及Bruce Eckel将于今年秋天发布的一张音频光碟上。在这次访谈中,Anders Hejlsberg谈论了C#语言和.NET框架设计上的一些取舍。在第一部分中,Anders HejlsbergC#的主架构师,与Bruce EckelBill Venners谈论了C#设计团队所采用的流程,以及在语言设计中可用性研究(usability studies)和好的品味(good taste)相对而言的优点。

Designing with a Living Agenda

Bruce Eckel: 我听说C#是由几个设计师在一个房间里创造出来的。

Anders Hejlsberg: 是的。四年都是同一个房间。每周一、三、五,我们仍然在那个房间里。

Bruce Eckel: 我非常想知道C#的设计过程。我直接或间接地参与过好几种不同语言的设计。比如,在Python的设计过程中,Guido van Rossum被戏称为仁慈的独裁者。

Anders Hejlsberg: 我差不多也处于这种境地。

Bruce Eckel: 你也是C#仁慈的独裁者?

Anders Hejlsberg: 我是仲裁器tie breaker)。一旦我们就某个问题做了足够多的讨论,而且到了需要做一个非此即彼的决定的时候,那就由我来做这个决定。但是大多数情况下这个决定是显而易见的。

Bruce Eckel: 这和Turbo Pascal以及Delphi的设计类似吗?

Anders Hejlsberg: 那两种语言的设计没这么正规。我几乎是一个人设计的Turbo Pascal。设计Delphi的时候是与Chuck JazdzewskiGary Whizin一道,但是这是一个很小的团队,我们并不真的需要一个正规的流程。与此不同,对于C#来说,正规的流程起到了很大作用:每周一、三、五,从100300,我们有一个定期的安排好的会议。我们有一个活动的议程表。问题像泡沫一样浮上来,我们把这些泡泡击碎。现在我们在因特网上有一个Wiki,上面有问题列表,对应的解决方案等等。

Bruce Eckel: 那些问题是怎么样像泡沫一样浮上来的?

Anders Hejlsberg: 嗯,它们就是那样浮上来的。我们有许多渠道可以让用户提出意见——软件设计复查(software design reviews),新闻组(news groups)——通过各种各样的渠道我们得到关于这门语言的反馈。这些反馈就引出了一些问题以及Bug、前后不一致(inconsistencies)、不规范(irregularities)等等。然后我们就知道哪些是我们该做的事情了。它们最终出现在列表上,然后我们从头到尾地解决。我们会看看其中一个问题并且问道,“就这个问题我们有新的想法吗?没有新的想法?好,这个问题已经呆在这里好几周了,让我们试试看花半个小时对它进行一下攻坚,看看能否有所收获。”

Bruce Eckel: 那么当发现有些东西糟糕透顶的时候。。。。。。

Anders Hejlsberg: 或者发现某些东西很棒,你想在下一个发布版本里针对它做点什么。但是我想这个流程只是保证你的努力不会成为泡影的一种方法。你把所有的东西都放进那个列表。有些可能会在上面呆很长一段时间,而且后来可能你决定不再对它进行什么改动了。但是至少它被捕获了,而且有办法可以再次找到它。它可能会发生,也可能不会,但是不会说找不到它。

Bill Venners: C#的设计团队里都有谁? 他们都扮演什么样的角色?

Anders Hejlsberg: 最初的C#设计团队是由Scott Wiltamuth, Peter Golde, Peter Sollich, Eric Gunnerson以及我自己组成的。C#2.0的设计团队包括Peter Hallam, Shon Katzenberger, Todd Proebsting和我自己。大多数有关泛型(generics)的功劳都要归功于来自微软研发部门的Don SymeAndrew Kennedy

可用性研究(Usability Studiesvs. 审美需要(Aesthetics

Bill Venners: C#的设计有多少是基于可用性研究? 多少是基于市场的考虑?又有多少是出于审美需要?

Anders Hejlsberg: 归根结底,好的语言设计最终要归结于能否召集一群有品味的人。用你的话来说,它归结于编程上的审美需要。好的品味是非常主观的东西,也很难定义,但是你看到它的时候还是能够把它辨别出来。而且我认为再多的可用性研究也不能给你品味所带来的东西,因为可用性研究更倾向于纵向的东西vertical)。一项(可用性)研究可以这么问,“你对这个特定的功能有什么看法?”但是很难这么问,“你认为这门语言怎么样?”你从哪里切入呢?你怎么可能在两个小时的可用性研究中解决这个问题呢?实际上没这个可能。

Bruce Eckel: 人们必须(对这门语言)有深入的了解。

Anders Hejlsberg: 使用一门编程语言更大程度上是一个深入其中的过程。人们只有在使用了数月之后才可能真正欣赏某种编程语言。然后他们可能逐渐意识到,“哇,这确实很爽。”这些你不可能一蹴而就。

That being said,我们做了大量的可用性研究,但是它们更多是纵向地针对于某些特定功能。

Bill Venners: 比如说呢?

Anders Hejlsberg: 大多数实际上都是关于IDE特性(feature)的可用性研究。我们可能会问,“人们能够明白通过单击右键就可以做这些事情吗?”我们也做过纯粹针对这门语言的语法的可用性研究——举个例子说,我记得我们是针对属性(properties)和事件(events)——但实际上这些是没必要的。

我觉得对于语言特性来说,很难像针对IDE特性的可用性研究那样,得到很高的回报。IDE的交互性是非常强的。你可以观察用户点击右键菜单,然后得到合适的反馈。对于编程语言来说,存在更多的问题,“从概念上来说,这个容易理解吗?”拥有一个用户咨询委员会、反馈委员会可以很好地解决这个问题。你就有地方可以陈述,“这是我们正在考虑针对这个特定的新特性要做的东西,你们都是怎么看的?”然后你明确地催促他们提尽可能多的意见,因为在加入这个新特性之前知道(这些意见)总比加入之后要好的多。所以说除非对某个语言特性像扣篮那样完全有把握,否则我们倾向于更多地倾听反馈委员会的意见。

下周

Anders Hejlsberg访谈的下一部分将会在(2003年)818号,星期一贴出来。如果你想收到Artima.com上新文章每周简报的电子邮件,请订阅Artima Newsletter

反馈

对本文所描述的设计原则有自己的观点么?那么请到News&Ideas论坛讨论这篇文章,The C# Design Process.

资源

深入C#:微软主架构师Anders Hejlsberg访谈:

http://windows.oreilly.com/news/hejlsberg_0800.html

A Comparative Overview of C#:
http://genamics.com/developer/csharp_comparative.htm

Microsoft Visual C#:
http://msdn.microsoft.com/vcsharp/

Anders Hejlsberg不是Artima的采访对象中第一个提到品味的。Jim Waldo在他的访谈中针对构建一个由有品味的程序员组成的团队给出了几乎同样的评述:

http://www.artima.com/intv/waldo10.html

Ken Arnold’s的访谈有一整部分都是关于设计品味的——品味和美学(Taste and Aesthetics):
http://www.artima.com/intv/taste.html

 

<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值