Oberon程序设计语言简介

  Oberon奥伯龙是一种通用编程语言,也是一种同名操作系统(由Oberon语言开发,且也参考过贝尔实验室的新一代网络操作系统Plan9),是由原Pascal程序设计语言的发明者Niklaus Wirth创造并实现,由Pascal发展而来,其语法优雅简洁,高效易用,适用于ARM等多种处理器应用。且Oberon可用于开发系统程序和应用程序。

**1,设计**

  Oberon设计有一个座右铭是艾伯特爱因斯坦的想法:“把事情变得尽可能的简单,而不是更简单。”的方针是将注意力集中在那些基本的和必要的,忽略短暂的问题特征。另一个因素是在如C/C++和Ada语言复杂性的增长识别:相对于这些,奥伯伦强调扩展语言的图书馆概念的使用。枚举、子界类型,这是目前在Modula-2,已被删除;同样,设置类型一直局限于小的整数,和底层设施的数量已大幅减少(最特别的是,型传递函数已被淘汰)。剩余的潜在的不安全设施消除的结论对获得真正的高级语言的最重要的一步。非常接近甚至跨模块的类型检查,在运行时检查严格的指标,空指针检查,和安全类型扩展的概念在很大程度上允许程序员依靠语言规则。

  这一战略的目的是产生一种更容易学习的语言,容易实现,而且非常有效。奥伯龙编译器一直被认为是紧凑和快速,同时提供足够的代码质量相比商业编译器。

**2,特点**

1,方法与关键字大写敏感的句法

  2,试验型和扩展型

  3,分离和混合模

  4,字符串操作

  5,垃圾收集器

  6,代码分离

  7,支持系统编程

**3,面向对象**

该支持为抽象和异质结构的施工记录类型的扩展,但没有一个调度机制作为语言的特性而是编程技术或设计模式。这给予了极大的灵活性,在面向对象的世界。在该操作系统的两个编程技术已被用于连接的调度通信:方法和消息处理方法。

**4,方法套件**

示例的程序变量的定义和该类型的一个全局变量在扩展模块声明和分配在通用模块:

MODULE Figures; (* Abstract module *)

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;

(* Other procedures here *)

END Figures.

由上述示例,扩展了通用型图形到一个特定的形状:

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 AS Rectangle *)
  (* ... *)
END Draw;

(* Other procedures here *)

BEGIN (* Module initialisation *)
   NEW(if);
   if.draw  := Draw;
   if.clear := Clear;
   if.mark  := Mark;
   if.move  := Move;
END Rectangles.

动态调度是通过程序的数据模块,通用模块。

**5,消息处理程序**

该技术包括更换一个程序的设置方法,各种方法之间的区别:

MODULE Figures; (* Abstract module *)

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
      (* Abstract *)
      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.

扩展了通用型图到一个特定的形状:
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;

(* Other procedures here *)

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  (* ignore *)
   END
END Handle;

PROCEDURE New* (VAR r : Rectangle);
BEGIN
   NEW(r);
   Figures.Init(r, Handle);
END New;

END Rectangles.
 
				
时间: 2024-12-18 07:52:07

Oberon程序设计语言简介的相关文章

1. Go 语言简介

Go语言简介 引用原文地址:http://m.biancheng.net/golang/ Go语言也称 Golang,兼具效率.性能.安全.健壮等特性.这套Go语言教程(Golang教程)通俗易懂,深入浅出,既适合没有基础的读者快速入门,也适合工作多年的程序员查阅知识点. 这套教程在讲解一些知识点时,将 Go 语言和其他多种语言进行对比,让掌握其它编程语言的读者能迅速理解 Go 语言的特性. Go语言从底层原生支持并发,无须第三方库.开发者的编程技巧和开发经验就可以轻松搞定. Go 语言是一门新

Python 语言简介

Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等. 那Python是一种什么语言? 首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算机干活的CPU只认识机器指令,所以,尽管不同的编程语言差异极大,最后都得"翻译"成CPU可以执行的机器指令.而不同的编程语言,干同一

计算机程序和C++语言简介

