尼克劳斯·沃斯奖 (Niklaus Wirth Award) Pascal最具价值贡献者奖Marco Cantú获奖感言:关于Pascal和Delphi历史的个人观点

这是一篇很长的博客文章,其中包含我在萨拉曼卡国际Pascal帕斯卡大会上发表的演讲。这是一部Pascal的历史,但是是从非常个人的角度来看的。


在开始演讲之前,我要感谢国际Pascal大会的组织者,特别是塞尔吉奥,他们为举办这次活动付出了巨大的努力。我还要感谢评审团决定授予我这个非常重要的奖项

正如我所写,“我非常高兴成为 Niklaus Wirth 奖的获得者,因为我对 Niklaus Wirth 博士怀有极大的敬意,并且考虑到我对 Pascal 语言和 Pascal 开发者社区的参与超过30年。

作为一名书籍作者、会议演讲者以及最近最著名的基于 Pascal 的编译器和 IDE之一 Delphi 的产品经理,我很感谢我的工作得到认可。我认为这不仅是对我个人工作的认可,也是对多年来与我参与和共事的许多人工作的认可,我要感谢那些对 Pascal 和 Delphi 充满热情的人。”

就这次获奖感言而言,我选择的标题是“Pascal和Delphi历史的个人看法”。我所说的“个人观点”是指我的生活受到了怎样的影响,并为塑造整个 Object Pascal 社区的现状做出了一些贡献。

换句话说,我计划回顾 Pascal 语言和工具的历史,同时回顾我的使用经验。最后,我将添加一些关于该语言及其生态系统的想法。

免责声明:本文档中的一些历史事实是根据我个人的记忆描述的,考虑到已经过去了多少年,我的记忆可能有误。在某些情况下,为了不涉及太多细节,我可以选择不符合事实的自由。最后,这里的一切都是我自己的观点,而不是我工作的 Embarcadero 公司的观点。

1970 年,当 Nicklaus Wirth 博士正式引入 Pascal 语言时,我还只是个孩子,还没有接触过计算机。因为个人电脑还不存在,而电话仍然有墙上的插头。

 

此文件根据知识 共享署名-相同方式共享 2.5 通用许可证获得许可  。

我的第一个 Pascal 编译器是 ZX Spectrum 上的 UCSD Pascal。对于观众中的年轻人来说,ZX Spectrum 是一款基于 Z80 处理器的计算机,具有 64K 内存(但只有 48K 可用 RAM,低 16K 被映射到 ROM)。

 

该文件根据Creative Commons  Attribution-Share Alike 4.0 International许可证获得许可  。

UCSD Pascal 是一个解释器(基于“pcode”)——您知道早期的 Pascal 语言工具主要是解释器,而不是编译器,并且基于与 Java JVM 没有太大区别的体系结构。您可以编写的程序仍然比嵌入式 BASIC 语言快得多,即使不如使用 Z80 汇编代码快。

我和我这一代的许多人都是这样开始的。编写代码(或从杂志列表中复制代码)以在小型计算机上运行,​​该计算机具有良好的图形和不错的 CPU(当然,在当时还不错)。

 

当我开始上大学时,Pascal 被认为是学习编程的主要语言——可惜现在不再是这样了,因为它是一种很棒的学习语言(稍后会详细介绍)。我使用的参考书并不是 Wirth 的语言手册《Pascal 用户手册和报告》,而是他 1976 年的基石和成功著作《算法 + 数据结构 = 程序(自动计算中的 Prentice-Hall 系列)》(https:// en.wikipedia.org/wiki/Algorithms_%2B_Data_Structures_%3D_Programs)。正如维基百科所写,“这本书是当时最具影响力的计算机科学书籍之一,与沃斯的其他作品一样,被广泛应用于教育领域”

当时,计算机和 Pascal 语言周围还发生了一些其他事情。我指的是80年代初期和中期。这是个人电脑革命的开始。IBM 发布了他们的第一台 PC,并且 PC 克隆版开始出现。 

作者:Federigo Federighi - 自己的作品,CC BY-SA 4.0

我很幸运拥有一台好利获得 M24。我拥有的机器有 2 个软盘驱动器(“软盘”驱动器),后来我才将其升级为硬盘驱动器。20MB,如果我没记错的话。这是一台有趣的计算机,具有比 IBM 更快的 CPU,好利获得当时是一家伟大的意大利公司,以现代化的组织运营,并为员工提供硅谷风格的福利(但那是另一回事了)。

我提到 M24 的原因是我能够用它来运行 Turbo Pascal。我认为这是第 3 版,可能是 IDE 最成功的版本。让我花一些时间在 Turbo Pascal 上,因为我认为我们这些观众都应该感谢它,不仅仅是 Pascal 人,还有整个开发者社区。再次,很抱歉描述了一个对许多人来说众所周知的故事,但我认为年轻观众能够更好地了解当时发生的事情是件好事。

由 Digital Research, Inc. - http://www.hampa.ch/pce/screenshots/index.html,公共领域

在早期,硬件供应商也会设计操作系统并为开发人员提供工具。这就是苹果公司所做的事情,以及后来消失的其他供应商曾经做过的事情。唯一开放的选择是 CP/M 操作系统,由 Gary Kildall 的公司 Digital Research 开发。IBM 的做法有所不同,因为他们的公司太大了,每一个部件都需要花费太多时间来创建。因此,他们决定对软件(包括操作系统和编程工具)进行许可。微软本应只提供第二个,由数字研究公司提供操作系统。他们最终加入了 MS DOS,几乎免费将其提供给 IBM,以挽救整个项目。这是一个很好的故事,但对于今天来说有点太离题了,这个故事讲述了数字研究(或星际数字研究)如何错过了历史的约会。

 

作者:Rama 和 Muse'e Bolo - 文件:IBM_PC-IMG_7271.jpg,CC BY-SA 2.0 fr

回到IBM PC。它使用 Microsoft 的编程语言:BASIC C 和 Pascal 推出。真的吗?是的,Pascal。

与此同时,一位在苏黎世理工学院学习数学(也学习音乐)的法国企业家发现丹麦有人为 CP/M 计算机编写了一个非常快的 Pascal 编译器,称为“Compas Pascal”(尽管不同版本有不同的版本)名称)为一家名为 PolyData 的公司。他们主要将其出售给该地区的人们。我曾经和一位开发人员交谈过,他骑自行车到安德家里去获取一份带有修复程序的副本。

 

