摘要:Java Syntax Specification Programs <compilation unit> ::= <package declaration>? <import declarations>? <type declarations>? Declarations <package dec
阅读全文
摘要:Live variable analysis In compiler theory, live variable analysis(or simply livenesss analysis) is a classic data-flow analysis performed by compilers
阅读全文
摘要:λ演算 λ演算(英文 lambda calculus, λ-calculus)是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义,函数如何被应用以及递归形式系统。它在20世纪30年代首次发表。Lambda演算作为一种广泛用途的计算模型,可以清晰地定义什么是一个可计算函数,而任何
阅读全文
摘要:结构化操作语义 50年代是计算机语言兴起的年代,这一阶段的早期,计算机语言的设计往往要强调其"方便"的一面,而比较忽略其"严格"的一面,因而对语言的语义,甚至语法,未下严格的定义,从语言设计者和语言使用者对同一语言的语义缺乏共同的理解,造成一定程度的混乱。后来,在50年代和60年代间,面向语法的编译
阅读全文
摘要:函数副作用 在计算机科学中,函数副作用指当调用函数时,除了返回函数值之外,还对主调用函数产生附加的影响。例如修改全局变量(函数外的变量)或修改参数。 函数副作用会给程序设计带来不必要的麻烦,给程序带来十分难以查找的错误,并降低程序的可读性。严格的函数式语言要求函数必须无副作用。 下面是函数的副作用相
阅读全文
摘要:闭包的概念、形式与应用 什么是闭包? 闭包并不是什么新奇的概念,它早在高级语言开始发展的年代就产生了。闭包(Closure)是词法闭包(Lexical Closure)的简称。闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)。 函数只是一段可执行代码,编译后就"固化"了,每个
阅读全文
摘要:数据流 引子 编译器后端会对前端生成的中间代码做很多优化,也就是在保证程序语义不变的前提下,提高程序执行的效率或减少代码size等优化目目标。优化需要依靠代码分析给出的"指导信息"来相应地改进代码,而代码分析中最重要的就是数据流分析。另外数据流分析是程序静态分析的基础。所以掌握数据流分析对编译后端极
阅读全文
摘要:信息流 信息安全需要解决的问题 访问控制问题:访问控制的基本任务时保证对客体的所有直接访问都是被认可的。它通过对信息的读,写,更改和删除的控制,保证系统的安全性和有效性,以免受偶然的和蓄意的侵犯。访问控制是一套为信息系统规定的安全策略和支持这些安全策略的执行机制来实现的。 信息流控制问题:信息流是D
阅读全文
摘要:图灵机 图灵机(英文: Turing machine),又称确定图灵机,是图灵与1936年提出的一种抽象计算模型,其更抽象的意义为一种数学逻辑机,可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器。 图灵机的基本思想 图灵的基本思想是用机器来模型人们用纸笔进行数学运算的过程,他把这样的过程看作下列
阅读全文