Delphi 26 岁

诞生于1995年的 Delphi 现在已经 26 岁了。1995年2月14日,Borland 公司推出了面向开发者的新工具——Delphi,旨在接替 DOS 时代盛行一时的 Turbo Pascal。

说到这两款产品必然离不开它们的灵魂人物——Anders Hejlsberg,他编写了 Turbo Pascal 第一个版本的编译器,加入 Borland 后继续开发 Turbo Pascal,并带领小组设计了 Turbo Pascal 的继任产品 Delphi。Anders Hejlsberg 还担任了 Turbo Pascal 所有版本与 Delphi 前 3 个大版本的架构师。

Delphi 26 岁

 

▲ 左为 Anders Hejlsberg(另外两位也是大牛,猜猜是谁 )

为庆祝 Delphi 诞生 26 周年,Delphi 产品经理 Marco Cantu 发表了一篇回顾 Delphi 的文章,文章选取了 13 组图片,每组图片包含 26 年前和现在的对比。

1. Windows in 1995

Delphi 于1995年发布时,最常用的 PC 操作系统是 Windows 3.1(以及支持网络的 Windows 3.11),下面是在虚拟机运行 Windows 3.1 的截图。

Delphi 26 岁

 

2. Windows in 2021

下图是 Windows 10,也是 Marco Cantu 主力使用的桌面 PC 当前安装的版本。可以看到,无论是系统界面,还是计算机的硬件功能都发生了巨大变化。

Delphi 26 岁

 

3. Delphi 1 界面外观

26年前发布的初代 Delphi IDE 用户界面。

Delphi 26 岁

 

4. Delphi 10.4.1 IDE

今天的 Delphi 用户界面(使用了怀旧风格的样式)。

Delphi 26 岁

 

5. 互联网起步阶段

互联网刚刚兴起的时候,最受 Delphi 开发者欢迎的论坛是 Compuserve,当然这是“资深”程序员才会感同身受的体验。

Delphi 26 岁

 

6. 互联网现在无处不在

下面这些数据足以看出我们对互联网和网络的依赖,数据来自 https://www.internetlivestats.com/。

Delphi 26 岁

 

7. 手机打来的电话还有很多

Marco Cantu 表示自己在1995年的时候好像还没有手机。当时的手机长这样(爱立信 GH688):

Delphi 26 岁

 

8. 现在智能手机比我们拥有的计算机功能更强大

现代人缺少手机几乎不能生活,目前的手机大多数都是多核电脑,内存比当年的 PC 还大,而且它们可以运行 Delphi 应用程序。

Delphi 26 岁

 

9. Delphi 1 的窗口是一个 TForm

早期的时候,Delphi TForm(和其他 TWinControl 类一样)封装了来自 user.dll 的 Windows 句柄,表单操作调用 Windows API 并触发系统消息。Delphi 是可视化的(见下图),但具有核心的 OOP 结构——应用程序表单继承自基础 TForm 类。

Delphi 26 岁

 

10. 窗口仍然是 TForm(或者 VCL + FMX)

如今,表单仍然是应用程序的基础,无论是 VCL(见下面最开始的基类定义)还是 FireMonkey,在这种情况下,表单都映射到 Windows、macOS、iOS、Android 或 Linux 的 UI 元素。

Delphi 26 岁

 

11. 电子游戏起步阶段

1995年,电子游戏处于起步阶段。

Delphi 26 岁

 

12. 现在电子和在线游戏拥有巨大的市场

下图是一款用 Delphi 编写的手机游戏。

详情查看此博客:https://blogs.embarcadero.com/fun-ranch-mobile-game-is-developed-with-delphi/

Delphi 26 岁

 

13. 在 Delphi 1 中编写计数到 26 的程序

下面是可以在1995年编写的用于在 Delphi 中对数字进行计数的代码,以及由此产生的简单应用程序。

Delphi 26 岁

 

14. 与现在用 Delphi 编写同样的程序并无二致