因此,这位美国法国人向丹麦开发商及其公司提供了一项许可协议。我会转售你的 Pascal 编译器。现在,这位美国法国人没有钱了,于是他与《Byte》(当时最著名的计算机杂志)讨价还价,按照要求在不预先付款的情况下投放广告。他打算用广告带来的销售额来支付这笔费用。不仅如此,这位美国法国人决定以 49.99 美元的价格出售该编译器,而所有其他类似工具的价格都远远超过 300 美元,原始许可产品也是如此。丹麦开发商发现了这一点,并考虑到他获得了特许权使用费,他认为这确实是一个愚蠢的想法。

当 Turbo Pascal 广告在 Byte 上展示时,Turbo Pascal 立刻引起了轰动。Borland 的创始人 Philippe Kahn 的钱远多于支付广告费用。Anders Hejisberg 从丹麦搬到了加利福尼亚州的斯科茨谷,全职开发该产品。正如海吉斯伯格所写,“剩下的就是历史了”。

现在您可能想知道,Microsoft Pascal,这是怎么回事?它因 Turbo Pascal 的成功而黯然失色,后来退役了。Microsoft Pascal 是一种昂贵的编译器。后来他们提供了 Quick Pascal 来对抗 Turbo Pascal,但他们最终也淘汰了该版本。不是出于语言本身的技术原因,只是出于市场原因。当时许多开发人员使用 Pascal,但不使用 Microsoft 工具。

 

Turbo Pascal 的优点是什么?当然,语言我们都喜欢。但它是有史以来第一个集成开发环境之一。那时,您会使用编辑器来键入代码。保存到文件。运行命令行编译器。适当注意输出中的错误行。打开编辑器并移至该行。节省。再次编译。你知道,如果这是 MS DOS,你可以一次运行一个程序。现在程序终于编译完成,您可以运行调试器了。另一个单独的工具。能够使用单一工具来编写代码、编译和调试,而无需使用该工具,这不仅仅是一个好主意。这节省了大量时间。

您可能会想,好吧,很有趣,但为什么他要花这么多时间讨论 Turbo Pascal 这个已有 40 年历史的软件呢?嗯,正是因为这个原因。Turbo Pascal 40 周年纪念日将于今年晚些时候到来,因为该产品于 1983 年首次亮相!

Turbo Pascal 还有其他特点。其快速性能归因于许多因素。它的很多代码都是汇编代码。但它是单遍编译器这一事实也有很大帮助。单遍编译器在您可以启用的语法方面存在限制。但它们速度很快。当今的一些编译器仍然是单遍编译器。Delphi 11 Alexandria 就是其中之一。顺便说一句,如果您在命令行调用 DCC,您可以看到版本号。Delphi编译器的版本是35,可以追溯到Turbo Pascal。

 

Turbo Pascal 出售时带有“无意义的纸质许可证”。它是通过邮购直接出售的。Borland 在头两年销售了大约 250,000 份 Turbo Pascal 拷贝,对于 20 世纪 80 年代初的软件开发人员工具来说,这是一个惊人的数字。Borland 继续创建了 Sidekick,这是第一个用于 DOS 的“终止并驻留程序 (TSR)”程序,以及其他开发工具,但这不是我想在这里介绍的内容。

让我首先回到尼克劳斯·沃斯。他并没有保持静止。在 Pascal 语言在大学和商业领域取得成功后,他继续设计了 Modula-2。Module-2 的许多想法都出现在早期的 Turbo Pascal 版本中。这就是单元unit概念的由来。

在语言方面,还有Modula-2+和Modula-3。最后一个在核心语言中添加了面向对象的功能,它是由包括 Olivetti 在内的行业研究实验室设计的。奇怪的是,当我大学毕业时,我在 Olivetti 公司做了一个舞台表演,并接触到了 Modula-3 研究。但我有点超前了。

 

合理使用