C++程序设计 第一章 计算机程序和C++语言简介 1.计算机是一台能够存储并处理数据的电子设备,包含硬件和软件两部分. 2.计算机硬件由: 1)中央处理单元(Central Processing Unit,CPU) 2)内存(主存) 3)外存储设备(磁盘.光盘.磁带) 4)输入输出设备(显示器.键盘.鼠标.打印机) 5)通信设备(调制解调器.网卡) 这些设备通过总线连接起来.数据传输通过总线进行.[总线又分为控制总线.数据总线.地址总线] 3.CPU 1)cpu通常由两部分组成:控制单元(co

ios-(1)C语言简介

1.先学C语言的原因 * oc基于C. * oc 跟 C的思想和语法很多地方不太一样,而且OC能和C混用. * C 是所有编程语言中的经典,很多高级语言都是从C语言中衍生出来的,比如 C++,C#.Objective-C.java等. 2.简史 * c语言于1972年发明,首次使用是用于重写UINX操作系统(UNIX以前主要是用汇编语言写的,它奠定了操作系统的基础). * 随着UNIX操作系统的成功,C语言也得到了大幅度地推广,被先后使用到大.中.小.微型主机上,至今还是世界上最流行.使用最广泛

[程序设计语言]-04:数据类型

阅读导航 本系列其他文章目录请戳这里. 0. 概述 为何高级语言需要类型系统这个概念?在汇编时代是没有完整的数据类型系统的,结构化编程引入了结构化的控制流.为结构化设计的子程序,随之这种结构化的代码所操作的数据也进一步的“抽象化.特化”,故而有了数据类型这种概念,类型系统主要用于两个用途: 为许多操作提供了隐含的上下文信息,使程序员可以在许多情况下不必显示的描述这种上下文.比如int类型的两个对象相加就是整数相加.两个字符串类型的对象相加就是拼接字符串.C#中new object()隐含在背后的

《C++程序设计语言(英文第四版)》【PDF】下载

<C++程序设计语言(英文第四版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382177 内容简介 本书是C++领域经典的参考书,介绍了C++11的各项新特性.功能等.主要内容包括:C++的类型.对象.作用域.存储.计算基础及模块化知识.命名空间.源文件以及异常处理等:C++的抽象性,包括类.类继承.模版等:标准库,包括容器.算法.迭代器.字符串.流I/O以及C++的基本内存模型等. 编辑推荐 C++语言之父的经典名著新版本,全面

J1. Java程序设计语言概述

如果对于开发语言的排行榜有所关注的话,那么会发现很长一段时间以来Java都是位居榜首的高级开发语言,作为一个Java开发者,为此感到骄傲的同时也深感忧虑,骄傲的是自己接触的开发语言是如此的强大,忧虑的是万一哪一天Java市场占有率不再,那我们何去何从呢?不过这都是杞人忧天了,在Java没落之前我们应该先将Java搞清楚才对,然后由此深入了解计算机的世界,对于Java程序设计语言,我们主要通过几方面来学习:语言的历史,语言的基本构成,面向对象,字符串与数字,常见的工具类,集合,IO,多线程等. 今

c程序设计语言 pdf(第一版第二版打包下载)

作者: (美)Brian W. Kernighan / (美)Dennis M. Ritchie 出版社: 机械工业出版社 副标题: 第 2 版·新版 原作名: The C Programming Language 译者: 徐宝文 / 李志译 / 尤晋元审校 出版年: 2004-1 页数: 258 定价: 30.00元 装帧: 平装 ISBN: 9787111128069 内容简介 · · · · · · 在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用广泛.本书原著即为C语言的设计

软件的内涵、操作系统、软工定义、程序设计语言的演化

软件的内涵 软件是用户与硬件之间的接口界面.用户主要是通过软件与计算机进行交流.软件是计算机系统设计的重要依据.为了方便用户,为了使计算机系统具有较高的总体效用,在设计计算机系统时,必须通盘考虑软件与硬件的结合,以及用户的要求和软件的要求. 软件的正确含义应该是: (1)运行时,能够提供所要求功能和性能的指令或计算机程序集合 (2)程序能够满意地处理信息的数据结构 (3)描述程序功能需求以及程序如何操作和使用所要求的文档 操作系统 1.什么是操作系统 操作系统( operating system