`
sslaowan
  • 浏览: 379666 次
  • 性别: 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将会成为你的良师益友,好好学习它,学精学深,大有裨益。
 

分享到:
评论

相关推荐

    CEF4Delphi-master.zip_CEF4Delphi_chromium_delphi_delphi Chromium

    CEF4Delphi是一个专为Delphi开发者设计的项目,它实现了对Chromium浏览器引擎的封装,使得在Delphi应用程序中嵌入和控制Chromium成为可能。这个名为"CEF4Delphi-master.zip"的压缩包包含了CEF4Delphi的源代码、示例...

    TMQTTClient-delphi.rar_MQTT delphi_TMQTTClient-delphi_delphi ssl

    标题中的"TMQTTClient-delphi.rar_MQTT delphi_TMQTTClient-delphi_delphi ssl"揭示了这个压缩包包含的是一个适用于Delphi开发环境的MQTT客户端库,名为TMQTTClient-delphi,特别强调了它支持SSL/TLS加密连接。...

    Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结

    - 如果项目中使用了 Tnt 控件或其他依赖于 AnsiString 的功能,如 WideTextPos 和 WideStringReplace,应考虑替换为标准的 Delphi 对应组件,以避免兼容性问题。 6. **AnsiStrings 单元的引用**: - 如果需要使用...

    PythonForDelphi for Python3.7 delphi7 + XE2

    总的来说,PythonForDelphi为Delphi开发者提供了一个桥梁,连接了动态的Python世界和静态的Delphi世界。通过这个工具,开发者可以充分利用Python的灵活性和Delphi的高效性,创造出更复杂、功能更全面的应用程序。...

    wke + delphi + Miniblink delphi 开发 webui最佳组合

    在IT行业中,开发WebUI(Web用户界面)的工具和技术多种多样,而“wke + Delphi + Miniblink Delphi”被推崇为一个高效且功能强大的组合。这个组合主要适用于那些希望在桌面应用程序中嵌入Web浏览功能的开发者,尤其...

    libssh2-delphi Delphi数据库编程

    libssh2-delphi Delphi数据库编程 【实例简介】delphi调用SSH实例 【核心代码】. ├── libssh2-delphi │ ├── bin │ │ ├── Project1.exe │ │ └── libssh2.dll │ └── src │ ├── comp │ │ ├...

    sqlite3 for delphi (支持delphi2009与delphi2010)

    SQLite3 for Delphi是一款专为Delphi开发者设计的SQLite数据库接口,它允许用户在Delphi 2009和Delphi 2010开发环境中无缝集成SQLite数据库系统。SQLite3是一个轻量级、开源、自包含的关系型数据库,广泛应用于...

    delphi 破解神器 支持delphi2009,delphi 2010,delphiXE-XE5

    使用方式简单,支持破解的delphi版本为delphi2009,delphi2010,delphi XE, DELPHI XE2 ,DELPHI XE3 DELPHI XE4,DELPHI XE5。所有的破解只要点击两个按钮既可完成。方便快捷。先点击“general serial ”,再点击...

    Delphi 2007程序设计教程

    《Delphi 2007程序设计教程》以Delphi 2007 for Win32为开发平台,对Delphi开发做了较全面的介绍。《Delphi 2007程序设计教程》使用面向对象可视化程序开发的方法,解决实际工作中的工程应用系统设计与开发工作。...

    Delphi_JSON delphi7解析JSON控件

    标题提到的"Delphi_JSON delphi7解析JSON控件"是指一个专为Delphi 7设计的组件,它使得开发者能够方便地在Delphi 7应用中解析和生成JSON数据。 Delphi 7虽然发布于2005年,但至今仍有很多项目在使用。然而,原生的...

    C++的头文件转换为delphi定义

    例如,C++的`int`在Delphi中可能是`Integer`,`void*`需要转换为`Pointer`,类指针可能需要转换为Delphi的接口。对于模板类,通常需要在Delphi中实现类似功能的泛型。 其次,C++的函数声明包含有extern "C"来确保...

    C++头文件转delphi工具

    在跨平台开发或者代码共享的场景中,有时我们需要将C++编写的头文件转换为Delphi可以理解的源码。这时,一个名为"C++头文件转Delphi工具"的实用程序就能派上用场。这个工具简化了C++与Delphi之间的接口转换过程,...

    zxing.delphi是最新3.9.5版,支持到delphi 12,好用的条形码与二维码扫描源代码ZXing.Delphi-v

    ZXing.Delphi是一款专为Delphi开发者设计的开源库,用于实现条形码和二维码的扫描与生成。这个版本是3.9.5,它已经更新以支持最新的Delphi 12版本,这意味着开发者可以利用这个强大的工具在Delphi 12环境下构建具有...

    NativeExcel3.1.0升级为支持DelphiXE11版本

    标题 "NativeExcel3.1.0升级为支持DelphiXE11版本" 涉及的是一个关于Delphi编程环境的库更新,具体是NativeExcel3.1.0的升级,目的是使其兼容Delphi XE11开发工具。Delphi是一款强大的面向对象的 Pascal 编程语言...

    delphi-modbus-tcp三方控件,支持Delphi11

    标题中的"delphi-modbus-tcp三方控件,支持Delphi11"表明这是一个专为Delphi编程环境设计的第三方Modbus TCP库,用于在Delphi 11应用程序中实现Modbus通信。Modbus是一种广泛使用的工业通信协议,主要用于设备间的...

    Restore Delphi IDE 恢复Delphi IDE 的初始布局

    在使用Delphi 开发的时候,经常会出现IDE布局混乱,在这种情况下,无论咋样调整都恢复不到原始的,使用起来很是麻烦,于是我就做了这个程序,主要用来恢复Delphi的IDE开发环境布局。 支持 Delphi 10、11、12 关闭...

    PythonForDelphi for Python3.7 delphi7

    这是一个组件库,它为Delphi提供了Python API的绑定,使得Delphi程序可以直接调用Python的函数和模块。这极大地扩展了Delphi的编程能力,使得开发者可以利用Python丰富的库资源,同时保持Delphi的高性能和桌面应用...

    Delphi-控件实现NTP客户端校时功能

    Delphi-控件实现NTP客户端校时功能Delphi-控件实现NTP客户端校时功能Delphi-控件实现NTP客户端校时功能Delphi-控件实现NTP客户端校时功能Delphi-控件实现NTP客户端校时功能Delphi-控件实现NTP客户端校时功能Delphi-...

    Delphi2Cpp(delphi代码转换为C++代码

    可以把delphi代码转换为C++代码,每次转换单个文件。 源代码中的中文,转换后在界面看是乱码,将转换后的代码保存文件后,中文恢复,不再是乱码

Global site tag (gtag.js) - Google Analytics