fbpx
维基百科

Oberon

Oberon是一种通用编程语言,最初由尼克劳斯·维尔特在1987年推出,是维尔特风格的类ALGOL语言中的最后一员(继Euler英语Euler (programming language)ALGOL WPascalModulaModula-2之后)[1][2][3][4]。Oberon是增进Pascal的直接后继者Modula-2的能力,并减少其复杂度的集中努力的结果。它的原理性新特征是记录类型的类型扩展的概念[5]。它允许新数据类型构造在现存数据类型之上并关联于它们,脱离了严格的静态类型数据的教条。Oberon是在瑞士苏黎世联邦理工学院作为Oberon操作系统英语Oberon (operating system)实现的一部份而开发的。这个名字来自天王星的卫星奧伯隆

Oberon
编程范型指令式, 结构化, 模块化, 面向对象
语言家族Wirth Oberon
設計者Niklaus Wirth
實作者苏黎世联邦理工学院
发行时间1987年,​36年前​(1987
型態系統强类型, 混合(静态动态
作用域词法
系统平台ARM, StrongARM; IA-32, x86-64; SPARC, Ceres英语Ceres (workstation) (NS32032英语NS32000)
操作系统Windows, Linux, Solaris, classic Mac OS, Atari TOS, AmigaOS
網站www.projectoberon.com
啟發語言
Modula-2
影響語言
Modula-3, Oberon-2英语Oberon-2, Component Pascal英语Component Pascal, Active Oberon英语Active Oberon, Oberon-07, Nim, Go, Zonnon英语Zonnon

Oberon的当前版本是2007年修订的Oberon-07,它仍由维尔特来维护而Oberon计划编译器仍在随时更新[6]

设计 编辑

Oberon的基本指导原则是集中于基础和根本的特征,并忽略短暂性的问题。另一个因素是认识到了在语言如C++Ada中复杂度的增长。与它们相反,Oberon强调使用概念来扩展语言。在Modula-2中提供的枚举和子范围类型被省略了;类似的集合类型被限制为小的整数集合,而低层设施的数量被大幅度缩减(特别是省略了类型转移函数)。省略余下的潜在不安全设施,是得到真正的高级语言的最根本步骤。甚至跨越模块的非常紧密的类型检查,严格的运行时间索引检查空指针检查,和安全的类型扩展概念,在很大程度上允许编程单独的依仗于语言规则。

这种策略的意图是产生易于学习、实现更简单和高效的语言。Oberon编译器被认为是简明和快速的,却提供了可比拟于商业编译器的代码质量[7]

特征 编辑

 
Oberon的曾用标志

刻画Oberon语言的特征包括[8]

  • 具有大写关键字的大小写敏感语法。
  • 具有类型测试的类型扩展。
  • 模块和分离编译。
  • 字符串操作。
  • 孤立不安全代码。
  • 支持系统编程。

面向对象示例 编辑

Oberon支持对记录类型的扩展,用于抽象和异构结构的构造。不同于后期方言即1991年提出的Oberon-2英语Oberon-2和1998年提出的Active Oberon英语Active Oberon,最初的Oberon缺乏作为语言特征的分派机制,而是把它作为一种编程技术或设计模式。这给出了在OOP上的巨大灵活性。在Oberon操作系统英语Oberon (operating system)中,两种技术被一起用于分派调用:方法套件和消息处理器。

方法套件 编辑

在这种技术中,泛化模块定义过程变量的一个表格类型,而扩展模块中声明这个类型的一个共享变量,泛化模块中的方法要访问这个表格的对应项目,而扩展模块将这个表格的项目指派到自己相应的过程:

MODULE Figures; (* 抽象模块 *) TYPE Figure* = POINTER TO FigureDesc; Interface* = POINTER TO InterfaceDesc; InterfaceDesc* = RECORD draw* : PROCEDURE (f : Figure); clear* : PROCEDURE (f : Figure); mark* : PROCEDURE (f : Figure); move* : PROCEDURE (f : Figure; dx, dy : INTEGER); END; FigureDesc* = RECORD if : Interface; END; PROCEDURE Init* (f : Figure; if : Interface); BEGIN f.if := if; END Init; PROCEDURE Draw* (f : Figure); BEGIN f.if.draw(f); END Draw; (* 这里是其他过程Clear、Mark和Move *) END Figures. 

扩展泛化类型Figure为特定形状Rectangles

MODULE Rectangles; IMPORT Figures; TYPE Rectangle* = POINTER TO RectangleDesc; RectangleDesc* = RECORD (Figures.FigureDesc) x, y, w, h : INTEGER; END; VAR if : Figures.Interface; PROCEDURE New* (VAR r : Rectangle); BEGIN NEW(r); Figures.Init(r, if); END New; PROCEDURE Draw* (f : Figure); VAR r : Rectangle; BEGIN r := f(Rectangle); (* f具有Rectangle类型 *) (* ... *) END Draw; (* 这里是其他过程Clear、Mark和Move *) BEGIN (* 模块初始化 *) NEW(if); if.draw := Draw; if.clear := Clear; if.mark := Mark; if.move := Move; END Rectangles. 

动态分派只能通过泛化模块的Figures中的方法集合完成,比如这里的DrawClearMarkMove过程,它们通过接口表格调用了扩展模块Rectangles中的同名过程。

消息处理器 编辑

这种技术形成于,在泛化模块中定义一个单一的处理器过程类型,并在扩展模块中声明这个类型的一个过程,用它处理对应各种方法并包含了相应的实际参数的消息记录:

MODULE Figures; (* 抽象模块 *) TYPE Figure* = POINTER TO FigureDesc; Message* = RECORD END; DrawMsg* = RECORD (Message) END; ClearMsg* = RECORD (Message) END; MarkMsg* = RECORD (Message) END; MoveMsg* = RECORD (Message) dx*, dy* : INTEGER END; Handler* = PROCEDURE (f : Figure; VAR msg : Message); FigureDesc* = RECORD (* 抽象 *) handle : Handler; END; PROCEDURE Handle* (f : Figure; VAR msg : Message); BEGIN f.handle(f, msg); END Handle; PROCEDURE Init* (f : Figure; handle : Handler); BEGIN f.handle := handle; END Init; END Figures. 

扩展泛化类型Figure为特定形状Rectangles

MODULE Rectangles; IMPORT Figures; TYPE Rectangle* = POINTER TO RectangleDesc; RectangleDesc* = RECORD (Figures.FigureDesc) x, y, w, h : INTEGER; END; PROCEDURE Draw* (r : Rectangle); BEGIN (* ... *) END Draw; (* 这里是其他过程Clear、Mark和Move *) PROCEDURE Handle* (f: Figure; VAR msg: Figures.Message); VAR r : Rectangle; BEGIN r := f(Rectangle); IF msg IS Figures.DrawMsg THEN Draw(r) ELSIF msg IS Figures.MarkMsg THEN Mark(r) ELSIF msg IS Figures.MoveMsg THEN Move(r, msg(Figures.MoveMsg).dx, msg(Figures.MoveMsg).dy) ELSE (* 忽略 *) END END Handle; PROCEDURE New* (VAR r : Rectangle); BEGIN NEW(r); Figures.Init(r, Handle); END New; END Rectangles. 

在Oberon操作系统中,这两种技术都用于动态分派。前者用于已知的方法集合;后者用于在扩展模块中声明的任何新方法。例如,如果扩展模块Rectangles要实现一个新的Rotate()过程,在扩展模块之外只能通过它的消息处理器过程来调用。

参见 编辑

  • Oberon (操作系统)英语Oberon (operating system)

引用 编辑

  1. ^ Wirth, Niklaus. (报告). ETH Technical Reports D-INFK. Band 82. Wiley. [2021-06-18]. (原始内容存档于2021-12-17). 
  2. ^ Wirth, Niklaus. The Programming Language Oberon. Software: Practice and Experience. July 1988, 18 (7): 661–670. 
  3. ^ Wirth, Niklaus. From Modula to Oberon. Software: Practice and Experience. July 1988, 18 (7): 671–690. 
  4. ^ Wirth, Niklaus. Type Extensions. ACM Transactions on Programming Languages. April 1988, 10 (2): 204–214. 
  5. ^ Pountain, D. March 1991. Modula's Children, Part II: Oberon. Byte英语Byte (magazine). Vol. 16 no. 3: 135–142. 
  6. ^ Wirth, Niklaus. . ETH Zurich. [16 January 2021]. (原始内容存档于2019-04-07). 
  7. ^ Mössenböck, Hanspeter. Compiler Construction: The Art of Niklaus Wirth (PDF). Johannes Kepler University. 
  8. ^ Niklaus Wirth; Jürg Gutknecht英语Jürg Gutknecht. . 1987–2021 [2021-06-18]. (原始内容存档于2021-07-19). 

外部资源链接 编辑

一般性 编辑

  • at ETH-Zürich
  • Niklaus Wirth's Oberon Page (页面存档备份,存于互联网档案馆) at ETH-Zürich
  • Oberon Page (页面存档备份,存于互联网档案馆) at SSW, Linz
  • Oberon: The Programming Language (页面存档备份,存于互联网档案馆) at Ulm
  • Project Oberon, The Design of an Operating System and a Compiler (页面存档备份,存于互联网档案馆), book in PDF by Niklaus Wirth and Jürg Gutknecht, 2005 Edition
  • Astrobe (页面存档备份,存于互联网档案馆) ARM Oberon-07 Development System
  • Oberon System V4 for HP OpenVMS Alpha with source code upward-compatible 64 bit addressing
  • 64 bit Oberon-2 compiler for HP OpenVMS Alpha
  • Oxford Oberon-2 Compiler (页面存档备份,存于互联网档案馆) and its User Manual[失效連結]
  • Free Oberon-07 IDE (页面存档备份,存于互联网档案馆) Free Oberon-07 IDE for Windows, Macintosh, and Linux with syntax colouring, semantic navigation and source code debugger
  • Oberon article by Joseph Templ (页面存档备份,存于互联网档案馆) in the January 1994 issue of Dr.Dobbs

Oberon的演化 编辑

  • Modula-2 and Oberon (页面存档备份,存于互联网档案馆) Wirth (2005)
  • The Programming Language Oberon (页面存档备份,存于互联网档案馆) Wirth, (1988/90)
  • The Programming Language Oberon (Oberon-7, Revised Oberon) (页面存档备份,存于互联网档案馆) Wirth, (2016, most current language report)
  • Differences between Oberon-07 and Oberon (页面存档备份,存于互联网档案馆) Wirth (2011)
  • The Programming Language Oberon-2[失效連結] H. Mössenböck, N. Wirth, Institut für Computersysteme, ETH Zürich, January 1992
  • Differences between Oberon and Oberon-2[失效連結] Mössenböck and Wirth (1991)
  • (Changes from Oberon-2 to CP), Pfister (2001)

oberon, 关于歐洲民間傳說的妖精王, 請見, 奧伯隆, 是一种通用编程语言, 最初由尼克劳斯, 维尔特在1987年推出, 是维尔特风格的类algol语言中的最后一员, 继euler, 英语, euler, programming, language, algol, pascal, modula和modula, 2之后, 是增进pascal的直接后继者modula, 2的能力, 并减少其复杂度的集中努力的结果, 它的原理性新特征是记录类型的类型扩展的概念, 它允许新数据类型构造在现存数据类型之上并关联于它们, . 关于歐洲民間傳說的妖精王 請見 奧伯隆 Oberon是一种通用编程语言 最初由尼克劳斯 维尔特在1987年推出 是维尔特风格的类ALGOL语言中的最后一员 继Euler 英语 Euler programming language ALGOL W Pascal Modula和Modula 2之后 1 2 3 4 Oberon是增进Pascal的直接后继者Modula 2的能力 并减少其复杂度的集中努力的结果 它的原理性新特征是记录类型的类型扩展的概念 5 它允许新数据类型构造在现存数据类型之上并关联于它们 脱离了严格的静态类型数据的教条 Oberon是在瑞士的苏黎世联邦理工学院作为Oberon操作系统 英语 Oberon operating system 实现的一部份而开发的 这个名字来自天王星的卫星奧伯隆 Oberon编程范型指令式 结构化 模块化 面向对象语言家族Wirth Oberon設計者Niklaus Wirth實作者苏黎世联邦理工学院发行时间1987年 36年前 1987 型態系統强类型 混合 静态和动态 作用域词法系统平台ARM StrongARM IA 32 x86 64 SPARC Ceres 英语 Ceres workstation NS32032 英语 NS32000 操作系统Windows Linux Solaris classic Mac OS Atari TOS AmigaOS網站www wbr projectoberon wbr com啟發語言Modula 2影響語言Modula 3 Oberon 2 英语 Oberon 2 Component Pascal 英语 Component Pascal Active Oberon 英语 Active Oberon Oberon 07 Nim Go Zonnon 英语 Zonnon Oberon的当前版本是2007年修订的Oberon 07 它仍由维尔特来维护而Oberon计划编译器仍在随时更新 6 目录 1 设计 2 特征 3 面向对象示例 3 1 方法套件 3 2 消息处理器 4 参见 5 引用 6 外部资源链接 6 1 一般性 6 2 Oberon的演化设计 编辑Oberon的基本指导原则是集中于基础和根本的特征 并忽略短暂性的问题 另一个因素是认识到了在语言如C 和Ada中复杂度的增长 与它们相反 Oberon强调使用库概念来扩展语言 在Modula 2中提供的枚举和子范围类型被省略了 类似的集合类型被限制为小的整数集合 而低层设施的数量被大幅度缩减 特别是省略了类型转移函数 省略余下的潜在不安全设施 是得到真正的高级语言的最根本步骤 甚至跨越模块的非常紧密的类型检查 严格的运行时间索引检查 空指针检查 和安全的类型扩展概念 在很大程度上允许编程单独的依仗于语言规则 这种策略的意图是产生易于学习 实现更简单和高效的语言 Oberon编译器被认为是简明和快速的 却提供了可比拟于商业编译器的代码质量 7 特征 编辑 nbsp Oberon的曾用标志刻画Oberon语言的特征包括 8 具有大写关键字的大小写敏感语法 具有类型测试的类型扩展 模块和分离编译 字符串操作 孤立不安全代码 支持系统编程 面向对象示例 编辑Oberon支持对记录类型的扩展 用于抽象和异构结构的构造 不同于后期方言即1991年提出的Oberon 2 英语 Oberon 2 和1998年提出的Active Oberon 英语 Active Oberon 最初的Oberon缺乏作为语言特征的分派机制 而是把它作为一种编程技术或设计模式 这给出了在OOP上的巨大灵活性 在Oberon操作系统 英语 Oberon operating system 中 两种技术被一起用于分派调用 方法套件和消息处理器 方法套件 编辑 在这种技术中 泛化模块定义过程变量的一个表格类型 而扩展模块中声明这个类型的一个共享变量 泛化模块中的方法要访问这个表格的对应项目 而扩展模块将这个表格的项目指派到自己相应的过程 MODULE Figures 抽象模块 TYPE Figure POINTER TO FigureDesc Interface POINTER TO InterfaceDesc InterfaceDesc RECORD draw PROCEDURE f Figure clear PROCEDURE f Figure mark PROCEDURE f Figure move PROCEDURE f Figure dx dy INTEGER END FigureDesc RECORD if Interface END PROCEDURE Init f Figure if Interface BEGIN f if if END Init PROCEDURE Draw f Figure BEGIN f if draw f END Draw 这里是其他过程Clear Mark和Move END Figures 扩展泛化类型Figure为特定形状Rectangles MODULE Rectangles IMPORT Figures TYPE Rectangle POINTER TO RectangleDesc RectangleDesc RECORD Figures FigureDesc x y w h INTEGER END VAR if Figures Interface PROCEDURE New VAR r Rectangle BEGIN NEW r Figures Init r if END New PROCEDURE Draw f Figure VAR r Rectangle BEGIN r f Rectangle f具有Rectangle类型 END Draw 这里是其他过程Clear Mark和Move BEGIN 模块初始化 NEW if if draw Draw if clear Clear if mark Mark if move Move END Rectangles 动态分派只能通过泛化模块的Figures中的方法集合完成 比如这里的Draw Clear Mark和Move过程 它们通过接口表格调用了扩展模块Rectangles中的同名过程 消息处理器 编辑 这种技术形成于 在泛化模块中定义一个单一的处理器过程类型 并在扩展模块中声明这个类型的一个过程 用它处理对应各种方法并包含了相应的实际参数的消息记录 MODULE Figures 抽象模块 TYPE Figure POINTER TO FigureDesc Message RECORD END DrawMsg RECORD Message END ClearMsg RECORD Message END MarkMsg RECORD Message END MoveMsg RECORD Message dx dy INTEGER END Handler PROCEDURE f Figure VAR msg Message FigureDesc RECORD 抽象 handle Handler END PROCEDURE Handle f Figure VAR msg Message BEGIN f handle f msg END Handle PROCEDURE Init f Figure handle Handler BEGIN f handle handle END Init END Figures 扩展泛化类型Figure为特定形状Rectangles MODULE Rectangles IMPORT Figures TYPE Rectangle POINTER TO RectangleDesc RectangleDesc RECORD Figures FigureDesc x y w h INTEGER END PROCEDURE Draw r Rectangle BEGIN END Draw 这里是其他过程Clear Mark和Move PROCEDURE Handle f Figure VAR msg Figures Message VAR r Rectangle BEGIN r f Rectangle IF msg IS Figures DrawMsg THEN Draw r ELSIF msg IS Figures MarkMsg THEN Mark r ELSIF msg IS Figures MoveMsg THEN Move r msg Figures MoveMsg dx msg Figures MoveMsg dy ELSE 忽略 END END Handle PROCEDURE New VAR r Rectangle BEGIN NEW r Figures Init r Handle END New END Rectangles 在Oberon操作系统中 这两种技术都用于动态分派 前者用于已知的方法集合 后者用于在扩展模块中声明的任何新方法 例如 如果扩展模块Rectangles要实现一个新的Rotate 过程 在扩展模块之外只能通过它的消息处理器过程来调用 参见 编辑Oberon 操作系统 英语 Oberon operating system 引用 编辑 Wirth Niklaus From Modula to Oberon and the programming language Oberon 报告 ETH Technical Reports D INFK Band 82 Wiley 2021 06 18 原始内容存档于2021 12 17 Wirth Niklaus The Programming Language Oberon Software Practice and Experience July 1988 18 7 661 670 Wirth Niklaus From Modula to Oberon Software Practice and Experience July 1988 18 7 671 690 Wirth Niklaus Type Extensions ACM Transactions on Programming Languages April 1988 10 2 204 214 Pountain D March 1991 Modula s Children Part II Oberon Byte 英语 Byte magazine Vol 16 no 3 135 142 Wirth Niklaus Oberon Change Log ETH Zurich 16 January 2021 原始内容存档于2019 04 07 Mossenbock Hanspeter Compiler Construction The Art of Niklaus Wirth PDF Johannes Kepler University Niklaus Wirth Jurg Gutknecht 英语 Jurg Gutknecht Project Oberon 1987 2021 2021 06 18 原始内容存档于2021 07 19 外部资源链接 编辑一般性 编辑 Official website latest available copy at archive org at ETH Zurich Niklaus Wirth s Oberon Page 页面存档备份 存于互联网档案馆 at ETH Zurich Oberon Page 页面存档备份 存于互联网档案馆 at SSW Linz Oberon The Programming Language 页面存档备份 存于互联网档案馆 at Ulm Project Oberon The Design of an Operating System and a Compiler 页面存档备份 存于互联网档案馆 book in PDF by Niklaus Wirth and Jurg Gutknecht 2005 Edition Oberon Language Genealogy Astrobe 页面存档备份 存于互联网档案馆 ARM Oberon 07 Development System Oberon System V4 for HP OpenVMS Alpha with source code upward compatible 64 bit addressing 64 bit Oberon 2 compiler for HP OpenVMS Alpha Oxford Oberon 2 Compiler 页面存档备份 存于互联网档案馆 and its User Manual 失效連結 Free Oberon 07 IDE 页面存档备份 存于互联网档案馆 Free Oberon 07 IDE for Windows Macintosh and Linux with syntax colouring semantic navigation and source code debugger Oberon article by Joseph Templ 页面存档备份 存于互联网档案馆 in the January 1994 issue of Dr Dobbs Oberon的演化 编辑 Modula 2 and Oberon 页面存档备份 存于互联网档案馆 Wirth 2005 The Programming Language Oberon 页面存档备份 存于互联网档案馆 Wirth 1988 90 The Programming Language Oberon Oberon 7 Revised Oberon 页面存档备份 存于互联网档案馆 Wirth 2016 most current language report Differences between Oberon 07 and Oberon 页面存档备份 存于互联网档案馆 Wirth 2011 The Programming Language Oberon 2 失效連結 H Mossenbock N Wirth Institut fur Computersysteme ETH Zurich January 1992 Differences between Oberon and Oberon 2 失效連結 Mossenbock and Wirth 1991 What s New in Component Pascal Changes from Oberon 2 to CP Pfister 2001 取自 https zh wikipedia org w index php title Oberon amp oldid 78535533, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。