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 个大版本的架构师。

▲ 左为 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 的截图。

2. Windows in 2021

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

3. Delphi 1 界面外观

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

4. Delphi 10.4.1 IDE

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

5. 互联网起步阶段

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

6. 互联网现在无处不在

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

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

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

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

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

9. Delphi 1 的窗口是一个 TForm

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

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

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

11. 电子游戏起步阶段

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

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

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

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

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

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

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

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

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

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

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

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

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

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

19. RAD 是一场革命

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

20. Delphi 依旧提升开发效率

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

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

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

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

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

23. VCL 是 WinAPI 最优秀的库

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

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

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

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

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

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

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

最后回顾一下 Delphi 的历史:

觉得不错,请点个在看呀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

row number函数_Hive排名函数ROW_NUMBER,RANK 和 DENSE_RANK的区别

需求描述:分析最近三个月每天排名前30的邮箱收件数量。涉及到的表字段:发件时间,收件人。一、ROW_NUMBER表t查询出了3月每天不同类型邮箱收件量的降序排名,表t1通过ROW_NUMBER函数给每行数据添加序列号,select ROW_NUM…

在U盘上安装linux

所谓在U盘上安装Linux,就是在U盘上放置一些文件,可以让电脑从U 盘启动linux(需要电脑支持从U盘启动)。这篇教程简单说一下怎么在U盘上安装DSL。主要是这个发行版小,50M左右,而且包含了该有的很多软件。前提…

java中的console是干什么的_[Java教程]javascript中,你真的会用console吗?

[Java教程]javascript中,你真的会用console吗?0 2015-08-11 17:00:09使用console进行性能测试和计算代码运行时间对于前端开发人员,在开发过程中经常需要监控某些表达式或变量的值,如果使用用debugger会显得过于笨重,最…

边缘计算k8s集群之SuperEdge

什么是边缘计算边缘计算,是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务、应用智能、安…

python中getrandbits函数用法_python random - 刘江的python教程

random阅读: 8288评论:1random模块用于生成伪随机数。真正意义上的随机数(或者随机事件)是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的。而计算机中的随机数是所谓的随机函数按照一定算法模拟产生的,其结果是确定的&#xff…

让你的系统移动起来

最近一直在捣鼓linux系统,听一大哥说想搞好它,最简单的方法就是经常用,用的久了也就自然简单了。。就跟我们用windows一样。。在linux系统里,我最喜欢的是Ubuntu。。个人感觉它做的还不错,有丰富的三方软件支持&#x…

java一个界面用另一个界面的值_如何将参数/值从一个弹出窗口传递到Angular2中的另一个弹出窗口...

我在Angular2中有一个要求,我需要打开第一个弹出窗口,用户会输入一些值 . 在某些用户事件(即按钮单击)上,我需要关闭该弹出窗口并打开另一个弹出窗口,其中包含用户在第一个弹出窗口中输入的值 .我创建了一个plunker,我…

简约而不简单的 Django 新手图文教程

来源:cizixssegmentfault.com/a/1190000008387882本文面向:有python基础,刚接触web框架的初学者。环境:windows7,python3.5.1,pycharm专业版,Django 1.10版,pip3一、Django简介百度百…

通俗系列之同步、异步、阻塞和非阻塞

前言在日常的开发中,经常出现同步、异步、阻塞和非阻塞等概念。有些人搞不清楚什么代码是同步,什么代码是异步。有些人说我用异步了啊,为什么效率还是没提高呢?也许你是用异步了,但是可能是异步阻塞了。有些人一听说异…

python的matplotlib库内的函数_如何在matplotlib中找到函数下面的区域?

我是python和matplotlib库的新手,我试图在绘图中得到函数行下方的区域。我有一个变量a&b,它在我的绘图中移动一个矩形。我也许可以使用原始数学来解决这个问题,但我想知道是否有一种更简单的方法来实现我正在尝试使用matp…

局域网一点通之组网、管网、用网1000问

(51cto.com)局域网一点通之组网、管网、用网1000问转载于:https://blog.51cto.com/laowu2517/241359

【直观详解】支持向量机SVM

【阅读时间】13min - 19min【内容简介】详解解读什么是支持向量机,如何解支持向量以及涉及的拉普拉斯乘子法,还有核方法的解读。1什么是支持向量机-SVM支持向量机-SVM(Support Vector Machine)从本质来说是一种:用一条线(方程&…

C# 打印PDF文档的10种方法

操作PDF文档时,打印是常见的需求之一。针对不同的打印需求,可分多种情况来进行,如设置静默打印、指定打印页码范围和打印纸张大小、双面打印、黑白打印等等。经过测试,下面将对常见的几种PDF打印需求做一些归纳总结,这…

遗传算法经典实例代码_经典算法研究系列 之 深入浅出遗传算法

关注数学,关注AI,关注我们公众号ID:Math-AI经典算法研究系列遗传算法1初探遗传算法Ok,先看维基百科对遗传算法所给的解释:遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是…

java buffalo_随你怎么玩!Buffalo 网络硬盘新潮流

现代时尚的办公环境是怎样的?ADSL、无线网络、笔记本、还有咖啡,惬意地被沙发包裹起来,自由自在地网上冲浪……;当然仅仅有这些还是不够,我们需要视频会议、需要网络下载、甚至打印、扫描,还有需要随时随地…

关于Virtual-Hosting的理解

最近在Apache上架设Virtual-hosts 时,发现启动了httpd-vhost.conf 之后,再用IP 访问Main Server(httpd.conf)的设置就失效了。比如说原来 在 htdocs/下有一些应用程序,就不能够再访问到。用IP所有的请求就被转发到了&…

.NET gRPC核心功能初体验

gRPC是高性能的RPC框架, 有效地用于服务通信(不管是数据中心内部还是跨数据中心)。由Google开源,目前是一个Cloud Native Computing Foundation(CNCF)孵化项目。其功能包括:•双向流•强大的二进制序列化•可插拔的身份…

为什么我怎么也理解不了波粒二象性,是因为智商不够吗?

大家好,各位观众。如果你们之前不能完全理解波粒二象性(现象本身,或者这个概念的内涵和外延)。不用担心,我认为十有八九不是智商问题:量子物理的内容有太多“反常识”了。很多时候,是我们的脑袋…

python反射、闭包、装饰器_python之闭包、装饰器、生成器、反射

1. 函数的作用域1.在函数定义时候就固定,与调用位置无关,在调用的时候返回到函数定义的位置x1 #全局作用def f1(): #整个f1函数是定义阶段deff2():print(x)returnf2deffoo(func):x3func()#func()调用阶段x200 #这样定义x又变成全局了foo(f1()) #执行foo(…

设备间的连线图例

转载于:https://blog.51cto.com/51fashion/243017