让我们回到我自己身上,我在 Olivetti M24 上使用 Turbo Pascal 3,并在后续计算机和不同版本上继续使用该语言。在大学时,Pascal 是我的第一种编程语言,(如果我记得的话)我的第一个项目是构建一个图形分析应用程序来计算跨多个点的最短路径。然而,在大学里,我最终选择了其他编程语言。我在操作系统课程中学习了 C。在高级计算机科学课程中,我接触到了编程的其他新趋势。随着 Smalltalk 的出现,OOP 还处于起步阶段。LISP 的函数式编程非常重要。逻辑编程以 Prolog 作为驱动语言(Borland Turbo Prolog,顺便说一句,并没有取得很大成功),

 

由 Amazon.com 列出该书,合理使用

其中,Smalltalk 是对我的职业生涯最有帮助的一个。我还研究了一点 Ada,不知道为什么——一种源于 Pascal 语法的语言,带有开始/结束等。我还学习了另一种相当晦涩的语言,Eiffel,它通过将类不变量、前置条件和后置条件变成该语言的显式特征(一个相当独特的案例)来首创软件契约。Eiffel源自Ada。是的,编程语言的世界在 80 年代末和 90 年代初有很大不同。

 

照片由作者提供,合理使用

无论如何,受所有这些新方向的影响,Pascal世界开始研究对象。Apple 使用“Object Pascal”这个名称来称呼他们的语言。Borland 有“Turbo Pascal with Objects”。这并不是一个巨大的成功,Turbo Pascal 的销量一直在下降。您现在可能知道了,但该代码仍然存在。您可以在 Delphi 中声明对象类型。我们收到错误报告和投诉,因为 Delphi 移动编译器中不存在该类型。

有趣的支线故事。Smalltalk 是一种不错的语言,但使用起来有点不切实际。它没有源代码的概念。您只需将消息或方法(也是对象)添加到运行时即可。对于当时的计算机来说,它非常重。一个小玩家创建了一个 Windows 版本,在架构上进行了重大优化,并发明了一个通过对象管理 Windows API 的类库。该语言被称为 Actor,该公司被称为“Whitewater Group”,其类库后来被 Borland 收购,成为 C++ 的对象 Windows 库 - 但我再次超越了自己。

 合理使用,原装封面

事实上,我在大学结束和职业生涯开始时最终关注的是新引入的 C++ 语言。起初找到编译器并不容易。在我的论文中,我使用了 C++ 到 C 的转换器,后来使用 C 编译器来构建最终代码。当然,无法进行任何调试。不久之后,Borland Turbo C++ 发布,随后 Microsoft Visual C++ 发布,这改变了这一切。

即使我专注于 C++,我的第一份带薪工作就是将一本 Turbo Pascal 书从英语翻译成意大利语。我从中学到了很多东西,无论是在 Pascal 语言和库方面,还是在写书的过程方面。

不久之后,我从 Windows API 开发权威指南最著名的作者 Charles Petzold 那里学习了用 C 语言“Petzold 风格”进行 Windows 编程。能够使用 C++ 和类库是一个巨大的好处。Borland 全面投入使用了一个复杂而广泛的类库,即我刚才提到的对象 Windows 库。Microsoft 决定采用非常薄的层,封装 API,而不利用对象结构或向其中添加太多内容。从技术上讲,它的能力要有限得多,而且明显较差。猜猜谁赢了?Visual C++ 和 MFC 仍然存在。还是很薄的一层。仍然不是可视化编程。

 作者照片

正如我提到的,我花了几年时间主要关注 Borland C++ 和 OWL,但也关注 Visual C++ 和 MFC。那时我开始参加 Borland 活动并举办会议。我写了三本关于 Borland C++ 和 OWL 的书。我做了培训和咨询工作,但主要是针对 MFC。直到 1984 年的一天,在圣何塞,我与 Turbo C++ 产品经理开会,讨论如何改进该库并使其更可用。我建议添加一个可视层,以便更轻松地构建 GUI。他把我推荐给了他的同事 Zack Urlocker,然后我就得到了第一个 Delphi 演示。顺便说一句,它现在还不叫Delphi。

市面上流传着不同的名字,从芥末(因为它很热)到VBK(因为它很辣)。已故的丹尼·索普 (Danny Thorpe) 建议将测试版名称之一命名为 Delphi,因为它是与 Oracle 对话的地方,因为它具有强大的数据库关联性。该公司计划使用 AppBuilder。该名称仍作为主 IDE 窗口名称出现在产品中。但由于它已经投入使用,他们最终选择了Delphi。回想起来,这真的是一个更好的名字。

无论如何,新产品令人瞠目结舌。它是 OOP 和组件的完美匹配(按照当时的标准,但按照今天的标准仍然相当不错)、视觉简单性和良好的 OOP 架构,并且在 Windows 的清晰映射和封装方面与 OWL 相比取得了巨大进步API和平台消息系统。这不仅仅是对 VB 的应答。这看起来像是一场巨大的革命。在 1995 年 2 月发布该产品之前,我辞去了工作,创办了自己的培训和咨询公司,专注于 Delphi,并获得了一份关于写一本关于它的书的合同!

 

图片来自 https://github.com/ahejlsberg

