首页 > 编程语言 >编程语言-Object Pascal语言的面向对象扩展

编程语言-Object Pascal语言的面向对象扩展

时间:2024-10-16 22:22:57浏览次数:11  
标签:编程语言 Delphi Object HelloWorld Pascal THelloWorld Free

Object Pascal 是经典编程语言 Pascal 的一个扩展版本,引入了面向对象编程(OOP)的关键特性,如类与方法。这一革新性发展是在 Pascal 的创始人 Niklaus Wirth 的协商下,由 Larry Tesler 带领的团队在苹果公司完成的。

起源

Object Pascal 的前身可以追溯到名为 Clascal 的语言。Clascal 是苹果公司个人办公系统(POS)部门——后来分别更名为 Lisa 部门和 32 位系统部门——在 1983 年开发的一种面向对象的编程语言及其配套编译器。Clascal 主要用于为 Lisa Office System 编写应用程序,后者是当时苹果 Lisa 计算机的操作环境。

图片

Lisa 计算机

发展历程

自二十世纪七十年代起,Pascal 成为了编程界的主流语言之一,其高质量的实现遍布众多小型计算机和微型计算机平台。UCSD Pascal 系统以其跨平台特性尤为突出,苹果公司便基于此获得了授权,并将其应用于 Apple II 和 Apple III 的 Apple Pascal 系统。

随着 Apple Lisa 项目的启动,Pascal 再次被选为新平台的主要编程语言,不过这一次是以编译器的形式而非解释器来实现。这一转变标志着 Pascal 在苹果产品中的重要地位。


Object Pascal 的设计旨在支持 MacApp,这是一个可扩展的应用程序框架,后来发展成为了类库。这一项目在 1985 年初启动,并于次年正式推出,其主要开发者包括 Barry Haynes、Ken Doyle 和 Larry Rosenstein。


值得一提的是,尽管 Clascal 未能持续发展,但 Object Pascal 却因其强大的功能成为 Borland 公司 Delphi 开发平台的核心语言,并在软件开发领域占据了重要的一席之地。

开发工具的发展

尽管苹果提供了自己的 Object Pascal 实现,但 Think Pascal 集成开发环境(IDE)因其更快的编译 - 链接 - 调试周期和更好的工具集成而受到许多开发者的青睐。然而,随着时间推移,苹果在 1994 年向 PowerPC 架构迁移时,逐步停止了对 Object Pascal 的支持。

即便如此,Metrowerks 的 CodeWarrior 仍然为 Macintosh 平台提供了 Object Pascal 的支持,使得开发人员能够继续使用这一语言进行开发,即使在苹果官方支持结束后仍能保持一定的延续性。

Borland, Inprise, CodeGear, and Embarcadero

图片

1986年,Borland为Macintosh的Turbo Pascal产品引入了类似的面向对象扩展,命名为Object Pascal,并在1989年为DOS平台的Turbo Pascal 5.5也加入了这一扩展。随着1994年Borland将重心从DOS转向Windows,他们推出了Turbo Pascal的继承者——Delphi,这是一款集成了新面向对象特性的语言。

图片

图片

Delphi 1.0集成开发环境

Delphi的开发始于1993年,并于1995年2月14日在美国正式发布。尽管原有的使用Turbo Pascal对象模型编写的代码依然可以被编译,但Delphi引入了一套全新的语法体系,包括使用class关键字替代objectCreate构造函数及虚拟Destroy析构函数,并且不再需要调用NewDispose过程。这些变化受到了ISO面向对象扩展草案的启发,但同时保留了Turbo Pascal方言中的许多特性,如并非所有方法都必须是虚拟的。

随着时间的推移,Delphi语言不断进化,逐渐支持了动态数组、泛型以及匿名方法等多种现代编程结构,使其在软件开发领域保持着强大的竞争力。


Embarcadero Technologies 于 2008 年收购了 Delphi,销售 Delphi集成开发环境 (IDE),该环境将 Object Pascal 的 Delphi 方言编译到 Windows 和 macOS、iOS、Android 和 Web。

图片

图片

Delphi 12 集成开发环境

“Hello World” 程序示例

Apple version 苹果版

program ObjectPascalExample;
   type      THelloWorld = object         procedure Put;      end;
   var      HelloWorld: THelloWorld;
   procedure THelloWorld.Put;   begin      ShowMessage('Hello, World!');   end;
begin   New(HelloWorld);   HelloWorld.Put;   Dispose(HelloWorld);end.

Delphi 和 Free Pascal 版本

program ObjectPascalExample;
type  THelloWorld = class    procedure Put;  end;
procedure THelloWorld.Put;begin  Writeln('Hello, World!');end;
var  HelloWorld: THelloWorld; { this is an implicit pointer }
begin  HelloWorld := THelloWorld.Create;        { constructor returns a pointer to an object of type THelloWorld }  HelloWorld.Put;  HelloWorld.Free;                         { this line deallocates the THelloWorld object pointed to by HelloWorld }end.

Object Pascal 的持续进化

