百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

25 岁的老 Delphi,还值得程序员入手吗?

zhezhongyun 2025-02-20 18:47 15 浏览

Delphi 25岁了!尽管它不再是很多 Windows 开发的明显选择,但它的“长寿”证明了其性能之高。回想起来,为什么 Delphi 当初未能占领 Windows 开发市场的更多份额呢?本文细数以 Delphi 为首的编程语言以及软件创作系统所经历的 25 年风雨,以此祭奠老 Delphi 程序员们已逝的青春。

作者 | Jon Lennart Aasenden

译者 | 弯月,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

我想通过本文细数以Delphi为首的编程语言以及软件创作系统所经历的25年风雨。我应该从哪里开始呢?史无前例的面向对象?事件驱动架构?蓬勃发展的组件市场?还是从x86汇编语言扩展到高性能ARM移动应用程序的技术?

我不想简单地列出各项技术,而是想以一种更加个人化的方式来撰写这篇Delphi的文章。毕竟Delphi 25周岁了,人们喜欢在生日这天举行演讲和反思:回顾过往的一切,同时坚定地展望未来。

简而言之,我只能通过本文传达在我作为软件开发人员的一生中Delphi给予我的宝贵价值,而且我相信数百万的Delphi开发人员感同身受。

我希望通过这篇文章,将我的想法传给现在刚开始学习Delphi的许多学生。希望为你们的学习提供一些有营养的见解,并希望你们能和我一样深爱Delphi。

Delphi 的起源

1990年初,计算机市场与今天相比有着截然不同的格局。在斯堪的纳维亚半岛和北欧,Commodore和IBM等公司仍然占据着家用台式机的市场。但是在短短的三年之内,IBM的OS/2就被微软的Windows淘汰了,而曾经的巨头Commodore也陷入了其不可避免的痛苦局面,这两家都无法或不愿意适应当时兴起的新业务模式。在同样动荡的1993年,微软和IBM正式分道扬镳,IBM转向了大型机及其PPC芯片组体系结构,后者在接下来的十年甚至更长的时间里一直是Macintosh计算机的核心。

我提到这些公司的原因是为了让你了解当时市场的混乱状况。对于像我这样的年轻学生来说,根本不可能知道应该在哪种技术上投入精力。我的编码生涯是从Commodore Amiga版本的Turbo Pascal开始的,该版本由英国公司Hi-Soft发布,称为High-Speed Pascal。当时,我还是工程系的新生,在学校里,我们主要使用Turbo Pascal和DBase。可惜当时的PC机非常昂贵,我没钱花4000美元购买PC,于是花了700美元买了一台Commodore Amiga。我觉得,Pascal编译器的价格约为$99,这对于一个努力维持生计的穷学生来说,可以省不少钱。

1994年的时候,我使用的编译器不能用了,很明显Commodore再也未能东山再起。值得庆幸的是,我忍无可忍,终于下血本买了第一台带有Turbo Pascal的PC机。我很高兴买了这台机器,因为第二年Delphi就发布了。

每当我提到Delphi曾经以及将来对我的影响,我一点都没有夸张。Delphi自问世以来,对整个软件开发行业的影响是巨大的。Delphi以及在此之前的Turbo Pascal,开创了许多当今开发人员认为理所当然的技术,甚至包括快速应用程序开发(Rapid Application Development,即RAD)周期本身。在Delphi之前,人们的目光都聚焦在投资回报率(ROI)和上市时间(TTM)上,编程语言带来的变化微乎其微。但是,当Delphi出现以后,时间和金钱的投入都非常清晰明确了,因为Delphi带来了颠覆性的变革(对于其竞争对手来说)。

因此,在90年代初期技术的战国时代,Delphi成为了最大的赢家。当之无愧。

飞跃发展

思想和观念的进化概念一直让我十分着迷。我经常在文章中提到这个概念。

我们总是认为进化是一个缓慢、渐进和线性的过程。但是当涉及到想法,尤其是技术时,我的经验是,好的技术会以快速、出乎意料的飞跃向前发展。孵化时间可能会有所不同,但最终在某种力量的推动下就会飞速向前。

