| 编程范型 | 指令式,結構化編程,面向对象,函數程式語言 (仅Delphi支持) |
|---|---|
| 設計者 | Apple,Niklaus Wirth,Anders Hejlsberg |
| 发行时间 | 1986年,40年前(1986) |
| 型態系統 | static and dynamic(dynamic typing through Variants,array of const andRTTI),strong,safe |
| 主要實作產品 | |
| Delphi(x86 andCLI),Oxygene(英语:Oxygene)(CLI),Free Pascal(x86,x86-64,PowerPC,ppc64,SPARC andARM),Lazarus(x86,x86-64),Virtual Pascal(英语:Virtual Pascal)(x86),TMT Pascal(x86),Turbo51(英语:Turbo51)(Intel 8051) | |
| 衍生副語言 | |
| Apple,Turbo Pascal,objfpc, Delphi, Delphi.NET,Oxygene(英语:Oxygene) | |
| 受影响于 | |
| Pascal,Simula,Smalltalk | |
| 影響語言 | |
| C#,Java | |
Object Pascal是Pascal编程语言的面向对象的衍生分支,是Delphi支持的主要编程语言。Pascal编译器,包括那些Object Pascal编译器,在生成高优化代码同时,一般运行非常快。
总而言之,Object Pascal现在笼统地用来指有面向对象编程扩展的Pascal语言的不同方言,虽然这些方言绝大多数与CodeGear实现兼容。
Object Pascal是对Pascal语言的扩展,它是Apple Computer的一个由拉里·泰斯勒领导,Pascal的发明者尼克劳斯·维尔特提供咨询的小组开发的。它继承自一个用于Lisa计算机的称作Clascal的Pascal的面向对象的早期版本。
为了支持一个现在叫做类库的可扩展Macintosh应用框架MacApp,Object Pascal是必要的。Object Pascal扩展和MacApp本身是由Barry Haynes,Ken Doyle和Larry Rosenstein开发的,Dan Allen测试的。拉里·泰斯勒监督该项目,开始于1985年早期,在1986年成为一个产品。
Apple在1994年从Motorola 68K芯片转移到IBM's PowerPC架构时,删除了对Object Pascal的支持。
一个Object Pascal扩展也在Think Pascal IDE里实现过。该IDE包括编译器,一个语法高亮和检查的编辑器,一个强大的调试器和一个类库。许多开发者首选Think Pascal,而不是MacApp,因为它提供了工具的紧密集成。在4.01之后,开发停止了,因为Symantec购买了该公司。开发人员然后离开了该项目。
在1986年,Borland将也称作Object Pascal的类似扩展引进到Macintosh的Turbo Pascal产品里;在1989年,引进到DOS的Turbo Pascal 5.5。
当Borland在1994年将重点从MS-DOS调整到Windows时,它们创造了Turbo Pascal的一个叫做Delphi的继任者,并引进了创建现在称作Delphi语言的一系列新的扩展。
Delphi的开发开始于1993年,1995年2月14日在美国官方发布了Delphi 1.0。那时,使用Turbo Pascal对象模型的代码仍旧能被编译,Delphi的特性有:先于object使用关键字class的新语法,Create构建器和虚拟的Destroy析构器(并否定了必须调用New和Dispose过程),属性,方法指针和一些其它特性。这些是ISO面向对象扩展工作草案所鼓励的,但是许多与Turbo Pascal方言的差异(例如草案要求所有的方法是虚拟的)被忽略了。
Delphi语言在遍及支持诸如64位整数和动态数组的新语言概念的年代里继续演化。
现在有许多编译器,绝大多数兼容Delphi的Object Pascal语言。许多是为了让Object Pascal在不同平台上和各种许可下编译而创建的。
Pascal Script (页面存档备份,存于互联网档案馆)(正式地称作InnerFuse)是一个开源的用Delphi编写的Object Pascal解释器/脚本引擎。支持有限的Object Pascal子集。
programObjectPascalExample;typeTHelloWorld=objectprocedurePut;end;varHelloWorld:THelloWorld;procedureTHelloWorld.Put;beginWriteLn('Hello, World!');end;beginNew(HelloWorld);HelloWorld.Put;Dispose(HelloWorld);end.
在Delphi和Free Pascal里仍然支持这种Object Pascal。FPC也将自己的(这种Object Pascal)库/单元的替代品打包。Delphi不这样做。Free Pascal 1.0系列和FPC文本模式IDE是这种方言的最大的开发代码库。Free Pascal 2.0以更类似Delphi的方言重写了。
programObjectPascalExample;typePHelloWorld=^THelloWorld;THelloWorld=objectprocedurePut;end;varHelloWorld:PHelloWorld;{这是一个指向THelloWorld的指针}procedureTHelloWorld.Put;beginWriteLn('Hello, World!');end;beginNew(HelloWorld);HelloWorld^.Put;Dispose(HelloWorld);end.
programObjectPascalExample;//注意在Free Pascal中此处应加上{{$mode delphi}}或者{{$mode objfpc}},否则不识别classtypeTHelloWorld=classprocedurePut;end;procedureTHelloWorld.Put;beginWriteln('Hello, World!');end;varHelloWorld:THelloWorld;{这是一个隐式指针}beginHelloWorld:=THelloWorld.Create;{构建器返回一个指针}HelloWorld.Put;HelloWorld.Free;{本行解除引用指针}end.
注意,对象构建器在Delphi和Free Pascal(Delphi兼容模式)里仍然有效。
namespaceObjectPascalExample;interfacetypeConsoleApp=classclassmethodMainend;THelloWorld=classmethodPut;end;implementationmethodTHelloWorld.Put;beginConsole.WriteLine('Hello, World!');end;classmethodConsoleApp.Main;beginvarHelloWorld:=newTHelloWorld;HelloWorld.Put;end;end.
通过扩展Delphi,许多特性已持续地引进Object Pascal,现在Free Pascal也引进了一些特性。为了应对批评,Free Pascal已接纳了泛型,并且Delphi和Free Pascal现在都支持操作符重载(尽管使用不同的语法)。Delphi从版本7[2]也引进了包括泛型的许多其它特性。