Object Pascal 作为一种编程语言,在其发展历程中不断吸收新特性,尤其是在 Delphi 和 Free Pascal 这两个主要实现中。面对来自社区的声音,尤其是关于语言现代化的需求,Free Pascal 团队选择了一条与 Delphi 语法保持一致的道路,尤其是在启用了 Delphi 兼容模式的情况下。这意味着,不仅在语法层面实现了互操作性,而且两者都开始支持诸如运算符重载等功能——尽管在实施范围上有所不同,Delphi 在这方面显得更为保守,而 Free Pascal 则走得更远。

自 Delphi 7 版本以来,该环境迎来了多项更新,其中包括对泛型的支持等重要特性。值得注意的是,尽管 Free Pascal 在追求与 Delphi 的兼容性方面做出了努力,但它并未止步于此。相反,Free Pascal 继续在其体系内探索并集成了一系列创新功能,这些功能往往超越了 Delphi 的边界,展现了其作为一个开源项目的灵活性与前瞻性。

这种双重发展的策略不仅丰富了 Object Pascal 生态系统,也使其成为了连接传统开发实践与现代编程趋势之间的桥梁。

标签:编程语言,Delphi,Object,HelloWorld,Pascal,THelloWorld,Free
From: https://blog.csdn.net/2404_87526689/article/details/142897067

相关文章

  • IDEA上面简单使用ObjectDB
    一、ObjectDB介绍ObjectDB是一个面向对象的数据库管理系统,使用Java作为编程语言,适用于处理各种规模的数据,从较小的数据库到非常大的数据库,支持数据库文件大小可达到128TB。二、IDEA上面使用(maven)新建一个objectdb数据库从一个简单的开源项目开始1.下载下面的文件,在终端输......
  • 【uniapp】video在公众号自动播放事件及使用object-fit使内容填充不留黑边
     视频组件官网:https://uniapp.dcloud.net.cn/component/video.html使用object-fit使内容填充不留黑边object-fitcontain当视频大小与video容器大小不一致时,视频的表现形式。contain:包含,fill:填充,cover:覆盖 在template中添加<template><view......
  • UE-GAS CreateDefaultSubobject<UAbilitySystemComponent>返回为nullptr
    前因原先在项目中用了默认的ASC(UAbilitySystemComponent),后面因为新的需求导致需要改为自己的ASC。结果改了之后,发现在Pre-Init(构造函数)时,CreateDefaultSubobject的返回值是nullptr。过程于是去论坛求助:论坛的人的回答是,你修改了ASC的类,导致前一个ASC反序列化到当前ASC上,从而......
  • [Javascript] Object property order
    ForJavascriptObject,youcannotassumetheorderofObjectpropertythesameastheorderofaddingthoseproperty.TheactualorderfollowthisruleIfit's'1','2',sortedasecandmoveforwardtothebeginningvarobj={}......
  • WebAssembly 基础以及结合其他编程语言
    0x00WebAssembly基础详情参考《WebAssembly|MDN》(1)概述WebAssembly简称WASM或WA,是一种新的编码方式,可以在现代的Web浏览器中运行可以通过编译器,把多种编程语言(如C/C++、C#、Go、Python、Rust、TypeScript等)编写的代码转化为WA,并在浏览器中使用特点:灵活度高......
  • 2024 年 04 月编程语言排行榜,PHP 排名创新低?
    编程语言的流行度总是变化莫测,每个月的排行榜都揭示着新的趋势。2024年4月的编程语言排行榜揭示了一个引人关注的现象:PHP的排名再次下滑,创下了历史新低。这种变化对于PHP开发者和整个技术社区来说,意味着什么呢?PHP一度是Web开发的王者,但如今为何地位岌岌可危?其他语言又是如何崛......
  • 2024 年 04 月编程语言排行榜,PHP 排名创新低?
    ​ 编程语言的流行度总是变化莫测,每个月的排行榜都揭示着新的趋势。2024年4月的编程语言排行榜揭示了一个引人关注的现象:PHP的排名再次下滑,创下了历史新低。这种变化对于PHP开发者和整个技术社区来说,意味着什么呢?PHP一度是Web开发的王者,但如今为何地位岌岌可危?其他语言又是如何......
  • python: create object
     classAccount(object):"""账户"""owner:str#类型提示"""类型提示"""balnace:float#类型提示"""类型提示"""def__init__......
  • 【原创】修复freeepascal自带的tdbf组件使用中文字段时转换为utf8时可能出现文字错的
    修复freeepascal自带的tdbf组件字段名称使用中文时转换为utf8时可能出现文字错:修改方法:打开fpcsrc\packages\fcl-db\src\dbase\dbf_dbffile.pas修改第816/1236/1246/1842/2758行,将AnsiUpperCase改为UpperCase。重新编译fpcsrc源码或将dbase文件夹拷贝到project目录,重新编译proje......
  • 深入理解 Python 中的 object
    深入理解Python中的object什么是object()?object()的作用和特点object是所有类的基类基础且不可变的对象object提供基本的对象行为object()作为占位符为什么要了解object?什么是object()?object()是Python的一个内置函数,它用于创建一个最基础的对象实例。......