6.4 TOY虚拟机

考虑到TOY是一个虚拟机,我们如何能够运行和调试程序呢?在本节中,我们将为这个问题提供一个完整的答案,然后讨论其意义。在本节中你将看到,我们可以轻松地编写一个称为虚拟机的Java程序,它可以运行任何TOY程序。事实上,正如你所看到的,虚拟机定义了TOY的实现方式,它精确地描述了每个TOY指令的效果,并且始终保存着TOY机器的完整的状态信息。

虚拟机定义的是这样的一种机器:它像真机一样执行程序,但不需要与任何物理硬件直接对应。通常我们使用这个术语来宽泛地指代机器以及实现它的软件(或硬件)。

虚拟机的概念在一开始或许会令人不太适应,为确保读者能够完全理解这一概念,我们会完整地讲述这一概念的所有细节,而虚拟机的概念也是第5章中讨论的计算理论基本思想的核心。事实上,邱奇-图灵理论意味着任何计算系统都可以执行相同的计算,只要内存足够大,因此每台计算机都可以视作其他计算机的虚拟机。

虚拟机的核心概念是处理程序的程序。你可能还记得,在停机问题的证明中,我们引入了一个想法,即一个程序可以将另一个程序作为输入。这个想法起初似乎有点奇怪,实际上,这个想法是一个基本的计算机科学概念,我们将在本节中详细探讨。

作为热身,我们讨论一些简单的TOY编程概念的实际应用,其中包括一个重要的和难以避免的常见问题。我们会讨论这些问题与Java存在很多相似与关联,进而开始讨论本节的核心部分TOY虚拟机。最后我们讨论这一模型对现代和未来计算机的影响。

本节涵盖了很多方面的内容,从TOY到停机问题,再到服务器农场和云计算,接下来我们将会揭示这些概念和术语背后的深层含义,并诠释它的能力、简洁以及重要性。篇幅所限,我们无法对它们进行详尽的解释,但对于从事计算的人来说,理解这些术语非常重要。

启动和导出 ...

Get 计算机科学导论:跨学科方法 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.