1995年,Delphi进入市场时远远领先于竞争对手,人们发现Delphi很难学。但事件驱动编程的概念已经出现很长时间了(例如Visual Basic),因此Delphi并不是在真空中孵化的。虽然有一些C/C ++编译器也发展出了Delphi带进大众视野的语言功能,但是它们都缺乏Delphi的简单性和优雅性。

在伴随我长大的Commodore机器上,有很多软件支持拖放式表单设计,而且在某种程度上编程也采用了类似的方法(尽管处于更原始的状态)。但是,Delph的独特之处在于,没有公司将这些想法融合为一个连贯的整体。我从未见过VCL框架之类的东西,或能够与你的代码如此紧密地集成的IDE。

一款功能强大的编译器将所有这些元素组合在一起,比其他的编译器要早很多年。如今的C/C++编译器(从Pascal开发人员的角度来看)绝对非常强大,但是视觉设计在很大程度上需要独立完成(Borland C/C++具有类似OWL的框架,因此UI可以通过代码完成) 。因此,在竞争产品中,例如Wacom(1984~2010)或Storm C++(1995~2016),你需要在一个程序中创建UI,然后将这些设计作为资源文件导入到C/C ++项目中,与如今的苹果.nib文件没有什么不同。只有完成这些,你才可以开始构建程序。有的代码可能只需5分钟,而有的代码中该过程很容易超过5个小时。即使是很小的UI改动,也需要花几分钟才能生成代码和做链接。

Delphi强大的编译器和智能链接器可以将这个过程减少到几秒钟。这是十多年来世界上最快的编译器。它的速度如此之快,以至于大多数开发人员将编译功能当作一种快速检查繁琐的语法的方式。这对于其他语言来说都是不可想象的。

面向对象

毫无疑问,Delphi迈入了一个更高层的领域,即真正意义上的面向对象编程。在这之前,Pascal对面向对象还有点三心二意。Turbo Pascal 5.5是一流的DOS工具包(市场上称为“带对象的Turbo Pascal”),但其实它的对象只不过是带有程序的记录类型。除非你精通C++,否则你必须使用Modula II或Smalltalk之类的语言,才能获得Delphi提供的那种对象模型。但是,它们都缺乏Delphi擅长的RAD(快速应用程序开发)层。

整个80年代和90年代初期,在Delphi的推动下,所有播种和孵化的技术都飞跃发展成了系统,面向对象成了语言本身基本的特征,而不是作为附加功能使用。由于Delphi程序在完整的VMT(虚拟方法表)下运行,因此开发人员可以享受继承、虚拟和抽象方法以及可靠的数据封装——所有这些均来自于易学、易用和竞争激烈的语言。

锦上添花的是Delphi注重视觉编程。你可以将一个按钮拽到窗体上,然后双击填写事件处理程序,这个过程无需离开IDE或切换选项卡。之前已有其他编译器做到了这一点,但Delphi是真正的本地编译器,而不是通过字节码或托管系统让IDE按照自己的规则进行操作(以性能为代价)。Delphi是首个达到C/C ++级别的性能和深度(多亏了Object Pascal的易学和优雅)的语言。你还可以与Pascal并排编写机器代码,所以说Delphi与Visual Basic或SmallTalk是完全不同的级别。一夜之间Visual Basic从英雄变成了无名小卒。

现代Delphi与C/C++并肩,但仍非常重视可视化OOP编程

关于这一点,Object Pascal拥有与C/C++并驾齐驱的深度和功能,这是因为Delphi的视觉和非视觉组件库都是由Delphi制作的。换句话说,你没有强制依赖第三方提供的组件(这是竞争解决方案的惯用方法)。任何人都可以坐下来编写自己的组件;然后以可执行文件或源代码的形式打包出售。因此,组件市场蓬勃发展,导致竞争对手黯然失色。

我甚至想说,如果Delphi是在IBM OS/2上发布的,那么就可以拯救这个平台。意义非凡。

大学最后一年,我们的课程使用了Visual Basic,但其实背后我们都在使用Delphi。实际上,我从未参加过任何微软认证课程,而且只学习了一些基本知识就考出了好成绩。那时,我已经在用Delphi编写COM组件,远远超出了课程范围。

我至今仍记得有一天老师将课程放在一边,单独给我们讲起了Delphi。他是一位充满热情的开发人员,将Delphi的包装盒放在我们面前时,他几乎无法抑制自己的激动心情。我们睁大了眼睛,张着嘴,津津有味地听着有关这个奇妙的新系统的所有知识。充满热情的思想涌现出了很多新想法。那真是一个奇迹。

