Oberon/ETH Oberon/white
该文档最初托管在ETHZ。它仍然在ETH 许可证下,并且位于WayBack 档案中。
未知来源
关键字:组件框架、基于文档、动态加载、可扩展性、图形用户界面、图形组件、交互式组合、MVC、Oberon、面向对象、操作系统、持久化对象、编程语言。
- Oberon 项目历史
- Oberon 编程语言
- ETH Oberon 系统
- 应用程序包
- 不同的 ETH Oberon 系统实现
- 如何获取 ETH Oberon 系统
- 关于 Oberon 的书籍
- 有趣的 HTML 文档
- 联系地址
- 版权
Oberon 同时是编程语言和现代操作系统的名称。Oberon 项目 [WG92] 于 1985 年由 Niklaus Wirth 和 Jürg Gutknecht 在瑞士联邦理工学院苏黎世 (ETHZ) 启动。它最初针对内部构建的硬件(Ceres 工作站,基于国家半导体 32000 处理器系列)。后来,决定将系统移植到流行的计算机硬件,在那里它将原生运行或在主机操作系统之上运行。如今,Oberon 可用于许多计算机平台。
1991 年,Jürg Gutknecht 和他的团队继续开发 ETH Oberon 系统。目标是在更大程度上利用 Oberon 的固有潜力和特性,通过可组合和持久化对象的理念升级系统,用图形伴侣补充文本用户界面,并为无处不在的网络提供支持。1995 年,第一个官方的 Oberon 系统 3 版本完成。从那时起,该系统一直在不断改进和扩展。1997 年,发布了包含大量应用程序的版本 2.2,以及一份全面的基于超文本的文档。2000 年 3 月,一个新版本发布,该系统更名为“ETH Oberon 系统”。
Oberon 语言是 Pascal 家族中 Modula-2 的继任者 [RW92]。从 Modula-2 中,Oberon 继承了以下大型编程概念,这些概念被普遍认为是必不可少的,即
- 抽象(数据结构和数据类型)
- 封装(信息隐藏)
- 模块化(具有类型检查接口和独立编译的模块)
- 强类型(支持运行时类型测试)。
Oberon 中的新概念包括
- 一个简单自然的构造,称为类型扩展,用于记录类型的专业化
- 多态性:扩展类型在运行时被接受,只要存在相应基类型对象即可
- 细粒度信息隐藏用于数据类型
Oberon 语言 [Wir88] 的主要优点在于提供数据类型可扩展性作为一种多用途构造。结合多态性和过程变量,它支持异构数据结构和面向对象编程。因此,即使使用 OOP 风格,也不需要与传统编程技术有根本的突破。
与典型的术语相比,类对应于记录类型,子类对应于扩展记录类型,超类对应于基记录类型,对象对应于记录实例。在其最简单的形式中,方法对应于已安装的过程变量,消息发送对应于已安装过程变量的调用。与大多数 OOP 语言的以类为中心不同,Oberon 使用以实例为中心的 OOP 模型。
编译器的一些特点是
- 编译速度非常快
- 可以直接从编辑窗口编译
- 生成本机或可移植代码,无需单独链接
编译器可以生成两种类型的目标文件:(a)包含目标机器代码的经典本机目标文件或(b)精简二进制文件。精简二进制文件是一种新型的目标文件,根本不包含任何目标代码,而是包含模块内容的可移植描述,这使得这些文件完全独立于最终的目标机器(平台无关性)。目标代码生成由模块加载器(取决于底层硬件)在运行时执行,并且与加载传统目标文件一样有效。
原始的 Oberon 系统是一个单线程、单用户、协作式多任务操作系统 [Wir88, WG92],它运行在裸硬件上或作为单窗口应用程序在托管操作系统之上运行。ETH Oberon 系统是一个扩展版本,它固有地支持持久化对象和构建图形用户界面。它以模块层次结构的形式呈现,其中许多模块导出一个或多个强大的抽象数据类型。应用程序模块只需重用这些数据类型,而无需关心它们的实现细节。
核心组件
- 带有集成垃圾收集器的内核
- 动态模块加载器
- 平铺查看器显示管理器
- 对文本和字体的广泛内置支持(文本是一种抽象数据类型)
- 精简高效的文件系统
- 对持久化对象和对象库的集成支持
- 用于磁盘、软盘、鼠标、键盘、异步通信、打印机和位图显示的驱动程序
- 局域网服务
- 超快 Oberon 编译器
一些实现通过 API 使用底层操作系统的功能。
系统特征
- 单进程多任务处理
- 自动垃圾收集
- 内置非模态文本编辑器
- 命令:Oberon 的一个显著特点是文本输入和命令输入的统一。在任何接受可编辑文本的地方,都可以输入和执行(或激活)有效的命令名称 M.P。命令是在用户界面中可以执行的代码单元。它是由用 Oberon 编写的模块 M 导出的无参数过程 P。
- 独立编译,并进行完整的跨模块一致性检查。智能模块加载器和细粒度模块接口指纹识别,使得接口扩展可以在不使客户端失效的情况下进行。
- 动态加载。允许在运行时按需加载模块
- 用于文本和图形编辑以及程序开发的先进工具
- 组件框架
- 称为小部件的 GUI 开发工具包
ETH Oberon 系统亮点
- 高级文本用户界面。基本的 ETH Oberon 系统层配备了一个功能强大的文本用户界面(包含嵌入式 Oberon 命令的文本)。它与原始系统一样精简紧凑。对于本机版本,基本系统在加载时只有 210 KB。
- 内核中集成的对象支持。ETH Oberon 系统内核是原始 Oberon 内核的升级,它通过一个统一的对象机制,
- 集成和概括现有概念。特别是,原始 Oberon 系统的所有重要组成部分,如字符、字体、文本、显示框架和查看器,都可以通过两个新引入的概念对象和对象库(对象的索引集合)来统一表达。整个对象机制由一个非常小的模块Objects表示。
- 为复合对象定义了一个通用消息协议(“软件总线”),从而为未来的对象类型提供了一个通用且可扩展的平台。
- 对象自治和持久性。所有 ETH Oberon 系统对象本质上都是自治且持久的,即它们在任何环境中都可行,并且可以与其当前状态一起移植到任何其他存储或机器。ETH Oberon 系统通过绑定机制支持持久性,该机制允许对象绑定到对象库。
- 通过软件总线技术扩展。ETH Oberon 系统对象始终配备有通用消息接口。基于这种通用性,ETH Oberon 系统定义了一种通用消息协议,可以看作是一种软件总线,因为实现该协议的对象可以参与并协作系统数据结构。该协议由一组基本消息类型和规则定义,这些类型和规则可以针对特定类或对象组单独扩展。它遵循复合对象中的家长控制原则。
- 完全分层可组合性。ETH Oberon 系统对象本质上是组件,即它们可以自由地嵌入任何其他容器对象或文本中。对象组合可以嵌套到任意级别。
- 通用 MVC 方案。ETH Oberon 系统显示空间是复合和基本可视对象的异构层次结构,它支持任意部分和完全重叠。层次结构基于一种通用的模型-视图-控制器方案,允许对同一个对象(可视或不可视)进行不同的相机视图。
- 强大的 GUI 框架小部件。小部件包为对象组合提供了一个非常强大的框架。它包含一个丰富的预定义可视对象和模型(或抽象)对象库,称为“小部件”,以及一些用于它们交互式和描述性组合和检查的有效工具。
小部件对象类型涵盖了广泛的范围。其中大多数是可视化的,并且在显示器上可见,也就是说,它们是显示空间的一部分。例如,文本小部件、查看器、菜单栏、按钮、滑块、面板等。与可视小部件相比,不可视小部件在幕后运行,并且能够操纵和存储信息。它们在 MVC 方案中充当模型。
小部件框架允许从小部件作为构建块运行时构建图形用户界面(GUI)。每个对话框元素或小部件都可以嵌入到任何 UI(文本或图形)或应用程序中。所有小部件都可以集成并重用在任何其他 ETH Oberon 系统环境中。小部件可以浮动在文本中,可以嵌入面板中,可以嵌入图形图表中等等。容器小部件管理其他小部件作为它们的“子级”。主要的容器是面板小部件(二维编辑表面)和文本小部件(支持嵌入的完整文本编辑器),尽管还有更精致的容器可用。
有两种不同的对象构建和组合方法可用:交互式和描述性。交互式方法利用 ETH Oberon 系统对象的内置编辑支持。可视对象被修改并交互式地使用,无论它们位于何处。ETH Oberon 用户以典型的拖放方式创建新的 UI 或修改现有的 UI。实际上,UI 构建简化为纯粹的文档编辑。此外,还提供了两个支持工具:小部件工具提供了一个丰富且可扩展的预定义组件库以及一些布局功能。哥伦布检查器允许检查小部件及其属性和链接。
描述性方法依赖于形式语言和相应的解释器。描述语言LayLa采用类似 LISP 的函数式风格。 - 自包含文档。通用自包含文档的概念是 Gadgets 框架的一部分。此类文档具有名称,并且可以通过引用包含在其他容器对象或文本中。此外,它们能够迁移,并且可以选择进行身份验证。
- 不同层级的可扩展性
开放性和可扩展性从一开始就是 Oberon 项目的关键目标。使用 ETH Oberon 系统,我们可以从三个不同的层次区分可扩展性。- 最低级别对应于最简单的情况。它包括创建复合对象,即使用现有组件创建用户界面和文档。这个级别对程序员和最终用户都是可访问的。它只需要对(取决于所需方法)交互式组合工具和检查器或描述语言有一定的熟悉程度。无论构建方法如何,都可以从以下来源获取组件:
- 基本对象的生成器(通过克隆)
- 容器对象的生成器(通过克隆)
- 预制对象库(通过克隆或引用)
- 下一个级别是现有小工具和 GUI 的编程使用,特别是为组件添加“粘合逻辑”以及输入和输出。这个级别由丰富的*过程式接口*支持,特别是由模块*Attributes*、*Links*和*GadgetsIn*、*GadgetsOut*支持。在这个级别上不需要面向对象的编程。
- 第三级涉及开发新的组件。这里,应该区分两种类型的组件:*基本小工具*,它不包含任何其他小工具,和*容器小工具*,它能够管理其他小工具。在这种情况下,“开发”意味着扩展现有小工具的类型和消息处理程序代码,或者定义新的类型并编程新的消息处理程序。为了支持这项活动,ETH Oberon 系统版本提供了代码骨架,换句话说,模板可以轻松地修改和调整以满足个人需求。需要提到的是,面向对象的编程在这种情况下是必不可少的。特别是,必须实现完整的基本消息协议,以允许新对象(类型)连接到“软件总线”。
- 最低级别对应于最简单的情况。它包括创建复合对象,即使用现有组件创建用户界面和文档。这个级别对程序员和最终用户都是可访问的。它只需要对(取决于所需方法)交互式组合工具和检查器或描述语言有一定的熟悉程度。无论构建方法如何,都可以从以下来源获取组件:
ETH Oberon 系统包包含一些有趣的工具和应用程序。其中许多是由 ETH 助理和学生开发的生产力工具。一些可供使用的应用程序是
- 符号文件浏览器、源代码分析器、Oberon 源代码分析器、十六进制编辑器,以及用于以超文本形式浏览模块文档的智能浏览器 Watson。
- 用于压缩和加密源模块以供进一步分发的工具,以及用于将代码附加到文档以使其可移植的工具。
- 用于备份 MS-DOS 磁盘上的文件的工具,用于准备文件以进行邮寄的工具,用于将多个文件压缩到单个存档中的归档器,用于底层操作系统剪贴板的接口,以及用于操作调色板的工具。
- 一些与 Gadgets GUI 相关的工具和示例程序,包括用于交互式创建 Gadgets 组件的工具和用于管理可重用组件的公共库的工具。
- 一个功能强大的图形编辑器,名为*Leonardo*。
- 一个名为*Rembrandt*的图片编辑器,以及相关的图像操作工具。
- 一个网络软件包。Internet 连接可以通过以太网连接、SLIP 或 PPP 拨号实现。一套工具可用于支持电子邮件、网页浏览、FTP、Gopher、新闻和 Telnet。大多数这些工具以 Gadgets GUI 形式呈现给用户。它们符合统一的通用*文档模型*。特别是,它们允许打开任何远程文档,包括任何 html 文档,就好像它是本地的。*Mail*和*News*支持 Gadgets 组件的传输。
- 一些关于系统所有方面的电子教程,包括嵌入式代码示例,Oberon 语言参考,程序员指南,以及大量示例程序。
用户可以选择从系统提供的丰富的应用程序包中选择自己的应用程序。
- ASCIITab - ASCII 表格小工具
- Backdrops - 纹理壁纸生成器
- Calc - 简单计算器
- Coco - 扫描器和解析器生成器
- CUSeeMe - CUSeeMe 视频接收器
- Diff - 文本差异工具
- Dim3 - 3D 引擎
- EditKeys - 用于 TextGadgets 的键盘宏实用程序
- Find - 字符串搜索器
- FontEditor - Oberon 光栅字体编辑器
- Games - 游戏合集:Asteroids、Freecell、MineSweeper、Scramble、Sokoban、Solitaire、Spider、Tetris
- Hex - 二进制文件编辑器
- Histogram - 直方图小工具
- HPCalc - RPN 计算器
- HTML - 简单文本到 HTML 转换器
- LayLa - 布局语言
- LayoutPanels - 带有格式约束的 LayoutPanels
- LPRPrinter - 远程 (LPR) 打印机实用程序
- Magnifier - 像素放大镜
- PictConverters - 图片格式转换器
- RX - 正则表达式搜索器
- Sort - 基于行的排序器
- Sound - 声音和 CD 工具 (Soundblaster)
- TextPopups - 用于 TextDocs 的弹出菜单
- V24Terminal - 简单 V24 终端
- WTS - V4 文本到 ETH Oberon 系统文本转换器
ETH Oberon 系统可以安装在各种平台上,要么安装在主机操作系统的顶部(Windows、Intel 或 PPC 基于的 PC 的 Linux,Macintosh 的 MacOS),要么在 Intel 基于的 PC、Transmeta 平台和 DEC Shark NC 的情况下,作为本机操作系统,称为 Native Oberon。平台特定的硬件和软件要求以及安装说明在*readme*文件中进行了描述。有关如何获取特定平台的最新更新的详细信息,请参见下一节。
Intel 基于的 PC 上的 PC Native Oberon 绝对是自包含的,不使用任何外来软件层或 Bios。在某种程度上,PC Native Oberon 对于 PC 来说就像最初的 Oberon [WG92] 对于 Ceres 一样。例如,它使用与原始 Oberon 系统中相同的扁平文件目录结构。相反,其他实现采用其主机系统的目录结构和名称路径的概念。
该系统及其源代码(在通用许可协议下)作为*免费软件*免费提供。ETH Oberon 系统的最新版本可以随时通过匿名文件传输从 ETH 获取
- ftp://ftp.ethoberon.ethz.ch/ETHOberon/
[失效链接]
不同实现的子目录名称为
- Native - 用于 Intel 基于的 PC
- Win95NT - 用于 Windows 95、Windows NT 和 Windows 2000(支持长文件名)
- Win3x - 用于 Windows 3.1、WfWG 3.11、Windows 95 和 Windows NT
- Unix - 用于 Intel 基于的 PC 上的 Linux
- Macintosh - 用于 PowerMac 和 68K 基于的 Apple Macintosh 上的 MacOS
Macintosh 版本[连同 Native 和 Windows 版本]也可以从加州大学欧文分校 (UCI) 获得
- ftp://ftp.ics.uci.edu/pub/oberon/System3/Macintosh
[失效链接]
- [Wir88] - **Niklaus Wirth**
Oberon 编程语言
Springer - 软件 - 实践与经验,19(9),1988 年。
最初的 Oberon 语言报告。
- [Rei91] - **Martin Reiser**
Oberon 系统 - 用户指南和程序员手册
Addison-Wesley,1991 年 - ISBN 0-201-54422-9
这是对原始 Oberon 系统的完整指南和参考。本书包含用户指南、模块库描述以及编程指南,还包含大量实用的现实世界示例和插图。
- [RW92] - **Martin Reiser 和 Niklaus Wirth**
Oberon 编程 - 超越 Pascal 和 Modula 的步骤
Addison-Wesley,1992 年 - ISBN 0-201-56543-9
本书是包含完整的参考,提供了对该语言的详细文档——Niklaus Wirth 编写的最初的 Oberon 报告作为附录包含在内。研究人员、讲师、学生和程序员将被对 Oberon 的完整且井井有条的定义以及如何使用它所吸引。
- [RW92d] - **Martin Reiser 和 Niklaus Wirth**
Oberon 编程 - 新的 Pascal
Addison-Wesley,1992 年 - ISBN 3-89319-657-2
[RW92] 由 Josef Templ 翻译成德语。
- [WG92] - **Niklaus Wirth 和 Jürg Gutknecht**
Oberon 项目 - 操作系统和编译器的设计
Addison-Wesley,1992 年 - ISBN 0-201-54428-8
对原始 Oberon 系统设计、开发和实现的第一手资料。该项目背后的主要设计原则——少量核心功能足以产生复杂的计算机系统——随着故事发展为对集成文本和图形系统的设计和开发、汇编器、编译器、编程工具、文件和打印服务器以及电子邮件服务器的描述而得到充分说明。
- [Mös93] - **Hanspeter Mössenböck**
Oberon-2 中的面向对象编程
Springer Verlag,1993 年 - ISBN 3-540-60062-0
面向对象编程原理及其在 Oberon-2 中的应用,以及示例。
- [Mös93d] - **Hanspeter Mössenböck**
Oberon-2 中的面向对象编程
Springer Verlag,1993 年 - ISBN 3-540-55690-7
[Mös93] 翻译成德语。
- [ML97] - **J.R. Mühlbacher、B. Leisch、B. Kirk、U. Kreuzeder**
Oberon-2 - 使用 Windows 编程
Springer Verlag,1997 年 - ISBN 3-540-62522-4
- [Nik97] - **Eric Nikitin**
进入 Oberon 的世界:编程和
Oberon-2 编程语言的介绍
Springer Verlag,1997 年 - ISBN 0-387-98279-5
- [FM97] - **André Fischer 和 Hannes Marais**
Oberon 伴侣:Oberon 系统 3 使用和编程指南
vdf Verlag der Fachhochschulen,1997 年 - ISBN 3-7281-2493-1
包含一个 CD-ROM。
ETH 发布的技术论文的完整列表以及以 Oberon 为主题的其他论文的列表可在以下网站找到:www.ethoberon.ethz.ch/books.html [失效链接]。
有关当前发展的更多信息,可以使用互联网浏览器获取。以下 HTML 文档地址列表并不详尽。另请参见参考书目。
- www.ethoberon.ethz.ch - ETHZ 的 Oberon 主页
- https://github.com/berkus/Juice - Juice 用于在 WWW 上分发可执行内容的技术
- www.math.tau.ac.il/~laden/
[失效链接] - Guy Laden 收集的 Oberon 信息
- http://archiv.ub.uni-heidelberg.de/volltextserver/21411/1/report.18.pdf - 海德堡大学的 Voyager 项目
瑞士联邦理工学院
ETH Oberon 系统开发团队
计算机系统研究所
ETH 中心
CH-8092 苏黎世
瑞士
电话 +41 1 632 7311,传真 +41 1 632 1307
电子邮件(讨论列表):[email protected]
ETH Oberon 主页:http://www.ethoberon.ethz.ch
Bluebottle 主页:http://bluebottle.ethz.ch
ETH Oberon 系统是苏黎世联邦理工学院计算机系统研究所团队的版权。
Oberon 系统免费提供,下载资料无需注册。源代码根据以下 许可协议 提供。每个源代码模块开头都引用了许可条款。
2000 年 3 月 13 日 - 版权所有 © 2002 ETH Zürich。保留所有权利。
电子邮件:oberon at lists.inf.ethz.ch