德尔福带我们回到海尔斯贝格。他是 Delphi 成功的关键,他设计了对象模型和语言扩展,这些扩展过去是、现在仍然是该语言及其生态系统成功的基础。这家伙是个语言天才。大多数语言大师在他们的生活中设计了一门伟大的编程语言。有些人最终会得到两个人的认可,通常是在同一个空间。但很少有人最终成为不同领域中三种不同编程语言的发明者,就像 Hejisberg 对 Delphi、C# 和 TypeScript 所做的那样。不仅如此,他还是一个伟大而谦虚的人,非常友好且平易近人。

 

作者照片

不管怎样,这把我们带到了 1995 年 2 月 14 日。那天,作为 SD West(西部软件开发)会议的一部分,Delphi 在旧金山 Moscone 中心正式推出。顺便说一句,这是我们多年来在我们的软件开发中失去的东西。行业。这些天我们有 Java One、MS BUILD、Apple 的 WWDC、Google 活动,Facebook 有开发者大会。每个公司都有自己的。当时,有公司会议(如旧的大型 Borland 会议),但也有针对开发人员的行业范围内的活动。您可以与 C++ 出名的 Stroustrup 和 Python 出名的 Guido van Rossum 一起参加会议,还有 Microsoft 开发人员和 Borland 开发人员、开源社区和付费工具。我非常幸运,不仅参加了其中一些活动,甚至还发表了演讲。小组讨论和辩论很有趣。 

(参见视频https://youtu.be/0q1BkHcZ5kE

抱歉离题了,回到Delphi。发布会令人印象深刻。这些演示让人们无话可说:轻松构建 Windows UI、正确处理异常、幕后 OOP。演示程序存在访问冲突,它通过恢复处理来处理它,而不是突然崩溃。我有幸参加了那次活动。如果我记得的话,发布后的聚会是在旧金山的探索博物馆举行的,那是一座以实验为基础的科学博物馆,由罗伯特·奥本海默的兄弟、粒子物理学家弗兰克·奥本海默创立。

当它发布时,Delphi(就像几年前的 Turbo Pascal 一样)立即在业界引起轰动。商业世界正在从 DOS 转向 Windows(Windows 95 即将发布,这是 Windows 的第一个真正版本)。从带有面向数据库的工具(Clipper、Borland dBase 和 Paradox)的 DOS 界面迁移到 Windows 非常复杂。Delphi 及其强大的数据导向——DB 组件、BDE、带有 DBGrid 的数据感知 UI 控件以及设计时的实时数据(现代工具通常无法提供这一功能,需要复杂的构建/部署/调试周期才能看到结果) UI 填充了数据)。这是部分原因。

另一部分原因是 Delphi 编译代码的速度很快。比数据库 4GL 语言快得多。比主要竞争对手 Visual Basic 快得多。比即将推出的 Java VM 快得多。Delphi速度很快,这在由于成本或政治原因而无法获得硬件的国家中更受欢迎。即使在今天,Delphi在早期表现重要的领域仍然在国际上取得了更大的成功。

我之前提到 Java 是有原因的。Java 也是在 1995 年推出的。我们可以认为那一年,1995 年,编程语言年:Java、JavaScript、Ruby、PHP 和 Delphi 几乎都是在同一时间开始的,大约是 30 年前。Python 已经存在了,但只是勉强存在。

  • JavaScript 首次出现于 1995 年 12 月 4 日
  • Java首次出现:1995年5月23日
  • Python 于 1994 年 1 月达到 1.0 版本(尽管第一个版本是在 1991 年发布的)
  • PHP 于 1995 年 6 月 8 日推出
  • Ruby 首次出现于 1995 年
  • 我们讨论过的Delphi,于1995年2月推出

现在,如果你看看围绕编程语言的争论,JavaScript 和 Python 是新的,Delphi 和 Pascal 是旧的。怎么会这样呢? 