现在可以用 VCL 或 FireMonkey 编写和编译相同的代码,但也可以利用 Delphi 语言的新特性来编写,如下图所示。

Delphi 26 岁

 

15. 曾经使用的数据库是 Paradox, DBase, Clipper, FoxPro

Delphi 曾因其与数据库具备通信功能而被人熟知 (Oracle + Delphi),它有一个向导,可以轻易地创建数据库应用程序。

Delphi 26 岁

 

16. 现在的数据是 Oracle, SQL Server, Azure, AWS, REST API……

现在可以使用 FireDAC 和许多其他库来访问 Delphi 中的数据,但是数据不再仅存在于数据库中。查看通过 Delphi 的 REST Debugger 获取 rest API 数据的博客。

Delphi 26 岁

 

17. Marco Cantu 在1995年拍摄的照片(Delphi 发布后几天)

Delphi 26 岁

 

18. Marco Cantu 一个月前拍摄的照片

Delphi 26 岁

 

19. RAD 是一场革命

Delphi 提供了(现在仍提供)快速可视化设计(如之前的 VB)和强大的 OOP 框架的独特组合,从而允许在同一环境中以无缝的方式调用和编写组件。下面是早期的广告:

Delphi 26 岁

 

20. Delphi 依旧提升开发效率

尽管诞生了许多其他的编程风格,开发者仍可在 Delphi 中使用任何高级模式(MVVM、IoC 等),Delphi 继续提升开发者的生产力。

Delphi 26 岁

 

21. 26年前技术书籍非常重要,因为开发者无法通过 Google 搜索课程名称或在 Stack Overflow 上进行查找

下面是早期的 Delphi 技术书籍:

Delphi 26 岁

 

22. 现在技术书籍仍然十分重要,无论是电子书或是纸质书

技术类书籍的市场小了很多,也跟之前大有不同,不过书籍仍在印刷。

Delphi 26 岁

 

23. VCL 是 WinAPI 最优秀的库

当时没有其他类库与 Windows API 很好地集成,微软的 MFC 和 WinForms 也从未达到 VCL 的质量和完整性。下面是 VCL 库的层次结构。

Delphi 26 岁

 

24. VCL 是 WinAPI, COM integration, WinRT 以及即将到来的 Project Reunion 最优秀的库

VCL 库不断扩展,截至目前封装了 Windows APIs、COM 和 shell 对象、以及 WinRT platform API。开发团队也一直在添加新的组件并映射到新的 API。VCL 已经拥抱微软 Project Reunion,未来将会提供更加丰富的功能。下面是 VCL 风格的应用程序。

Delphi 26 岁

 

25. 26年前的 Delphi 使用起来很有趣

对于开发者来说,Delphi 具有很多使用乐趣,让人乐于其中。下面是 Delphi 架构师 Anders Hejlsberg 在 Delphi1 埋下的复活节彩蛋。

Delphi 26 岁

 

26. 现在 Delphi 使用起来仍然很有趣

今天的 Delphi 也仍然很有趣,它拥有有一个活跃的社区,以及许多才华横溢的 MVP。上一个版本的 Delphi 也埋了一个彩蛋来庆祝 25 周年纪念。

Delphi 26 岁

 

最后回顾一下 Delphi 的历史:

Delphi 26 岁

 

 

