前言

这里,我们打算对虚幻4 中蓝图虚拟机的实现做一个大概的讲解,如果对其它的脚本语言的实现有比较清楚的认识,理解起来会容易很多,我们先会对相关术语进行一个简单的介绍,然后会对蓝图虚拟机的实现做一个讲解。

术语

编程语言一般分为编译语言和解释型语言。

编译型语言

程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等.

解释性语言

编写的程序不进行预先编译,以文本方式存储程序代码。在发布程序时,看起来省了道编译工序。但是,在运行程序的时候,解释性语言必须先解释再运行。

然而关于Java、C#等是否为解释型语言存在争议,因为它们主流的实现并不是直接解释执行的,而是也编译成字节码,然后再运行在jvm等虚拟机上的。

 

UE4中蓝图的实现更像是lua的实现方式,它并不能独立运行,而是作为一种嵌入宿主语言的一种扩展脚本,lua可以直接解释执行,也可以编译成字节码并保存到磁盘上,下次调用可以直接加载编译好的字节码执行。

什么是虚拟机

虚拟机最初由波佩克[a]与戈德堡定义为有效的、独立的真实机器的副本。当前包括跟任何真实机器无关的虚拟机。虚拟机根据它们的运用和与直接机器的相关性分为两大类。系统虚拟机(如VirtualBox)提供一个可以运行完整操作系统的完整系统平台。相反的,程序虚拟机(如Java JVM)为运行单个计算机程序设计,这意謂它支持单个进程。虚拟机的一个本质特点是运行在虚拟机上的软件被局限在虚拟机提供的资源里——它不能超出虚拟世界。

网友评论