Delphi还没有进化多少?我不同意,它有很多扩展——查看我的书或许多其他在线资源以获得概述。近年来 JavScript 有哪些新变化?与 Python 2 相比,Python 3 有何革命性?如果我阅读了新版本的文档(https://docs.python.org/3/whatsnew/3.0.html),它有很多不错的小扩展、数据类型和 RTL 的更改、不错且重大的更改,但不是一场语言革命。

那么Delphi有哪些旧的东西呢?是Pascal语言吗?是RAD型号吗?奇怪的是,它得到了很多采用,苹果和谷歌最近似乎都同意在设计时预览 UI 是一个好主意。您可以使用 Object Pascal 编写具有您喜欢的任何体系结构的代码。没有垃圾收集器就老了?也许吧,但仍然让程序员自己控制内存使用本身并不是一个坏主意。

 

屏幕来自 https://delphi.embarcadero.com/

回到Delphi——多年来,该产品不断发展,有不同的公司推动它(Borland、其 CodeGear 部门、Embarcadero,现在的 Idera),有多名产品经理,有许多优秀的专家作为其研发团队的一部分。我想做的最后一件事就是讨论公司方面的事情。我宁愿先介绍一下这些年来我所做的事情,然后再回到产品及其生态系统。

该产品经历了多次改造。Delphi 2 有一个用于 Windows 95 的 32 位编译器。该语言在早期发展了很多。在 Delphi 6 时期,Borland 创建了 Kylix,这是一个用于构建 Linux 桌面应用程序的 Linux 托管 IDE。后来该公司拥抱了 .NET(在一段时间内甚至可能太过分了)并创建了一个新的 IDE 架构“Galileo”,并沿用至今。

正如我之前提到的,在 Delphi 1 发布时,我创建了自己的培训和咨询公司。与此同时,我开始写书,还为编程杂志撰写了很多文章:Delphi Informant 和 The Delphi Magazine,还有 Windows Tech Journal 和意大利的一些计算机杂志。我的意思是,所有真正的印刷杂志都是通过邮寄发送的。

 

作者照片

让我们从我的书开始吧。我的第一本与 Pascal 语言相关的书是《Mastering Delphi 1》。我一开始的目的是不仅全面介绍 IDE 和语言,还全面介绍其库。我花了很多时间来写它。当时与美国出版商合作也很复杂,我通过邮件收到印刷草稿,我会标记并邮寄回加利福尼亚的出版商。不管怎样,这本书花了太长的时间来写——但它最终成为了一项伟大的投资,值得去做。这是一篇长达 1,500 页的思想博客。是的,一本大书。他们必须使用薄纸。它很成功,但并没有引起轰动。因为我花了很多时间来写这本书,所以这不是第一本书。但它得到了积极的评价,得到了大量的翻译,并受到了许多读者的好评。当我继续编写《掌握 Delphi 2、3》 和 4 时,图书销量不断增长。然后这本书在巴西大受欢迎,我不确定为什么。巴西的某些版本的销量与英文版本的销量相同。

 

作者照片

总体而言,Mastering Delphi 的不同版本已被翻译成 20 多种语言。我不确定我是否有完整的列表,我网站上的列表不是最新的。几年来,写书占据了我的大部分时间,剩下的时间就是培训、咨询、在会议上发言。

我写了多少本关于 Object Pascal 的书?

- 掌握 Delphi 1 - 2 - 3 - 4 - 5 - 6 - 7 和 2005

- 中间是 Delphi 开发人员手册,涵盖更高级的主题和一本关于 Kylix 的书

- 后来我开始自行出版书籍。我写了 Delphi 2007 手册、Delphi 2009 手册、Delphi 2010 手册、Delphi XE 手册

- 我的《Object Pascal 手册》的后来 4 个不同版本(2 个印刷版)

总共有 16 本英文印刷书籍,涉及 Object Pascal 和 Delphi。我还与 Cary Jensen 一起为 Delphi 开发者日的 3 卷做出了贡献。我不打算停下来,我有两个审查项目正在进行中。即将发布的下一个 Delphi 版本的新版语言手册。我还参与更新了一本非常特别的书,即已故 Pawel Glowacki 编写的 Expert Delphi 卷。这需要时间,但我接受参与这个项目是为了确保帕维尔的遗产不会丢失。

 

(推测是保罗·罗西的照片)

这些年来我做的另一件事是教学、培训和咨询。我在意大利、欧洲和世界各地都这样做过。我在太多国家举办过会议,无法进行实际统计,从澳大利亚到巴西,从加拿大到新加坡,从新西兰到日本,还有中东——我发现Delphi在那里造成了交通拥堵——以及其他地区。大多数欧洲国家,北至挪威,南至马耳他,西至葡萄牙,东至波兰。德国、法国、英国是常去的目的地,还有丹麦、瑞典、罗马尼亚。不用说,我多次前往美国参加会议和其他活动。

让我回到交通拥堵的故事,这是值得讲述的。我为科威特财政部举办了Delphi培训课程。财政部很奇怪,因为国家基本上没有税收,但无论如何。在聊天时,开发人员告诉我,很多人对他们的一款 Delphi 应用程序感到不满。这导致交通堵塞。我听说过很多软件问题,但这有点奇怪,实际上不止一点。事实证明,与许多首都一样,城市人口的很大一部分都在为政府工作。如果我没记错的话,他们八点就开始工作。但员工过去通常在 8 点之后甚至 9 点之前上班。因此他们引入了通行卡,进入时必须扫描。由 Delphi 应用程序提供支持。而且因为他们都是同时上班,而不是随机上班,所以交通量很大。

 

作者照片

我非常喜欢的一项相关活动是我与 Cary Jensen 和他的妻子 Loy 一起进行了 3 年的培训活动,即Delphi开发者日。那很特别。2天的时间充满了信息。在欧洲和美国重复了四五次。我们做了3年。非常棒,与观众互动非常频繁,我们还接待了来访的朋友和当地社区。

 

图片由作者提供

一些最好的活动是早期的 Borland 会议。我认为我的成功在于在超过 5000 名开发人员面前举办了我的“Delphi 的有趣一面”会议。这是一个值得观看的会议,您可能会在网上找到重播 - 但亲自体验真的很有趣。目标是以最复杂和最困难的方式完成最无用和最疯狂的任务。它从一个名为 TNothing 的组件开始。因为它什么也不做。它经历了一个感染计算机的“麻疹”应用程序或一个将屏幕颠倒的应用程序。或者转动了 Delphi菜单以更好的字母顺序排列。您应该看到它,它可以非常方便。好吧,也许。另一个想法是故意耗尽 Windows 资源并导致系统崩溃(实际上很容易)。在其中一个版本中,挑战曾是:你能在Windows 2000中创建2000个表单窗体吗?你能猜出答案吗?当时正值千年虫时期,这也是我取笑的一点——对于观众中的年轻人来说,千年虫对于软件开发人员来说并不是那么有趣,他们中的一些人付出了很多努力来制作他们的程序请注意,1999 年 12 月 31 日之后是 2000 年 1 月 1 日,而不是 1900 年!因为,你知道,大多数软件只使用两位数字来表示年份。

有关图像,请参阅:  http: //lighttouchdesigns.com/project/borland-2/

回到 Borland 会议,那些活动都很棒。数千人参加。他们也很有趣,在游乐园度过夜晚,在游戏实验室度过深夜。今天,只有在Delphi世界的一处地方,你才能感受到这种氛围,那就是巴西的会议!但在德国、意大利、日本、澳大利亚以及世界上许多其他国家,都有许多活跃的社区组织 100 人以上的活动。

Delphi显然已经过了鼎盛时期,但该产品仍然存在并产生了良好的业务,这证明了坚实的研发投资的合理性。Delphi 社区仍在致力于构建任何类型、任何纬度的软件。

在公司演示中,我创建了 Delphi 和 Pascal 积极使用的行业列表。这些不是理论案例。我可以在其中列出一个公司的名称(但我们通常无权公布这些仍然使用Delphi开发软件的公司名称)。

  • 石油和天然气
  • 航天
  • 大数据处理
  • GIS地理信息系统应用
  • 会计
  • 自助服务终端应用
  • 通讯软件
  • 测量
  • 汽车
  • 航班管理
  • 远程计算机访问
  • 建筑学
  • 卫生保健
  • 商业分析
  • 系统管理
  • 音乐编辑
  • 视频游戏
  • 数据库前端
  • 农业管理
  • 物联网管理
  • 电子发票
  • 火车和铁路
  • 所有类型的移动应用程序
  • POS零售系统
  • 政府
  • 工程项目
  • 生产系统监控
  • 动画电影
  • 电视
  • 完整的 ERP 系统
  • 实时财务
  • 银行系统
  • 纳税申报表
  • 制造业
  • 仓库自动化
  • 开发者工具
  • 广告
  • 电路板设计
  • 航运与物流
  • 卡车追踪

他们的一些用例非常棒。Pascal 编译的代码正在帮助照亮尼亚加拉大瀑布、在自动化港口中移动集装箱起重机、在电视上显示体育比赛中的实时 3D 球员数据、制作纳税申报表并向政府发送电子发票、设计 CPU,以及构建 Delphi 本身!该社区很棒,第三方供应商和开源社区都在帮助生态系统方面做出了出色的工作。他们中的一些人正在参加这次活动。

使用 Object Pascal 构建的最成功的应用程序是什么?就商业和行业颠覆而言,我将其命名为 Skype。微软为此花费了数十亿美元。85亿美元。经过多年的尝试后,他们用别的编程语言重写了它。这对它的运行并没有好多少,而且还失去了所有的业务动力。

 

作者照片

回到我自己,大约十多年前,我接到迈克尔·斯温德尔 (Micheal Swindell) 的电话,为我提供了一份工作。多么好的一份工作啊。前几年,我为 Embarcadero 做了一些工作,无论是在 Delphi 上培训新开发人员(在他们的一些新地点)还是在实际开发方面——我编写了该公司从未发布的少数组件之一,因为它与 Microsoft 在最后一刻更改的 Windows API 相关联。从技术上讲,它是随产品一起提供的。但它从未启用。当时我也是 Embarcadero 工具(以及一些第三方供应商)许可证的经销商,因此我对业务方面和公司运营有一些想法。

我收到了成为Delphi产品经理的邀请,并思考了一下。这将是一个巨大的变化。在我之前的职业生涯中,我基本上是独立的。那是一段复杂的时期,就家庭而言。但我没花太多时间就意识到这是我想做的事情。所以我提出了报价。他们同意了。几周后,我在斯科茨谷签署了一份合同。后来我经常去加利福尼亚州,一年四五次。如今,这种旅行很少见,该公司完全分布式且在线办公。

成为产品经理是一个巨大的转变。成为开发者工具的 PM 需要成为一名开发人员,但工作不是编写软件。PM 的工作涉及公司的所有职能部门。它帮助销售和营销推广产品,但同时评估他们的输入以及最终客户的输入。它确定新的功能计划,但与知道可以做什么以及如何做的架构师进行讨论。还遵循开发计划,讨论从新属性到算法和新组件的所有内容。帮助代码审查、测试内部和 Beta 版本、编写长而详细的 Beta 文档,然后帮助文档团队将这些文档转化为官方产品文档、制作演示文稿的启动平台

 

Google 图片搜索中大卫一世的照片

这些年来,在 Embarcadero 和 Idera,我有机会与一些优秀的个人和开发人员一起工作。让我提一下 David Intersimone,或者叫 David I,他多年来在推广 Delphi 和 Pascal 方面做出了令人难以置信的工作。或者是我在研发过程中与我有幸合作过的所有优秀开发人员以及我仍在合作的许多开发人员。还有其他 PM、Dev Rel 人员和布道者。但也包括销售和其他角色的人员。这十年来,许多人一直与我一起工作。这是一个很好的内部社区,我认为很多人都是朋友,并且我与一些跳槽到不同公司工作的人保持联系。

当然,我也喜欢并欣赏更大的 Object Pascal 和 Delphi 社区和生态系统。与过去不同的是,当我只是一名社区成员时,即使是一个众所周知的人,作为公司的面孔之一,我也会成为批评公司做错和没做的事情的目标。那是自然的。有时,这有点令人沮丧。但大多数人确实理解你所扮演的角色并且支持你,欣赏可以采取哪些措施来让产品保持在正确的轨道上,一次一点点。

那么现在 Delphi 以及它的多个 Object Pascal 编译器在哪里呢?Delphi 在 Windows 上仍然很强大。我已经与 Microsoft 的许多人保持联系,Windows 团队很欣赏我们为支持他们不断发展的平台所做的努力。我在这个领域做了很多工作。从 WebView 2 控制集成(Chromium Edge 浏览器引擎)到 MSIX 支持,仅举几个我关注的领域。

 

图片由作者提供

Windows 仍然是核心目标。但 Object Pascal 在移动领域取得了一些进展。有一些成功的应用程序。事实上,我写的一个APP在 Google Play 商店的下载量超过了 25 万次。太糟糕了,我不得不把它退役——这真是一个好故事。我写它是为了和我儿子一起玩,发布它只是为了让他的朋友安装它。这是一个奇怪的小应用程序。这是一个“等待游戏”:你可以每隔 30 分钟做一些事情,或多或少。所以我把它发布给我的儿子,它像病毒一样传播了数千次下载,而且越来越多。我们添加了广告,赚了很多钱。它与乐高紧密相连。乐高公司不喜欢这样,这是有道理的。所以我不得不放弃它。

回到 PM 工作,我是任职时间最长的 Delphi 产品经理,在这个职位上工作了 10 多年,尽管我是在一个团队中工作,而且我还对公司的其他产品负有一些责任。我在这个角色中取得了什么成就?很难取得平衡。该语言的发展速度可能没有我希望的那么快,但我们的客户非常重视稳定性和性能,而且一个明显的小功能可以比采用新的语言范例产生更大的影响。此外,兼容性是产品的一项功能和核心宗旨,即使它也是减缓新开发的障碍。

 

图片由作者提供

在过去的十年里,我们为该语言添加了许多不错的功能。明天我有一个会议来讨论它们,所以我不会在这里花太多时间。我的第一名?可能是内联变量。它们看起来只是一个很小的语法变化,但效果却非常显着。它引入了块作用域和生命周期。它引入了类型推断。这是一个很小的变化,但同时也是一个巨大的变化。

我们还删除了一些功能。这通常是一个更困难的决定:承认错误并采取措施纠正错误。推翻先前的决定。这对于相关个人的自豪感来说是很难的。对于公司来说也很难。但对于编程语言及其生态系统的健康发展来说,这通常是最佳的长期决策。

有时,尽管有强大的客户或内部推动,您删除的内容或决定不执行的内容与您添加的新功能同样重要。我记得支持 Windows UWP 和 Windows 手机的压力。我们没有,现在它们已经不相关了。但有时,等待而不添加正确的功能可能会让您在未来变得不那么重要。这是一个艰难的平衡。Delphi 从来没有一个好的 Web 开发故事,这是一个很大的反作用。 

图片由作者提供

在 Embarcadero 的这 10 年里,我能够继续写一些书,《Object Pascal 手册》有新版本,我能够继续出差去见 Pascal 开发人员,继续编写代码(也可以自动化我的一些工作)。任务),设计和帮助定义新功能的架构,编写演示和内部文档;

再说一遍,今天的 Object Pascal 在哪里?它在当今人工智能、沉浸式现实、元宇宙和加密世界快速变化的格局中具有任何价值吗?这个问题没有一个简单的详细答案,但有一个简短的答案。答案是“是”。

我有另一种说法,我们不应该放弃大括号语言,它是由 C 派生的所有许多编程语言的定义。它们提倡简短的符号而不是可读性。为什么双 & 符号比输入 and 更好。这是一个额外的字符,但更容易在键盘上找到,也更容易阅读。

Pascal 社区并不是唯一一个要求并推荐可读性作为一项功能的社区。Python 是这个领域的另一个重要参与者。Pascal 开发人员喜欢 Python 并不奇怪,我们 Embarcadero 希望并致力于吸引 Python 开发人员尝试 Pascal 和 Delphi。

 

图片由 Embarcadero Technologies 提供

Python 和 Object Pascal 有很多共同点。它们一开始都是很棒的学习语言,但最终在行业中找到了自己的位置。大多数大学已经放弃教授优秀的编程语言,转而教授可以为你提供工作机会的语言。我觉得这是个坏主意。一旦了解了编程,就可以切换语言。但如果你只懂一种语言,那么你可能会陷入困境。举个实际的例子:我的第一堂编程课是基于 Pascal 的。没有对象,因为它们不存在。去年,我儿子在大学上的第一堂编程课是 C 语言的混合体——学习语法的核心元素——C++ 来获取对象以及如何在内存中管理它们——以及 Java,它具有更简单、更高级的功能。(译者注:我的儿子在高一的时候学习了C++/Python,我在他高考完等待上清华大学报道的暑假让他学习了Delphi编程,后来大一的时候清华的老师继续教授了他C/C++/Java,大二的时候他对我说Delphi比其他语言更好用!)对象和类如何工作。以任何现代的 Object Pascal 编译器为例:它可以满足所有 3 个目的:正确地完成了编程和 OOP 的基础,而没有 C++ 的复杂性。包括泛型、异常处理和现代编程的其他核心原则。

