十年

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
我为Delphi着迷——Danny Thorpe访谈录 (转贴) [5873字节 winsock_star 2005-1-11 10:44:0 回复:6/78 版块:.net开发]
                                  采访/孟岩 译/温昱

Danny Thorpe从Delphi 5开始担任Delphi的首席架构师,是Borland R&D部门的灵魂人物。本刊记者在Delphi 2005推出之际,对他进行了专访,以下是采访全文。

《程序员》:首先,请您为我们的读者做一个简单的自我介绍。

Danny:我是Borland的首席科学家之一,负责把握软件开发工具市场的技术方向和机会,特别是Win32、.NET和Linux这三个平台。我于1990年作为软件测试(QA)工程师进入Borland公司,那时我刚从路易斯安那州立大学毕业不久,获得了数学专业理学士学位。我曾致力于自Turbo Pascal 6.0以来Borland的每个基于Pascal的产品,以及Borland C++的几个版本,还协助过JBuilder的最初版本。1995年,我从Delphi QA部门转到了Delphi R&D部门,负责为Delphi 2.0将VCL图形系统和DBGrid控件移植(port)到32位Windows平台。我是Kylix项目的创始成员,主要致力于为Linux平台开发编译器。2001年,我努力推动Borland 为Microsoft .NET平台开发工具,并成为了Delphi for .NET项目的首席工程师。

嗯……,以上的回答不是很简短!我认为更简短的回答是:我至今已经在Borland工作14年多了,曾致力于Delphi产品的大部分工作,包括RTL、VCL和IDE的设计,最近是编译器本身的工作。我喜欢旅行、单板滑雪、以及单板滑雪旅行!


《程序员》:您是Borland现在的首席科学家、Delphi的首席架构师,能否请您谈一谈Delphi 2005的关键理念或者思想?

Danny:Delphi 2005具有很多新特性,它们共同成就了提高开发者生产力的主题。在同一集成开发环境中,同时支持Delphi Win32、Delphi for .NET和C#三种项目,减少了你在不同任务之间切换的时间和工作量。源代码重构功能帮助你将大量代码划分成更易管理的、更易读的子程序。当你工作时,Code Insight工具帮助你发现你要找的但记不起确切名字的方法,还能指出你的代码中哪里有打字或语法错误。本地文件版本跟踪功能无缝扩展到了StarTeam版本控制系统中。上述所有特性,对Delphi for .NET项目、C#项目、以及你的现存Delphi for Win32项目,都是有效的。Delphi 2005是唯一真正无缝连接Win32开发和.NET开发的开发平台。

《程序员》:您对Delphi 2005满意吗?您最喜欢它的哪个特性?

Danny:Delphi 2005体现了整个团队几年来的工作价值,我们致力于开发multi-personality的集成开发环境已经很久了,我对Delphi 2005很满意。现在的Win32开发者将高兴地发现,他们的生产率有了新的提升,同时,他们有机会探索和实验.NET项目,为今后的Microsoft平台做积极的准备;.NET开发者也会欣赏这些强大的工具,当然还包括针对.NET 平台的数据库和UML建模特性,这一点领先Microsoft的产品好几年,他们还处在讨论阶段。

依我看来,ECO建模平台是该产品最令人兴奋的强大功能之一。有了ECO,你就能在你的编程环境中为实体和关系建立UML模型,并在运行时刻使用这些模型,而不必编写很多代码。ECO会解决对象持久化到数据库的问题,并提供诸如事务机制和动态查询内存对象等许多其他的服务。当你改变你的模型,以便在一个对象中增加一个新的数据字段时,ECO会针对改变“进化”你的数据库,并将已存在的数据迁移到新的表结构中。无疑,ECO非常强大并且可扩展,我自己还在学习如何使用ECO呢!

《程序员》:我们发现,Delphi 2005的外观(UI)和传统的有很大不同,为什么改变Delphi开发者以往所熟悉的外观呢?

Danny:我们坚持不懈地寻求组织事情和完成事情的更好途径。老的component palette对于少量部件来说工作得很好,但是对一个想要在IDE中安装几百个甚至上千个部件的Delphi开发者,它不能很好地适应。所以,我们重新实现了component palette,以更好地处理大量部件的情况。为了便于操作文本,新的component palette是垂直方向的,现在你可以用键盘依部件名对部件进行“收敛搜索”;例如,键入“BU”,部件列表就会跳到TButton控件。非常快。

开发环境中display surface的数量也是组织界面的一个挑战,把这些窗口“边靠边”地粘在一起,或是交叠成标签页的方式,有助于保持界面整洁。这就是缺省显示布局是全屏方式的主要原因。我们知道很多Delphi编程者喜欢Delphi以前版本的“floating designer”布局风格,所以我们特意提供了两种选择,只需设置一个开发选项并重启IDE,VCL窗体设计界面就重新自由浮动了。(但是,这并不适用于.NET WinForms设计界面,因为它是用.NET框架实现的,不支持自由浮动模式。)