Delphi 深度编程及其项目应用开发》 作 者: 李存斌 汪兵 编著 丛书名: 万水软件项目应用与实例开发丛书 出版社: 中国水利水电出版社 出 版: 2002-9----------简 介 本书是在总结作者多年Delphi开发经验的基础上编著而成。 全书分为基础篇和应用篇。基础篇结合示例论述了Delphi的深度编程技术,其中包括9章,分别为:理解Windows消息、进程与线程、自定义组件的编写、文件操作、创建DLL应用程序、两层数据库应用程序、多层数据库应用程序、Socket编程、串口编程;应用篇结合物资管理信息系统项目应用开发技术和经验,详细阐述了一般管理信息系统软件通用模块的开发,其中包括10章,分别为:物资管理信息系统概述及其总体框架设计、物资管理信息系统后台数据库设计、应用服务器的实现、客户端应用程序的设计、动态连接应用服务器的实现、通用权限管理模块的设计、通用查询组件和报表模块的制作、通用基础数据维护模块的设计、物资管理信息系统业务操作模块的设计、综合查询模块的设计。读者在具有一定Delphi知识的基础上,通过本书的学习,可快速提高Delphi的编程能力和实际开发水平。 本书适用于具有初步编程能力的读者,也可作为高校高年级学生毕业设计的指导书。中国水利水电出版社网站(www.waterpub.com.cn)上包括了书中示例和较为完整的物资管理信息系统的源代码文件,为读者的学习提供方便,同时也为相关软件开发人员的实际应用开发提供捷径和参考。 ----------目 录 丛书前言 前言 基础篇:Delphi深度编程技术 第1章 理解Windows消息 1.1 消息概述 1.2 Windows消息工作机理 1.3 Delphi的VCL消息系统处理原理 1.4 发送消息 1.4.1 Perform() 1.4.2 SendMessage()和PostNessage() 1.4.3 消息的发送 1.5 消息处理 1.6 消息过滤 第2章 进程与线程 2.1 进程与线程 2.1.1 进程概述 2.1.2 进程的直接创建 2.1.3 列举系统打开的进程 2.1.4 线程概述 2.2 进程间通讯(IPC) 2.2.1 利用WM_COPYDATA消息实现进程间通讯 2.2.2 利用内存映射文件实现进程间通讯 2.3 TThread对象 2.3.1 线程的创建 2.3.2 线程的挂起和恢复 2.3.3 线程的终止 2.3.4 与VCL同步 2.4 线程同步 2.4.1 临界区(CriticalSection) 2.4.2 互斥(Mutex) 2.4.3 信号量(Semaphore) 2.5 进程的优先级别 2.5.1 进程的优先级类 2.5.2 相对优先级 2.6 后台多线程数据查询实例 第3章 自定义组件的编写 3.1 组件的基本概念 3.1.1 属性 3.1.2 方法 3.1.3 事件 3.1.4 拥有关系 3.1.5 父子关系 3.2 组件创建实例 3.3 组件的高级技术--属性编辑器和组件编辑器 3.3.1 组件的属性编辑器 3.3.2 组件的组件编辑器 3.3.3 带有属性编辑器和组件编辑器的自定义组件实例 3.4 创建对话框组件 第4章 文件操作 4.1 文件的基本操作 4.1.1 文本文件 4.1.2 有类型文件 4.1.3 INI文件 4.1.4 无类型文件 4.1.5 文件的复制 4.2 内存映射文件 4.2.1 内存映射文件的应甩 4.2.2 映射文件的使用 4.3 内存映射文件的应用 第5章 创建DLL应用程序 5.1 DLL概述 5.2 DLL的创建 5.2.1 DLL项目文件 5.2.2 Exports关键字的使用 5.2.3 DLL中的变量 5.2.4 DLL实例:动态DLL中的窗体 5.3 DLL的调用 5.3.1 静态调用 5.3.2 动态调用 5.4 DLL的入口函数和出口函数 5.4.1 进程/线程的初始化和例程的终止 5.4.2 DLL入口/出口示例 5.5 利用DLL创建插件程序 5.5.1 插件程序的设计思想 5.5.2 插件应用程序的创建 5.5.3 创建调用插件程序的主程序 第6章 两层数据库应用程序 6.1 关系型数据库 6.1.1 关系型数据库概述 6.1.2 结构化查询语言(SQL) 6.2 数据库的连接 6.2.1 基于BDE的数据库连接 6.2.2 基于0DBC的数据库连接 6.2.3 基于AD0的数据库连接技术 6.3 TSession元件 6.4 1 DahBase组件 6.4.1 TDataBase组件的使用 6.4.2 用配置文件动态设置BDE 6.5 数据访问组件 6.5.1 TTable组件 6.5.2 TQuery组件 6.5.3 TStoredProc过程 6.6 数据感知组件 6.7 事务 第7章 多层数据库应用程序 7.1 一个简单的多层应用系统 7.1.1 服务器端应用程序的建立 7.1.2 客户端应用程序的建立 7.2 多层应用系统处理数据的原理 7.2.1 多层应用系统的结构 7.2.2 存取数据的运作原理 7.2.3 更新数据的运作原理 7.3 容错处理和负载平衡 7.4 Active Form 第8章 Socket编程 8.1 WinSock基础 8.1.1 TCP、UDP和IP协议 8.1.2 套接字(Socket) 8.1.3 客户/服务器模式 8.1.4 面向连接的协议套接字的调用 8.1.5 面向无连接协议的套接字的调用 8.2 利用Winsock API实现Socket编程 8.2.1 常用WinSockAPI函数 8.2.2 利用WinSockAPI实现Socket编程 8.3 利用组件实现Socket编程 8.3.1 TClientSocket组件 8.3.2 TServerSocket组件 8.3.3 远程抓屏示例 8.4 通讯中间件的制作 8.4.1 磁盘队列的实现 8.4.2 客户端和服务器端发送接收磁盘队列数据的套接字的建立 8.4.3 中间件的简单应用 第9章 串口编程 9.1 串口通信的基础知识 9.1.1 同步通信和异步通信 9.1.2 波特率和数据传输率 9.2 串口通信API 9.2.1 DCB数据结构 9.2.2 与串口通信相关的函数 9.3 利用API函数创建串口通信示例 9.3.1 发送数据部分设计(向串口写数据) 9.3.2 数据部分设计(从串口读数据) 9.3.3 程序的具体设计和实现 9.4 利用SPC0MM组件实现串口通信编程 9.4.1 SPCOMM组件的安装 9.4.2 SPCOMM组件的属性、方法和事件 9.4.3 利用SPCOMM通讯组件实现串口通讯的实例 应用篇:物资管理信息系统项目应用开发10章 物资管理信息系统概述及其总体框架设计 10.1 系统总体结构设计 10.2 物资管理信息系统需求定义和业务流程图 10.2.1 仓储管理 10.2.2 计划管理 10.2.3 合同管理 10.2.4 物资管理系统的业务流程 第11章 物资管理信息系统后台数据库设计 11.1 关系型数据库概述 11.1.1 关系型数据库 11.1.2 物资管理信息系统数据库的建立 11.2 物资管理信息系统数据结构的设计 11.2.1 权限管理数据结构的设计 11.2.2 仓储管理数据结构的设计 11.2.3 计划管理数据结构的设计 11.2.4 合同管理数据结构的设计 11.2.5 基础设置数据结构的设计 第12章 应用服务器的实现 12.1 创建应用服务器的实例 12.2 状态区编程 12.3 动态数据库的连接 12.4 远程数据模块的建立 第13章 客户端应用程序的设计 13.1 客户端应用程序系统流程和系统功能 13.1.1 系统流程 13.1.2 系统功能 13.2 构建客户端应用程序框架 第14章 动态连接应用服务器的实现 第15章 通用权限管理模块的设计 15.1 系统登录的设计 15.2 权限设计表中数据的维护 第16章 通用查询和报表组件的制作 16.1 通用查询组件的创建 16.2 通用报表模块的制作 第17章 通用基础数据维护模块的设计 17.1 界面设计 17.2 代码实现 17.2.1 以目录树的格式显示部门档案数据 17.2.2 利用目录树导航数据 17.2.3 利用目录树操作数据 17.2.4 按表格的标题排序 17.2.5 打印部门档案 第18章 物资管理信息系统业务操作模块的设计 18.1 数据表的设置 18.2 收料单据主表显示区 18.3 具体的材料明细表显示区 18.4 数据操作区 第19章 综台查询模块的设计 19.1 数据源的设置 19.2 窗体样式设计 19.3 代码实现 19.3.1 查询数据 19.3.2 打印数据 19.3.3 全部浏览----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值