大学有可能扭转这一趋势吗?这一点都不容易,但随着越来越多的开发人员开始使用 Python,Object Pascal 是一个不错的下一个选择。

那么,Object Pascal 语言及其世界的优势是什么?我大概可以列出一个很长的清单。我还可以质疑今天的一些歇斯底里行为,即为可以避免的问题寻找复杂的解决方案,然后创建另一个解决方案来处理解决第一个问题所带来的复杂性。

采取部署。我在这里有点极端,但为了更好地解释自己。我知道现实有点复杂。我们让客户将包含多达 2000 万行代码的大型应用程序构建到单个可执行文件中。Z-GANTT时间进度计划甘特图软件一个文件。您知道,普通的现代应用程序有数千个文件需要部署,并且需要复杂的编排工具来以正确的版本部署正确的文件。并从包存储库中获取要与代码一起部署的正确文件。希望开发人员在此期间没有删除该库,但你永远不会知道。

回到 Object Pascal 的优点,我们知道它们:快速编译、本机编译代码(通常更快、更安全)、没有或很少有运行时和部署依赖项。即使 Visual C++ 也需要运行时来部署。当然,您需要拥有正确的版本,因此您最终会在任何 Windows 计算机上获得 10 个 MSVC 运行时 DLL。

我是否提到过快速应用程序和低内存占用,也是由于缺乏垃圾收集而导致的?它还有另一面。Pascal是环保的。目前只有一项相当古老的研究经常被引用,它将 Pascal 和 C 列为最生态的语言之一。