大学毕业后,我曾有机会从事教师的工作,但我拒绝了。除了Delphi之外,什么都不教的想法感觉像是倒退了一步。

Delphi教育

在结束了大学的学习后,头几年里我一直在担任技术新闻记者,同时也在提高自己的开发技术。当再次回到大学学习时,Delphi已被列入了教学大纲。如今,年轻的开发人员常常在问为什么RAD Studio同时包含Delphi和C++ Builder,其实这种结合构成了传统软件工程学位的骨干。这种趋势一直持续到2002年,而且如今世界部分地区仍然如此。

这两种语言并排发展,而且共同拥有一段1970年代的辉煌历史。尽管许多开发人员错误地认为Object Pascal很老,C/ C++是现代编程语言,但实际上C与Pascal属于同一个时代。就像Delphi并非凭空发展一样,C也不是。而BrianKernigan和Dennis Richie的标准也是基于大型机行业已有(且经常相互冲突)的工具。

因此,作为编程语言,Pascal和C以及进一步的Object Pascal和C++都是并排发展起来的,尽管它们之间的正式间隔是三年。

值得庆幸的是,Embarcadero继续出色地完成了Delphi产品的最新功能。多年来,泛型、匿名方法、辅助类、属性等功能已发展成为该语言的一部分。在这些工作的推动下,我们看到了Delphi的市场采用非常稳定。无论是使用过其他语言的成熟开发人员,还是新手开发人员都能感受到Delphi的生产力和强大。

振奋人心的一件事是,Delphi和C++ Builder再次在教育领域大展手脚。在担任Embarcadero的SC期间,我帮助挪威的两所大学建立了社区版。此外,在苏格兰、意大利、葡萄牙、南美和俄罗斯的一些机构Delphi也在蓬勃发展。

挪威的老师都很激动,因为他们在Borland时代教过Delphi。就像一位教授款款而谈:“就像问候多年的老朋友一样。”

上个月Embarcadero宣布,土耳其将免费向其学生提供Delphi课程。估计有100万学生参加,这真是个好消息!对于学生而言,最重要的还是领悟可靠、现代和原型编程语言的优势。这些能让他们成长为更好的开发人员,就像我与数不尽的其他人一样。

软件工程原理

我不想离题太远,只想简单地说说原型编程语言。这是一个专属领域,除了Delphi和C++ Builder之外,该领域只有一个其他的编程语言(尽管Rust绝对应该位列其中)。

原型语言是体现计算基本原理的一种语言。这些原则不受产品和市场变化等因素的影响,因为它们代表了计算机的基础逻辑,有点像物理定律。在撰写本文之际,只有汇编语言、C/C ++和Object Pascal才是原型语言。而且汇编语言是其他一切语言的基础。

另一种语言称为乐观语言,这个名字源自数据库技术的术语(例如,乐观锁定模型)。虽然我不打算在本文中讨论为何一门语言被称为乐观,但总的来说,乐观描述的是一种语言对于现有基础结构的依赖性的大小(因此被称为乐观,其意思就是认为存在某些特定条件是理所当然的)。汇编、C和Pascal是编写操作系统或内核的语言。从根本上讲,它们对操作系统的依赖性不如Java或JavaScript那么强。

从低级编程到高级编程,再到高级面向对象,Delphi在广泛的领域都有出色的表现

有好几种操作系统都是用Pascal编写的。最有名的系统莫过于苹果经典的Macintosh操作系统,该操作系统跨68k和PPC处理器。尽管毫无疑问,C/C++是这类工作的主要语言,但事实上,苹果一直将Pascal作为核心语言,直到1996年史蒂夫·乔布斯回归(乔布斯从NeXT带来了Objective-C和Unix),这足以证明Pascal的强大和多功能性。自那时以来,Pascal的多功能性得到了极大的扩展。

我还想说说Ultibo,它是当今物联网设备上非常流行的嵌入式系统。该系统包含一个完全用Object Pascal编写的内核,以及构建现代嵌入式系统所需的所有基本组件。从USB堆栈到网络的所有功能全是用Object Pascal编写的。

