Delphi老兵不死,她只是深藏功与名

作为拥有30多年行业经验的软件开发人员,其中25年投资于Microsoft Windows,因此选择开发工具至关重要。对于我们的开发人员而言,正确的工具实际上可以成就或破坏您的职业。所以这是一个很重要的话题。

“超过25年的数百万开发人员是不会错的。
如果Delphi没有  
积极地将其作为开发平台,
那么今天我们都不会在这里。”

试图评估我使用的语言和框架(跨越数十年之久)超出了本文的范围。可以肯定地说,我至少使用了10种不同的开发工具。从适用于嵌入式的本机Basic编译器,到各种机制下的C,Java,Pearl和C#。我可以说出六个Pascal编译器(我最喜欢的语言):TMT,HiSoft,Turbo Pascal,Freepascal,Oxygene Pascal和Delphi。

早在2010年,我什至与Delphi社区的成员一起创建了自己的开发平台。因此,编程语言和编译器作为一个主题,是我花费了大量时间进行研究的内容。

但是,尽管替代方案可能充满异国情调,但即使在按时按预算交付可靠软件的精打细算方面,Delphi也无济于事。


上图与WinAPI紧密集成的好处之一是超快速,轻便的可视控件

您可能会以旋转或市场营销的方式来取消它,但如果您关注我的博客或在Facebook上经常访问我的一个用户组,那么我对Delphi的奉献无疑是毫无疑问的。多年来,我曾使用过许多编程语言和技术,但是Delphi一直是开发人员的一生。

在本文中,我想概述为什么Delphi对于Windows开发来说很棒。从Delphi开发人员的角度来看,Windows开发是什么?它涉及什么,您的标准是什么?

找到你的路

我必须承认,我不一定羡慕今天正在涉足本机软件开发的年轻男女。作为70年代和80年代的孩子,我过着奢侈的生活,比弯道领先一英寸。无论采用哪种标准或技术,当它发生时我都在那里。最新的东西始终是您已经在做的下一步工作,因此,我不必追赶或沉迷于过去的技术即可找到自己的立足点。

“ [Delphi]通过
优雅且易于理解的线性继承和连续继承做到这一点

想要在2020年编写高性能本机应用程序的年轻开发人员面临着令人困惑,甚至令人生畏的标准和框架。我可以想象,要分辨WinAPI,UWP和WinRT之间的区别并不容易。那是在我们进行ActiveX,COM,COM +,DirectX,GDI,GDI +(仅举几例)之前。过去所有具有其名称的技术都进行了多次更改。

现在,我不会穷尽所有主题,而是考虑以下内容:今天我们称为ActiveX的最初称为COM(最初在可见对象和不可见对象之间没有明显的区别),在此之前,它是完全相同的系统以Microsoft OLE的形式销售(注意:从技术上讲ActiveX 是COM,因为COM是组件对象模型和实现标准)。

我确定你明白我的意思。如果您在OLE爆炸时就在那里,那么向COM过渡以及ActiveX在可视对象方面的进一步区分是自然的。

值得庆幸的是,我们拥有可以大大简化所有这些工作的开发系统。这是Delphi脱颖而出的第一选择。

为什么选择本机编程?

我上面提到的这种混乱是每个人都必须经历的。编程的奇妙方面之一是,您永远不会学完;在我们的工作中,没有人能说“现在我没有什么要学的了”。总会有新技术,新思想,解决问题的新方法-以及与之配套的新语言。

但是,自第一台家用计算机问世以来,本地软件的开发一直没有真正改变过。这是我要教的最重要的事情之一,因为一旦您了解了原因,您就能做出更好的选择。您还将发现扎实的基础和暂时流行之间的区别(涉及语言和技术时)。


上图Delphi和C ++ Builder是在许多平台上进行本机软件开发的理想选择,但是Windows上没有什么比Delphi更好的了。

一台计算机是100%受物理学支配的。它是一台电动的,逻辑绑定的机器。物理定律充斥着处理器和存储器的工作方式,进而影响指令(机器代码)的表达方式。这听起来可能很复杂,但是您要做的只是摆脱这个问题,原因就是事情是出于某种原因。

语言来来往往,但是遵守基本计算法则的语言(本机编程语言)将永远不会消失。之所以存在它们,是因为这些语言负责其他所有事情。

换句话说,学习Object Pascal或C / C ++将为您带来好处,因为您使用这些语言积累的知识和技能是通用的,永恒的,并且可以直接转换为软件开发的其他各个方面。

Windows:技术层面

那么,对于Windows开发人员而言,标准究竟应该是什么?Windows是一个涵盖数百甚至数千种技术的大型系统。为了编写出色的Windows软件,您需要掌握哪些对象和实体?

简而言之,它们如下:

  • 桌面应用
  • 系统服务
  • 系统库
  • COM和Active X模块

Microsoft Windows有几层,每层都公开了不同的功能,因此让我们直接进入并简要地逐一介绍一下。

内核级驱动程序

在Windows生态系统的最底层,您具有关键任务技术,例如内核级驱动程序。我个人认为C ++ Builder更适合处理这种类型的编码。
并不是因为无法使用Object Pascal,而是因为大多数驱动程序都是用C / C ++编写的,所以可用的源材料数量大部分将采用C源代码的形式。

Delphi主要是为系统软件而设计的,而内核级别的驱动程序也不是凭空想象的。我在这里纯粹出于上下文提及它,因为它代表了Windows体系结构的基本层次。

因此,尽管我有需要此类驱动程序的项目,例如直接与内核集成的自定义文件系统,但此类任务很少见。在我的情况下,我们使用C ++ Builder编写了驱动程序,并在Delphi中使用了该驱动程序。

共享库

下一层是Delphi发挥作用的地方,即库(dll文件)。作为原型的本机开发系统,Delphi可以生成快速而可靠的代码。使它最适合构建共享库(dll文件)。Delphi也有自己的对象模型(VCL的一部分,Delphi运行时库),这意味着您可以充分利用成千上万的非可视组件。因此,尽管库最终是低级实体,泰山老父但使用库中的组件来为应用程序提供复杂而精致的功能没有任何办法。

库通常用于隔离应用程序可以使用的常见行为或唯一行为。将库中的工作分开可以节省时间,如果与纪律一起使用,则可以帮助您编写易于维护的软件。

服务栈

在服务层的正上方是服务层(由于服务以垂直方式相互依赖,因此通常称为“堆栈”)。Windows服务应用程序是没有视觉输出的特殊程序。不涉及任何表单,按钮或用户界面元素。这种程序旨在在后台静默运行,并且通常为桌面应用程序或其他服务提供特殊功能。

毫无疑问,Delphi是服务创作的最佳解决方案之一。由于Delphi的运行时库与Windows紧密集成,但提供了灵活成熟的组件模型-实际上,您可以编写的服务类型没有限制。

需要网络服务器吗?将服务器组件拖放到项目数据模块上,瞧,您已经创建了自己的Web服务器。需要数据库连接性吗?一样。将组件放在服务项目的数据模块上,现在您的服务可以连接到数据库了。

甚至有从头开始编写的数据库都只不过是Delphi,这意味着您的服务将不依赖于外部库或驱动程序。这在以网络为中心的大型环境中非常强大,在该环境中其他地方的错误可能会带来灾难性的后果。软件的依赖性越少,影响其运行的因素就越少。

桌面环境

在所有这些技术层之上都是实际的用户体验,即桌面环境。这就是Delphi真正首屈一指的地方。
Delphi使创建快速,现代和美观的桌面应用程序变得如此容易。当然,还有其他系统-但是Delphi的RAD(快速应用程序开发)公式,与WinAPI(中央Windows API)直接接口的方式,经过数十年的生产,已经过如此精致和完善,以至于我还没有找到任何东西可以匹配它。

为了理解原因,让我们看一下帮助将Delphi变成家喻户晓的框架,即VCL。

VCL

我对Delphi钟爱的一件事是,它使用自己的独立组件模型运行,通常称为VCL(可视组件库)。VCL是一个精巧设计,易于使用且功能强大的面向对象的框架。它从汇编语言一直延伸到可视化组件,您可以在表单上进行拖放。正是这种深度最终使它变得如此强大。其他语言可能具有某些组件功能-但是使这一切发生的潜在机制和代码通常被屏蔽或隐藏。


上图VCL的好处之一是主题支持。就像Delphi的平台独立框架FireMonkey一样,VCL允许您为Windows应用程序提供独特的外观,而不会损失行为或集成。

因此,在学习Delphi并探索其选项时,您可以从自己的位置开始,然后随着了解的增长逐渐完善技能。
VCL很棒,因为它包装了Windows的整个范围,从库到服务再到服务再到桌面,所有这些都来自一个框架。它通过优雅且易于理解的线性和连续继承来做到这一点。它实际上为每个后代建立了越来越复杂的行为和功能。

VCL从最基本和最基本的非可视类和组件开始,然后进入可见光谱。最终是TCustomControl,这是大多数视觉元素所源自的祖先。

手动为所有内容调用WinAPI或使用VCL之间的区别(或优势)是VCL可以为您处理所有事情。或者我应该说,只要您希望它处理即可。从处理字体,颜色编码,缩放选项,与设备无关的图形,构图和布局-这些非常细腻的步骤非常耗时。但最令人敬畏的功能是VCL不会强迫您。如果需要更改行为,则可以覆盖功能并编写自己的改编。VCL作为Delphi的一部分以源代码形式提供,因此您可以快速找到需要更改的方法。提供源代码也很适合学习,因为您不必经常搜索文档。VCL使本地Windows编程变得理智。干净利落。

VCL方法或配方(如果您愿意的话)已经有效使用了25年。

在它的长寿命中,它已经(并将继续被)完善,改进和调整;与Windows并存。VCL直接负责的产品数量以百万计。Delphi开发了一些最大,最成功的应用程序。他们可能没有宣传这一事实,但是您会惊讶于Windows平台上的工具Delphi和C ++ Builder多么出色(!)。

每当Microsoft向WinAPI添加有趣的新功能时,Embarcadero都会将这些功能吸收到VCL中并使其易于使用(将它们包装为类或易于使用的功能,或者将该功能应用于Delphi随附的众多组件之一)。RAD(快速应用程序开发)是数百万开发人员所依赖的独特方法,该方法经受了时间的考验。

我想不出一个面向Windows的框架,该框架是专门为已经经历了很多年的Windows生态系统编写的,但是它今天的效果和25年前一样有效。原因是它没有像其他语言和框架那样受到更改的影响-因为它直接与Windows对话。这与我在本文开头提到的原理相同,即在视觉表面之下,计算与20年前大致相同。

就其本身而言,这是一项了不起的成就。

与世界对话

我从来不喜欢限制我的选择。有许多开发人员只承诺一种语言,一种平台而第四种。但我相信所有开发人员都应保留储备充足的工具箱。在某些业务部门中,脚本将发挥重要作用,而在其他部门中,字节码可能更为重要。我认为重要的是选择一种能够与邻国良好配合,与基础基础设施接口并为所有人带来明显利益的语言。

Windows是一个了不起的平台。但是重要的是要了解Windows不仅仅是视觉桌面应用程序。在可视表面之下是大多数活动发生在服务层中的位置,或者在库级别的更下方。

能够直接与这些层进行对话非常重要,并且应用程序和基础API之间的样板代码越少越好。我觉得Delphi作为一种语言和开发系统都在我的清单上最多。我还没有找到Delphi无法与之交流或合作的技术。

Delphi还拥有一个丰富而高效的第三方组件社区,该社区提供了一些令人印象深刻的扩展包。您可以毫无问题地与COM和Active X库连接(也可以编写此类库)。与Active Directory集成同样容易和直接,就像使用FHIR这样的医学标准一样。FHIR标准实际上是由著名的Delphi发烧友Graham Grieve 在Delphi中发明的

如果使用像CrossTalk这样的包(由AToZed Software生产),您甚至可以加载并直接使用.Net程序集。因此,您可以享受本机代码的速度和性能,而不会损失与其他技术的集成。

感言

Delphi是一种深度很深的产品。我可能已经汲取了各种技术,技巧以及免费提供的软件包和附加组件,但是Delphi最终还是站在了自己的优点上。像C / C ++一样,Object Pascal是一种原型语言,这意味着它旨在与计算机交互-在计算机运行时(即,您完全像在C中一样使用内存,指针和地址)。原型语言的数量很少,但是它们代表了计算的基本方面,它负责其他所有事情。Delphi作为一种产品可以提供这种范围和深度,但是可以让您从头开始。您不会受到基础层的遮挡,但可以按照自己的步调进行处理。

通常,我想分享有关Delphi和Windows开发的太多内容,并且我无疑会一遍又一遍地回到这个主题,因为几乎没有取之不尽的用之不竭的材料。

25年内成千上万的开发人员不会错。如果Delphi不能积极地将其用作开发平台,那么今天我们都不会在这里。

 

使用RAD Studio,Delphi或C ++ Builder减少开发时间并更快地推向市场。设计。编码。编译。部署。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章