使用Delphi3年,我眼中的Delphi
在题目中说自己使用Delphi3年其实很不好意思,我并没有用Delphi做过什么很复杂的应用(如果从代码行来定义复杂度的话,我写过的最复杂的应该是用C#写的,当然这不包括我现在用delphi做的毕业设计)。我相信我比这里的很多Delphi高手接触Delphi的时间要晚,这里有很多高手windindance、ehom、firetoucher、lxpbuaa、aiirii、陈锐、小眼镜、我朋友Pankun等等等等,实在是太多了。我绝对算不上一个高手甚至我觉得自己才刚入门,鉴于目前Delphi极底的人气写这个帖子只是想活跃一下气氛罢了。
我使用的第一个版本Delphi是Delphi5,之后Delphi5 Delphi6 Delphi7都用过,用的最多的应该还是Delphi7,大部分时间都是自己心血来潮的开发一些小程序或者研究某个话题。。。不知不觉说偏了,不说这些,马上进入正题,来说说我对Delphi的认识和看法:
首先我要说的是Delphi的确是一个很好的产品(说它是产品而不是语言我有我自己的看法,后面会说),Delphi在同一时期的产品中绝对有着最先进的概念和技术(当然我觉得从Delphi8以后就不是这样了),晚推出很久的C#中可以看到Delphi中很多的优点(毕竟出自一个人之手),很早的时候Delphi就有了接口、属性封装、事件机制和对象方法指针(.Net中叫委托,大家都觉得它很“高级”,每本.Net书绝对重点讲解,其实Delphi早有了类似的机制,只是在.Net中被做的更好更完善了,例如重载了+=的运算允许形成一个事件链)、metaclass(也就是Delphi中的Class Ref,当然可能这并不是完整的metaclass但它体现了部分metaclass的思想)、强大的RTTI支持等等等等,VCL和MFC从架构和设计上来看根本不在一个档次,VCL对Win32完美的封装和优美的设计实在有太多值得学习的地方,在我看来微软在windows framework上的优势一直到.Net Framework出现以后才超过VCL的水平的,但要知道VCL是多少年以前就出现的东西了。我曾经一度很郁闷,为什么Delphi/kylix这么优秀的一个产品系列却不能像Visual Studio那样成功呢?我想这和Borland在开发者社群关系上所做的工作是有关系的,这方面的宣传和工作Borland远不如微软,在其他国家我不了解情况,但在中国,看看可怜的Borland中国官方网站竟然没有自己的社区而是连接到CSDN和大富翁,Borland新闻组又只有英文版本导致其上国人少之又少,这些都间接的造成了Delphi社区的热度远远不如微软社区,要知道官方的支持对开发者的鼓励绝对是最大的,当然Borland这几年也在中国做了很多工作也开始越来越重视开发者,但我想Delphi也许再也不能达到曾经的辉煌了。
似乎又跑题了,说说我对Delphi的另一面看法,Delphi是一个非常棒的产品,用它来做Win32 application的开发绝对是首选,但前面我说Delphi是一个产品而没有称为语言是因为我觉得Delphi是仅仅被一家公司所控制的东西,Delphi的所有功能,所有标准,所有改动也只有一家公司说了算,这导致Delphi和它的IDE、和它的编译器、和它的Framework都结合的太紧密,我们要使用Delphi或者说Object Pascal就只能用Delphi(这里指产品名),我们几乎没有其它的选择,没有国际标准,没有其他的实现,所有的一切都仅仅是使用Borland的一个产品而已,所以我觉得C++可以叫做是一种计算机语言,但Delphi只能叫一个产品而已,举个例子要让Delphi程序跑起来,Delphi的编译器为我们做了许多的工作,拿接口来说,Delphi里只要一使用接口,它就会默认你将采用COM接口的生存期管理,但要知道接口不是COM的专利,你想自己管理接口和对象的生命期在Delphi编译器上就会遇到很多麻烦,编译器自动的帮你完成引用计数,帮你自动的调用@IntfClear等等(关于这个问题的详细讨论可以参看我的一篇文章:http://blog.csdn.net/hkbarton/archive/2004/05/17/14927.aspx和http://blog.csdn.net/hkbarton/archive/2004/05/17/14928.aspx),看看SysUnits里面很多找不到实现的让人晕呼呼的系统函数和大段的汇编代码就知道了,很多Delphi的特性都是Borland Delphi编译器所支持的而并不是语言本身的特性,我们要使用Delphi就离不开Borland Delphi。我说这些的意思就是说Delphi是一个Borland的产品,我们离不开它,如果有人问用C++我可以不用VS吗?这个问题可能就很白痴了,C++的编译器不计其数,我们可以用其他的IDE其他的编译器其他的库,一切都可以自由选择。我们可以用Eclipse加一个gcc的编译器,我们可以一切从头做起,所有的语言特性都有国际标准的支持等等。我的意思并不是Delphi因为这点就不好了,这样当然和任何事情一样都有利有弊,但我觉得因为这些使Delphi只能称做一个产品,虽然它的确是一个很棒的产品。这些种种原因都使Delphi开发者不可能在世界范围内形成一个大的社区,所有的情况只是一群人在使用一个公司的产品开发应用罢了,Delphi不可能象C++那样有那么庞大的社区,有很多人的贡献,能够吸引媒体和......
说了这么多,我还是觉得Delphi是一个很好的东西,我会一直对它保持一种很强的眷念,有新版本出现时我也会去尝试去学习。虽然我不能改变关于Delphi的什么,但我还是要说一句:Delphi,一路走好。