虽然该系统使用的是受Delphi启发的开源编译器(FreePascal,过去曾被Delphi作为早期的移动支持),但是Ultibo的许多代码都源自Delphi社区。

坦白来讲,对于乐观一族的语言来说,这种工作是不可能的,或者至少是非常不切实际的。你需要一个能够覆盖从汇编语言到高级构造的所有东西,才能真正在这个级别上开展工作。你不能用JavaScript编写内核,因为它具有大量的依赖关系。

经过25年的发展,Delphi像以往一样强大且通用。关于Delphi的讨论有很多层次,本文到目前为止,我们只说到了一些皮毛。

感言

在生日祝酒之前,我要先讲几句。

Delphi就像我们的家庭成员一样,这么多年来,我把Delphi当成了血肉至亲,所以过去我曾无数次表示赞赏Delphi,而且我希望告诉别人Delphi仍然很重要的一些原因,也许如今Delphi比过去更重要。

如果想细数Delphi拥有和能够做到的一切,那么我可以滔滔不绝地说个没完没了。它的功能千千万,能够胜任的任务跨度非常大。Delphi带来的创新源泉永不枯竭,我无法仅在一篇文章中尽数讲清楚。

Delphi和C++ Builder涵盖的技术领域非常广泛,能够从各种环境中轻松访问文档至关重要

在过去的15年中,我全身心投入到了Object Pascal和Delphi。我写过博客,写过论文,在学校教过Pascal,并尽我所能让每一个人都了解Pascal。我甚至编写了自己的开发环境,以方便Object Pascal能够适应Node.js和HTML5等新平台,而且全部都是用Delphi编写的。

多年来,软件开发界已经接受了大量的折衷方案,现在整个行业的质量和可靠性损失已显而易见。这也是学术界渴望扭转这一趋势,并让Delphi重返高等教育的原因。

我可以直言不讳:这个世界不需要JavaScript开发人员。我们不需要其他C#程序员。从整体看来,软件开发需要的是更多的Delphi和C/C ++开发人员,因为质量的需求已经证实了我上面提到的那些基本原理。

那些曾受过Delphi和C++ Builder等经典软件工程教育的开发人员,如今可以开发定义规范的产品和公司。能够撼动整个IT行业的人并非毕业于Java,他们是Java的缔造者。真正核心的一切都是用原型语言缔造的。这是一个无可争议的事实。如果Linus Torvalds抱着Java不放,那么这个世界上就没有Linux了。忠言逆耳,这些话可能很刺耳,但都是大实话。

我们生活在一个很难用一种编程语言谋生的世界里。我并不是说你只需要选择一种编程语言。每种语言都有各自的用途,每个开发人员都应该从多方面充实自己。但是我必须强调以原型语言为基础的重要性。

这与我个人的喜好无关,我也不是狂热分子。我只是根据35年的开发经验总结出来的。我觉得至少我有这方面的积累,可以公开谈论这个话题。

如果你想成为一名普通的程序员,那么可以专门研究普通的编程语言。然而,如果你想成为杰出的开发人员,那么必须学习一种原型语言,而且在我个人看来,Delphi是最有效的。

如果你了解Delphi或C++ Builder,那么学习其他任何语言都易如反掌。因为在你学习Delphi时,就熟练掌握了那些基本原理。就冲着一点,你就比其他人都高一级。

Delphi的优点在于,你可以从各个级别使用它。没有人期望你编写内联汇编程序,或从头开始创建数据库引擎。自Turbo Pascal以来,Delphi的覆盖范围已非常广泛,且已经过了时间的考验,已发展成熟和完善。

因此,你可以按照自己的情况发展和学习语言。只要你充满好奇心,且愿意挑战自己,那么Delphi绝对值得一试。

此外,与其他语言不同,无论将来你投身何处,深入Delphi所获得的知识和见解都会终身受益。Delphi?它是哲学,它是逻辑,它是艺术;它教你思考和提炼出解决方案,而其他人只能看到重重障碍。

本文的核心思想总结起来就一句话:

软件工程学位不是目的地,而是聪明人一生的起点。

亲爱的Delphi,我的老朋友,祝你生日快乐!

原文:
https://community.idera.com/developer-tools/b/blog/posts/25-years-of-excellence

本文为 CSDN 翻译,转载请注明来源出处。

相关推荐

JPA实体类注解,看这篇就全会了

基本注解@Entity标注于实体类声明语句之前,指出该Java类为实体类,将映射到指定的数据库表。name(可选):实体名称。缺省为实体类的非限定名称。该名称用于引用查询中的实体。不与@Tab...

Dify教程02 - Dify+Deepseek零代码赋能,普通人也能开发AI应用

开始今天的教程之前,先解决昨天遇到的一个问题,docker安装Dify的时候有个报错,进入Dify面板的时候会出现“InternalServerError”的提示,log日志报错:S3_USE_A...

用离散标记重塑人体姿态:VQ-VAE实现关键点组合关系编码

在人体姿态估计领域,传统方法通常将关键点作为基本处理单元,这些关键点在人体骨架结构上代表关节位置(如肘部、膝盖和头部)的空间坐标。现有模型对这些关键点的预测主要采用两种范式:直接通过坐标回归或间接通过...

B 客户端流RPC (clientstream Client Stream)

客户端编写一系列消息并将其发送到服务器,同样使用提供的流。一旦客户端写完消息,它就等待服务器读取消息并返回响应gRPC再次保证了单个RPC调用中的消息排序在客户端流RPC模式中,客户端会发送多个请...

我的模型我做主02——训练自己的大模型:简易入门指南

模型训练往往需要较高的配置,为了满足友友们的好奇心,这里我们不要内存,不要gpu,用最简单的方式,让大家感受一下什么是模型训练。基于你的硬件配置,我们可以设计一个完全在CPU上运行的简易模型训练方案。...

开源项目MessageNest打造个性化消息推送平台多种通知方式

今天介绍一个开源项目,MessageNest-可以打造个性化消息推送平台,整合邮件、钉钉、企业微信等多种通知方式。定制你的消息,让通知方式更灵活多样。开源地址:https://github.c...

使用投机规则API加快页面加载速度

当今的网络用户要求快速导航,从一个页面移动到另一个页面时应尽量减少延迟。投机规则应用程序接口(SpeculationRulesAPI)的出现改变了网络应用程序接口(WebAPI)领域的游戏规则。...

JSONP安全攻防技术

关于JSONPJSONP全称是JSONwithPadding,是基于JSON格式的为解决跨域请求资源而产生的解决方案。它的基本原理是利用HTML的元素标签,远程调用JSON文件来实现数据传递。如果...

大数据Doris(六):编译 Doris遇到的问题

编译Doris遇到的问题一、js_generator.cc:(.text+0xfc3c):undefinedreferenceto`well_known_types_js’查找Doris...

网页内嵌PDF获取的办法

最近女王大人为了通过某认证考试,交了2000RMB,官方居然没有给线下教材资料,直接给的是在线教材,教材是PDF的但是是内嵌在网页内,可惜却没有给具体的PDF地址,无法下载,看到女王大人一点点的截图保...

印度女孩被邻居家客人性骚扰,父亲上门警告,反被围殴致死

微信的规则进行了调整希望大家看完故事多点“在看”,喜欢的话也点个分享和赞这样事儿君的推送才能继续出现在你的订阅列表里才能继续跟大家分享每个开怀大笑或拍案惊奇的好故事啦~话说只要稍微关注新闻的人,应该...

下周重要财经数据日程一览 (1229-0103)

下周焦点全球制造业PMI美国消费者信心指数美国首申失业救济人数值得注意的是,下周一希腊还将举行第三轮总统选举需要谷歌日历同步及部分智能手机(安卓,iPhone)同步日历功能的朋友请点击此链接,数据公布...

PyTorch 深度学习实战(38):注意力机制全面解析

在上一篇文章中,我们探讨了分布式训练实战。本文将深入解析注意力机制的完整发展历程,从最初的Seq2Seq模型到革命性的Transformer架构。我们将使用PyTorch实现2个关键阶段的注意力机制变...

聊聊Spring AI的EmbeddingModel

序本文主要研究一下SpringAI的EmbeddingModelEmbeddingModelspring-ai-core/src/main/java/org/springframework/ai/e...

前端分享-少年了解过iframe么

iframe就像是HTML的「内嵌画布」,允许在页面中加载独立网页,如同在画布上叠加另一幅动态画卷。核心特性包括:独立上下文:每个iframe都拥有独立的DOM/CSS/JS环境(类似浏...