因此,我们并非为干扰用户才改变界面的。我们设法避免扰乱用户的行为习惯,但是当我们发现一个改变能够使复杂的步骤得以简化,我们可能会采用它。

《程序员》:Borland的开发工具一直强调和建模、重构及测试等工具的集成,这是否意味着Borland正在提倡一种特定的方法论呢?您最喜欢哪种方法论(或者开发过程)?

Danny:Borland的工具正朝着支持过程和方法论的方向发展,因为这就是用户的要求。大公司和开发商希望过程能帮助他们保持多人协作工作的顺畅,独立咨询顾问希望过程能帮助他们规范与客户关系有关的分析、开发、交付和付费等方面的工作。

我们不会强加给你任何特定的方法论;但是,如果你喜欢一种过程,并希望我们的工具能有助于你贯彻该过程,我们的产品不会对你有任何限制。这正是Software Delivery Optimization率先支持的理念——它将业务过程和软件过程进行全面的双向衔接,从而使业务决策者和开发人员的工作也双向衔接起来。因为,如果你进行了真正认真的考虑,你会发现软件过程“就是”业务过程——无论你们的业务是制造汽水还是让人们快乐——如果你的业务依靠的软件不成功,那么你的业务也就不成功。

就个人而言,我最欣赏软件开发的迭代模型,有时它被称为“龙卷风”过程。按照迭代模型开发软件时,你会经历多次传统瀑布模型的大部分阶段(估算、定义、设计、开发和测试)。正如“龙卷风”这个绰号所暗示的,这些快速进化并重复的阶段——有时是每天——为进行评审和修改提供了充足的机会。每个迭代过后,你的软件都向目标接近一步。如果目标发生改变,比起其他早在数月以前就筛选和建立目标的方法论,迭代模型更便于转而进行新目标。

我提及迭代模型,还有一个原因。当试图为一个问题开发解决方案时,我们要深入学习这个问题。但是,不论你预先做了多少分析工作,似乎永远会有些料想不到的事情潜伏在代码的字里行间,当你发现了它们,为了消除潜在的风险,你要回过头来修改你的设计计划,甚至可能修改问题定义或者开发目标。

《程序员》:Delphi 2005仍然同时支持Win32和.NET平台的开发,并加强了对.NET开发的支持。将来这个策略会变吗?会逐渐向.NET倾斜并最终放弃对Win32平台的支持吗?

Danny:当客户告诉我们,他们对购买支持Win32开发的工具不感兴趣的时候,我们就该让产品的Win32支持部分退休了。我认为这不会很快发生。Win32在接下来的很多年将继续存在,它们仅仅是不如.NET迷人而已。

我们将继续增强Delphi集成开发环境的Win32开发支持。例如,在Delphi 2005中,首先出现在Delphi for .NET中的语法增强(比如嵌套类型),也被加入到针对Win32的Delphi 编译器中;而所有code insight和重构工具一视同仁地应用到了Win32和.NET开发中。编译器对inline函数的支持,实际上是从Win32编译器开始的;在它可用之后,我们认为没有理由不让.NET编译器支持该特性。

我预计,今后不会有重大的新开发是排除Win32平台而进行的。我们已经有了支持.NET 2.0平台的重大开发计划,这些语言和产品的特性中,很多也对Win32开发可用。

《程序员》:对软件开发工具的发展趋势,Borland有何预见?

Danny:操作系统和应用框架(.NET是一个运行时环境,但我认为它本身就是一个运行在Windows操作系统内部的操作系统)将变得越来越功能丰富,越来越强大和复杂。开发工具将必须支持所有这些能力和复杂性,但是,对开发工具而言,真正的挑战是使复杂性降低到人们能应付的水平。一个开发者的头脑能应付的东西就只有那么多,所以我们将越来越需要依靠开发工具来帮助我们完成工作。现在,这意味着诸如Code Insight和Parameter Completion这些提高生产力的手段;但将来,工具的辅助作用还包括:帮助你定位已存在的函数,做你正期待的事情,帮你在程序中调用特定代码,或是增强其他代码来处理你在工具中进行的操作所要求的附加情况。

你所面临的挑战超过了你头脑的能力,这就意味着,要将工作完成,就需要更多地与他人合作、更多的交流和更多的过程分析;这样,那些可能使你的整个项目面临失败风险的事件,在它们造成损害之前,就能够被及早发现和处理。你的老板不必催促你提交周报,开发系统(公司范围)应该能够报告项目中发生了什么,并且报告完成计划的情况,而无需增加每个人撰写例行公文的工作负担。

