`
sslaowan
  • 浏览: 374178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

为Delphi正名

阅读更多
 
为Delphi正名
(零雨其蒙原创,转载请注明出处)
一直以来,我看过的文章在介绍编程之路时总会提到大名鼎鼎的Delphi,说法大概就是如果你刚入门,就选一个类似于VB或Delphi这样的可视化编程语言,比C语言简单,但是如果想成为高手,一定要精通C。这句话前一句没有错,后一句有一半对,但中间那句比C语言简单我就不敢苟同了。我觉得下如此结论的,都是对Delphi的不了解使然。一言以蔽之,Delphi可以说是C/Cpp+Java+VB,Delphi不仅是RAD利器,同时也是完整的OO语言,在硬件开发方面也是毫不逊色的。
一、广为人知和功能强大的RAD
和大多数Delphi程序员一样,我也是从Delphi的RAD功能认识Delphi的强大的。那时我只会VB,ASP,C,只会面向过程编程,但是可以用Delphi很容易的编写出界面漂亮,可以马上变成exe拿到别的机器上运行,这让我很兴奋,Delphi比VB还让我兴奋。因为是做项目学的Delphi,所以就是跟着别人走,但是两个星期我就可以写出很好看的代码了,主要依赖于我良好的编程习惯,并且作为开发企业信息系统也游刃有余了。这可能就是所谓的很短时间就可以精通吧~如果按照这个标准,如果有,你也很快就可以号称精通C语言了。也有人如此评价精通,这是我听到Java社区里有“高人”指点的:要背熟和会使用所有Java API。那么要用遍和背下Delphi的RTL、VCL和CLX库,也不是几个月精通的事吧。这只是RAD这一部分,你要全面地理解其面向对象精华,也就等于学习一遍Java了。Delphi原本就是一门面向对象语言,可是我看过大量国内的Delphi的程序,却没有用OO技术的。开发大的企业级项目(我开发的基本上都属这类),不使用OO技术进行组织,真是一场噩梦。起码我们项目组4代人的经历让我感到了这一点。我前一阵子去维护的那个项目(一个大型生产系统)已经干了至少7、8年了,极其复杂,由于都是利用的RAD魔术,随手拖过来一个控件,然后在控件下面写一段1000多行的代码,包括两个case分支,20个if条件分支,再加上这个算法还有魔法数字跳来跳去,简直太恐怖了。Delphi不是拿来玩玩的玩具,你可能开发个桌面记事本,FOXMAIL一类的东西还感觉不到,但是这样复杂的系统,可不是拖拖了事的了。
二、完整的OO技术实现
与传统的C相比,Delphi中的垃圾回收机制(只能回收接口和Delphi控件),异常控制机制,都是和Java,C++差不多的(上升到算法的高度自然差不多,因为计算机科学的研究成果毕竟有限)。而在堆上建立对象,在栈上建立对象引用则与Java,C++,C#这些语言是一样的(估计所有的OO语言都是这么实现的)。在一个视频监控系统的项目中,我第一次尝试了Delphi面向对象编程,并在系统中引入了三层结构。由于我事先无法知道摄像枪的数量,因此将视频捕捉封装成一个对象,以类的形式展现是最好不过了,然后使用工厂模式生产摄像枪就可以了。
Delphi的在面向对象方面语法很多跟C++很像,比如重载的方法必须都是虚方法,还得使用Virtual,而Java这样的语言就不需要。Delphi的面向对象实现似乎可以和C++做一一的类比,缺乏自动的垃圾回收机制(这种机制真是让我不好说,当我看到程序在创建一块内存然后销毁掉这样一张一弛的变化时,觉得这个世界是多么的和谐啊,对象的生命周期都是由我来控制的)。
Delphi的面向对象在我看来语法上不是那么优雅,和C++一样,先要在interface中声明(C++则是先在类中声明),然后在implement中实现,很是繁复。看上去也不清晰。我倒是觉得Java比较好。
而与Java和C++相比,不使用setter和getter,而是使用property,真是不错的实现。C#、VB.Net也一样,毕竟都出自Delphi之父的手笔。
三、毫不逊色的底层编程
使用Delphi编写接口也很普遍,与C这样的语言一样,Pascal对底层的操作也很出色。指针,结构体,这些在Java、VB中看不到的东西,在Delphi中也都有,可以和C语言一一比照。C语言的fans们觉得高人一等的是觉得它的快速、简洁和底层吧。还有可以编写个链表之类的。这些Delphi也都可以搞定。当然数据结构和语言的关系耦合性并不大,准确使用算法和数据结构的是高手,但仅仅用使用C还是Delphi来评介,则显得很幼稚了。
其实我也是做那个视频监控系统才第一次涉及到一些底层,或许对于真正搞底层的人而言那些还算不得底层。调用C/C++编写的DLL库,用字符指针来代替字符串,申请并释放内存,找到了点编写C/C++程序的感觉。
 
Delphi博大精深,绝不是一两个月可以精通的,如果精通了Delphi,我指的是真正的精通,那么学习其他语言将一如翻掌,而学Java则稍微差一点,C则更差(伟大的面向对象你将感受不到)。所以正在或正要学习或使用Delphi的朋友,Delphi将会成为你的良师益友,好好学习它,学精学深,大有裨益。
 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics