操作系统设计/语言作为操作系统演变
在 VLSI 出现之前,基本上只有两种类型的计算机:通用字符型计算机和大型字长数值计算器。但是,当 VLSI 使得计算的单位成本降到足够低时,人们开始考虑专门的计算机,这些计算机专为做好一件事而设计和制造。一群人决定设计一台个人电脑,一台能够被新手使用,并且与更复杂的计算机一样好用的机器。另一群人希望将人工智能程序转移到更紧凑的机器人上,而不是将机器人连接到大型机。他们不想在这些机器上安装包含数千行代码的程序,而是希望降低系统的复杂性和成本。当然,现在我们看到计算机被整合到我们的手机中,但设计师仍然希望降低成本。
降低成本的一种方法是将一些基本的操作系统命令集成到解释型语言中。成功完成此操作的语言包括:BASIC、Lisp、Smalltalk 和 Java。
第一个已知的例子是 Altair 套件计算机,它由微软用一个名为“独立 BASIC”的程序编程。本质上,独立 BASIC 是一个 BASIC 解释器,将操作系统命令集成到语言中,因此不需要单独的操作系统。虽然我没有见过这个版本,但我确实在 Commodore 64 上看到过类似的程序,它集成了许多命令,例如 Load、Run、Continue、Stop 和 Reset,以及 Peek 和 Poke。本质上,BASIC 假设加载到其中的任何内容都是 BASIC 程序,除非它是使用 load absolute 变量加载的。它会自动进行词法分析,将每个命令转换为一个标记,并在无法转换特定命令时警告操作员。当程序成功以标记形式加载后,它会等待运行命令开始。当它运行时,它从标记化程序的开头开始,依次解释每个标记。通过将一些命令提升到键盘上的按键,就可以将程序加载到计算机中并运行它。
在微软成功制作独立 BASIC 程序后不久,一些人工智能研究人员决定用 LISP 做类似的事情。通过创建一个定制芯片,它有利于 Lisp 解释中的某些阶段,他们能够显著减小基于 Lisp 的机器人的尺寸。迄今为止,Lisp 仍被用于人工智能编程,因为作为一种列表处理语言,它可以加速列表型设备(例如规则库和专家系统)的处理速度。
Smalltalk 以其极小的解释器而闻名。基于面向对象编程的概念,它是一种非常有效的语言,可以作为专用计算机的基础。然而,面向对象编程在概念上很难学习,因此 Smalltalk 计算机从未拥有庞大的市场份额。
也许作为操作系统的最成功的解释型语言是 Java。这门语言旨在将 C 和 Smalltalk 的优点结合在一起。它基于虚拟机,虚拟机可以像用 C 语言编写一样轻松地用机器语言编写。通过将 Java 语言直接安装到硅片上,它使得在非常紧凑的单元上实现复杂的处理和网络服务成为可能。实际上,Java 已被用于智能手机,为相对便宜的蜂窝电话电路提供互联网接口。
以下内容是由原始作者留在该文件中的。可能是作为整理他对 Java 的想法的一种方式。我正在考虑将其删除,因为它对 Java 的描述过于详细,而对操作系统的描述不足。
使用 Java 编程入门,第三版目录
这是使用 Java 作为教学语言的在线入门编程教材的完整目录。有关该教材的更多信息,请参见其首页。该教材可在线获取:http://math.hws.edu/javanotes/.
前言
第二版前言
第 1 章:概述:心理景观
第 1 节:取指令和执行循环:机器语言第 2 节:异步事件:轮询循环和中断第 3 节:Java 虚拟机第 4 节:程序的基本构建块第 5 节:对象和面向对象编程第 6 节:现代用户界面第 7 节:互联网和万维网关于本章的测验第 2 章:小型编程 I:名称和事物
第 1 节:基本 Java 应用程序第 2 节:变量和基本类型第 3 节:字符串、对象和子例程第 4 节:文本输入和输出第 5 节:表达式的细节编程练习关于本章的测验第 3 章:小型编程 II:控制
第 1 节:块、循环和分支第 2 节:算法开发第 3 节:while 和 do..while 语句第 4 节:for 语句第 5 节:if 语句第 6 节:switch 语句第 7 节:介绍小程序和图形编程练习关于本章的测验第 4 章:大型编程 I:子例程
第 1 节:黑盒第 2 节:静态子例程和静态变量第 3 节:参数第 4 节:返回值第 5 节:工具箱、API 和包第 6 节:关于程序设计的更多内容第 7 节:关于声明的真相编程练习关于本章的测验第 5 章:大型编程 II:对象和类
第 1 节:对象、实例变量和实例方法第 2 节:构造函数和对象初始化第 3 节:使用对象编程第 4 节:继承、多态和抽象类第 5 节:关于类的更多细节编程练习关于本章的测验第 6 章:小程序、HTML 和 GUI
第 1 节:基本 Java 小程序第 2 节:HTML 基础知识和 Web 第 3 节:图形和 paint 方法第 4 节:鼠标事件第 5 节:键盘事件第 6 节:介绍布局和组件第 7 节:回顾:Java 1.0 事件模型编程练习关于本章的测验第 7 章:高级 GUI 编程
第 1 节:关于图形的更多内容第 2 节:关于布局和组件的更多内容第 3 节:标准组件及其事件第 4 节:使用组件编程第 5 节:线程、同步和动画第 6 节:嵌套类和适配器类第 7 节:框架和对话框第 8 节:展望:Swing 和 Java 2.0 编程练习关于本章的测验第 8 章:数组
第 1 节:创建和使用数组第 2 节:使用数组编程第 3 节:向量和动态数组第 4 节:搜索和排序第 5 节:多维数组编程练习关于本章的测验第 9 章:正确性和健壮性
第 1 节:介绍正确性和健壮性第 2 节:编写正确的程序第 3 节:异常和 try...catch 语句第 4 节:使用异常编程练习关于本章的测验第 10 章:高级输入/输出
第 1 节:流、读取器和写入器第 2 节:文件第 3 节:使用文件编程第 4 节:网络第 5 节:网络应用程序编程练习关于本章的测验第 11 章:链接数据结构和递归
第 1 节:递归第 2 节:链接对象第 3 节:堆栈和队列第 4 节:二叉树第 5 节:一个简单的递归下降解析器编程练习关于本章的测验附录 1:从 Java 到 C++
第 1 节:C++ 编程基础第 2 节:C++ 中的指针和数组第 3 节:C++ 中的类和对象附录 2:关于 Java 编程环境的一些说明
附录 3:文本中所有示例的源代码
新闻和勘误
David J. Eck ([email protected]), 2000 年 5 月