总的来说,我认为是时候统一开发模型了。今天的集成开发环境太复杂了,比推出Delphi 1.0时复杂得多。我们正在Borland内部探索从根本上简化构造应用程序的工作,我们希望减小使用开发工具构造有用的应用程序所必需的最小技能集,其中有些有趣的想法将对长期存在的传统和假设是个挑战。二十年前做出的选择,使得使用当时的工具开发解决方案成为可能,但在今天,也许不是最佳选择,甚至根本没有必要。但是,哪些选择是永恒的真理,哪些又是为完成工作而做的让步呢?

例如,Delphi的32位编译器在20世纪90年代早期被设计时,有一个设计目标是要能够在只有8MB系统内存的机器上编译任意大的程序,为此做出了很多牺牲。如今典型的开发用机其系统内存正迅速向1GB逼近,继续保持这些牺牲还有必要吗?

《程序员》:Borland C++Builder和Kylix有了下一个版本吗?Borland C++BuilderX怎么样了,推出它的战略意图何在?

Danny:我们正积极研究如何在不久的将来升级这些产品,而不影响我们下一个版本的Delphi发布计划。尽管Borland有时候似乎很大,但产品开发队伍一直以来都非常小——比Microsoft或IBM同类产品的开发队伍小许多倍。或许,我们的开发队伍比较小,是我们有能力以机动性战胜更大的竞争对手的一个因素。我们将找到一种途径,让正确的人做正确的事,完成每一件工作,并做得更好,对此我有信心。

《程序员》:您是著名的、中国开发者钦佩的顶尖开发者之一,您可以给中国开发者一些如何逐步提高的建议吗? 

Danny:我必须说,我很惊喜(并且谦逊)地发现,大量指向Delphi Compiler Core blog的链接和互联网页面点击,都来自华人开发者。我希望有一天能够访问中国,看看情况是如何火爆!

顶尖开发者最大的特点,或者成为顶尖开发者的潜能,在于解决难题的激情。你必须对开发软件解决方案、解决难题和找出bug的原因,有超乎寻常的兴趣。培训能够使一个人成为胜任的开发者,但激情是区分好的开发者和“伟大”的开发者的标志。激情给你力量,使你能够坚持更好的解决方案,哪怕它可能更困难。对于长时间高压力地工作,并最终完成开发计划,激情是很关键的。

如何培养激情呢?培养你的好奇心,从事令你着迷的行业,做你喜欢的项目。你总梦见编写计算机游戏程序吗?太好了。开始写些小游戏,比如类似弹球的游戏。是的,这些游戏比起《雷神之锤》(Quake)或《最终幻想》(Final Fantasy)来,显得很愚蠢,但是如果你让它可以运行,并设法解决了碰撞判断和妖怪移动等问题,那就很酷了。屏幕所显示的样子并不重要——你解决了难题,征服了高山,这燃起了你开发软件的激情。

其次就是向别人学习。这是我的经验:顶尖开发者几乎总是乐于帮助新手提高技术水平,特别是当这个新手充满热情和好奇心,并在求助之前进行大量思考的时候。一个指导者喜欢通过一次又一次地帮助他人,体验解决问题的兴奋。但是,不要期望他们手把手地教你所有的事情。你要做一些功课——研究一段代码,不仅要设法理解每一行代码做什么,还要理解它们为什么这么写。或许,你会发现有的代码非常奇怪,或者似乎不够完美,那就去请教你的指导者,他们可能会咯咯地笑起来,并告诉你,“这并非像看起来那么简单,让我来解释一下……”

我最初是在Chuck Jazdzewski的指导下,度过这些阶段的,我曾经为经常为问些“愚蠢的问题”打扰Chuck而道歉。Chuck笑了,摇着头说:“真正令我烦恼的是,当一个人打断我的工作,问的却是通过阅读文档和源代码,或是思考一会儿就能解决的问题。这些问题浪费了我的时间。然而,你的问题常常触及有趣或棘手的话题,这说明你下过功夫并思考了很多问题。我欣赏你去努力地理解问题,而不是指望别人提供所有答案。我永远欢迎你提问题。”

请永远记住现在这些Delphi R&D团队中的Delphi专家在数年前Delphi刚开始发展时根本不是Delphi的专家。Delphi无论是在从前或者是现在,对于Delphi R&D团队来说仍然是一个在探索中的产品,我们每天仍然都在学习,也不断的发现新的惊喜。

《程序员》:非常感谢您接受我们的采访!
posted on 2005-06-22 16:47  留不住的时光  阅读(1548)  评论(0编辑  收藏  举报