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

**1,设计**

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

  这一思想理念的目的是产生一种更容易学习的语言,容易实现,而且非常有效,并且它的理念产生的结果是可用于研究和工程两方面。奥伯龙编译器一直被认为是紧凑和速度很快的,同时相比商业编译器能提供或许更好的代码质量。

但Oberon没有流传于世并发展起来,最主要的原因是UNIXT/C的这对黄金组合奠定了现代开放计算机技术的基石,现在没有任何技术可以撼动(不要说Windows,现代操作系统在发展上都是相互相成的)。IBM的AS400是个例外,Oberon是个例外。虽然它是个理想式的编程语言工具,但它却没有函数式编程语言Lisp那么的纯粹。现代编程语言朝着两个方向在继续发展。

**2,特点**

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

  2,试验型和扩展型

  3,分离和混合模

  4,字符串操作

  5,垃圾收集器

  6,代码分离

  7,支持系统编程

**3,面向对象**

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

**4,方法套件**

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

MODULE Figures; (* Abstract module *)TYPEFigure*    = POINTER TO FigureDesc;Interface* = POINTER TO InterfaceDesc;InterfaceDesc* = RECORDdraw*  : PROCEDURE (f : Figure);clear* : PROCEDURE (f : Figure);mark*  : PROCEDURE (f : Figure);move*  : PROCEDURE (f : Figure; dx, dy : INTEGER);END;FigureDesc* = RECORDif : Interface;END;PROCEDURE Init* (f : Figure; if : Interface);
BEGINf.if := if;
END Init;PROCEDURE Draw* (f : Figure);
BEGINf.if.draw(f);
END Draw;(* Other procedures here *)END Figures.

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

MODULE Rectangles;IMPORT Figures;TYPERectangle* = POINTER TO RectangleDesc;RectangleDesc* = RECORD(Figures.FigureDesc)x, y, w, h : INTEGER;END;VARif : Figures.Interface;PROCEDURE New* (VAR r : Rectangle);
BEGINNEW(r);Figures.Init(r, if);
END New;PROCEDURE Draw* (f : Figure);VARr : Rectangle;
BEGINr := 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 *)TYPEFigure*    = 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);
BEGINf.handle(f, msg);
END Handle;PROCEDURE Init* (f : Figure; handle : Handler);
BEGINf.handle := handle;
END Init;END Figures.

扩展了通用型图到一个特定的形状:
MODULE Rectangles;IMPORT Figures;TYPERectangle* = 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);VARr : Rectangle;
BEGINr := 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);
BEGINNEW(r);Figures.Init(r, Handle);
END New;END Rectangles.
 

转载于:https://www.cnblogs.com/yuyuanfeng/p/4478105.html

Oberon程序设计语言简介相关推荐

  1. 人工智能AI程序设计语言简介

    本文将介绍10多种不同的程序设计语言,以及如何下载它们的免费的编译器,(注意,是免费,而不是盗版),如果下载或者安装有问题,可以给我发邮件: ruoyu0088@sohu.com 20 年后,我们用什 ...

  2. 计算机基础(05)程序与程序设计语言

    5 程序设计基础 5.1 程序与程序设计语言 5.1.1 程序设计语言 @1 程序设计语言:用于编写计算机程序的语言,语言的机制是一组记号和规则 @2 程序设计语言的基本成分: 数据成分:描述程序所需 ...

  3. C++程序设计【一】之 C++ 语言简介

    文章目录 第一章:C++ 语言简介 一.C++ 语言的发展简史 二.C++ 语言的特点 1.与C语言相比,C++语言的优点 2.基本的输入 / 输出 3.头文件和命名空间 4.强制类型转换运算符 5. ...

  4. [iBoard 电子学堂][第二卷 C程序设计语言 ]第一篇 C语言简介

    一.C语言发展史   C语言是一种程序设计语言,由于它既有高级语言的特性,又有低级语言的特性,所以它既能编写基于操作系统的大型应用程序,也能编写直接操作硬件的程序,也就是我们称之为"裸奔&q ...

  5. 浅谈计算机程序设计语言,探讨计算机程序设计语言教学

    [文章摘要] 随着社会不断的发展与进步,计算机作为现代先进产物的代表,已经很快的进入到社会中的各行各业.而程序设计作为计算机的核心内容,也同样引起了大家的重视,同时计算机程序设计也是高校开设的一门重要 ...

  6. c语言1A,C程序设计语言1a.ppt

    C程序设计语言1a C 程 序 设 计 第一章 C语言概述 内容 计算机语言 C语言简介 C语言发展历史 C 语言特点 计算机程序 C语言程序 C语言程序的基本结构 C语言的语句 C语言的字符集和标识 ...

  7. 《从问题到程序:用Python学编程和计算》——1.2 Python语言简介

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第1章,第1.2节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1. ...

  8. c++学习书籍推荐《C++程序设计语言(特别版)》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <C++程序设计语言(特别版•十周年中文纪念版)>编辑推荐:十周年纪念版,体味C++语言的精妙与魅力,享受与大师的心灵对话.1979年,Biarn ...

  9. 数学模型转化为计算机语言,程序设计语言类课程教学选题方法探讨

    <程序设计语言类课程教学选题方法探讨>由会员分享,可在线阅读,更多相关<程序设计语言类课程教学选题方法探讨(6页珍藏版)>请在人人文库网上搜索. 1.程序设计语言类课程教学选题 ...

最新文章

  1. 已解决:Windows下Anaconda3卸载+下载+安装教程+tensorflow+keras+jupyternotebook
  2. [攻防世界 pwn]——level2
  3. 使用cloudera manager安装Oozie服务【详细步骤】
  4. .NET World——gPRC概览
  5. grubbs检测c语言,Grubbs算法检测离群值
  6. swift. 扩展类添加属性_Swift快速为类扩展属性
  7. Java中Comparable接口与Comparator接口
  8. 2D空间中求线段与圆的交点
  9. 相同源代码的html文件在本地和服务器端被浏览器请求时,显示的效果不一样!!!...
  10. 计算机网络-ip地址聚合后可用的地址数
  11. java中vo_java中的vo是什么
  12. 2021-4-25科学计算器开高次根号
  13. python简单实现爬取小说《天龙八部》,并在页面本地访问
  14. python猜拳代码_猜拳代码python
  15. Oracleji数据库、实例、用户、表空间、表之间的关系
  16. 毁人不倦-令人困惑的浏览器安全策略:同源策略
  17. 韩博士一键重装win8系统的图文步骤
  18. 5.4 创建 WBS
  19. bootstrap-datetimepicker时间控件
  20. 信息系统安全研究的内容包括哪些?

热门文章

  1. Folx Pro 5 Mac的专业下载工具,一款BT下载器
  2. oracle 19 rac启动,19c RAC启动报LRM-00109
  3. java实现对音量的控制,可Java的声音被用来控制系统音量?
  4. 酷狗音乐Kgm/Vpr解锁工具
  5. android还原代码混淆proguard日志的工具--retrace和SmartRetrace
  6. centos7手动分区
  7. Once Upon A Time!——我看《美国往事》
  8. 调整typora主题的页面大小
  9. 自制时钟代码 基于 cv2库
  10. 在审计工作中如何运用区块链技术