这是结束演讲之前我想谈的最后一点。如今,大量能源用于为数据中心和云计算机供电。领域不多,但我看到估计全球 3% 的电力是由云系统使用的。而且它正在增长。就像 20 世纪 90 年代末一样,计算机功能较弱的国家(例如,出于不同原因,巴西和俄罗斯)更喜欢编译 Pascal,而不是 Basic 解释器。今天同样有道理。通过使用更多内存和 CPU 高效程序,我们可以减少能源消耗。我确信您不想使用 C 或 C++ 来编写服务器端应用程序。您可能更喜欢使用 Python。但如果您使用 Object Pascal,您就可以使用一门很好的语言,同时也是一门高效的语言。

同样重要的是,我们的目标应该是让手机的电池寿命更长,也许少用 Java 是一个主意。Object Pascal 生态系统当然不是唯一有帮助的,但更多的认识也很重要。

同样,更多地认识到学习如何使用良好、可靠、可读的语言进行编程以促进良好的编码风格是非常宝贵的。我知道我已经多次提到过这一点,但我们是在一所大学,所以这个话题是相关的。没有一种方法是放之四海而皆准的,而且也不仅仅存在花括号{}语言。让我们保持广阔的竞争环境,确保开发人员能够毫无偏见地选择适合工作的工具。正如所讨论的,Delphi 和 Pascal 应用程序仍然为如此多的企业提供支持是有原因的。

此外,我们拥有一个良好且健康的生态系统。以 Spring4D 为例。以 Skia4Delphi 为例。以游戏引擎和线程库为例。以 REST 服务器、微服务架构为例。作为一家公司,我们第一次做出贡献。我们为 Delphi 发布了开源 Bold,最近还发布了一个标头生成工具 Octoid。更多内容即将推出,对于那些感兴趣的人来说,保留一些旧技术也很重要。我们创建了一个完整的Python生态系统,让Python开发人员可以免费使用VCL和FMX的子集,并向Delphi开发人员提供免费的Python组件,以便他们可以直接在Object Pascal中使用流行的Python库。包括人工智能库。并且有可用于以太坊区块链的加密库。

有很多事情正在发生。Object Pascal 并没有消亡,开发人员也没有停滞不前。老兵不死,世界瞬息万变,但Delphi依然屹立不倒。

让我以我最近出版的一本书中的话作为结束语。我知道,用你自己的话来说不太好,但我觉得这是值得的。这是我在一些关于该语言的会议中使用的幻灯片,并不断重复:

“功能强大且简单、表现力强且可读性强,非常适合学习和职业发展:这些是当今 Object Pascal 的一些特征。”

“一种适用于所有行业的工具,具有拥抱移动时代的编译器和开发工具。一种为未来做好准备的语言,但扎根于过去。”

这就是我想告诉你的。再次感谢您有幸获得此奖项。我希望 Pascal、Delphi 和我的生活的历史能够帮助您学习新的东西。

猜你喜欢

转载自blog.csdn.net/xyzhan/article/details/131824268