2010年9月18日

作用域与生存期

摘要: 在《程序设计语言原理》(第8版)中,作者这样描述作用域和生存期这两个经常搅在一起的概念。 有时,变量的作用域与生存期似乎是相关的。例如,考虑一个在不包含方法调用的Java方法中声明的变量。这个变量的作用域是从它的声明到这个方法的结尾。它的生存期开始于方法进入之时,终止于方法执行完毕之时。虽然变量的作用域与生存期显然不是同一件事情:静态作用域是文本或空间的概念,而生存期是时间的概念,但至少在这个情形... 阅读全文

posted @ 2010-09-18 14:21 胡是 阅读(694) 评论(0) 推荐(0) 编辑

语言设计中的折中(权衡tradeoff)

摘要: 在《程序设计语言原理》(第8版)中,作者这样描述语言设计中的取舍问题。 可靠性 vs 执行代价 两个相互矛盾的标准时可靠性与执行代价。例如,Java语言的定义要求:必须对所有数组元素的引用进行检测,以保证所有下标都在合法的范围之内。这个步骤给包含大量数组元素引用的Java程序增加了很大的执行代价。C语言不要求进行下标范围的检测,所以C程序的执行速度比语义上相同的Java程序要快;当然Java程序则... 阅读全文

posted @ 2010-09-18 13:17 胡是 阅读(599) 评论(0) 推荐(0) 编辑

Lisp引入的程序设计语言重要概念

摘要: 递归函数 Lisp编程是基于函数和递归的(解决的是部分递归函数集),而不是基于赋值和循环的。 列表 早期Lisp的基本数据结构是 cons cell 。现代Lisp中 cons cell 主要是用于构建列表,而把列表作为基本数据结构。列表这种数据结构非常有用。另外,Lisp把内存看成很多 cons cell 的集合,在此基础上构建出的非数值编程抽象机比用数组构建出的要有用的多,数组是计算机科学的早... 阅读全文

posted @ 2010-09-18 11:31 胡是 阅读(226) 评论(0) 推荐(0) 编辑

Lisp 的 Mark-and-Sweep 垃圾收集

摘要: 把所有的标志位 置 0; 从程序直接访问的内存单元开始,顺着所有的指针链,把所经过的所有单元的标志位置为 1; 把所有标志位仍是 0 的单元放在空闲空间列表里面。 阅读全文

posted @ 2010-09-18 11:21 胡是 阅读(242) 评论(0) 推荐(0) 编辑

定义程序语言语义的三种方法

摘要: Interpretive : meaning is expressed in terms of some simple abstract m/c. Axiomatic : where rules describe data values given various objects before and after execution of various language features. De... 阅读全文

posted @ 2010-09-18 10:30 胡是 阅读(277) 评论(0) 推荐(0) 编辑

表达式、语句和声明

摘要: Expressions A syntactic entity that may be evaluated to determine its value. Statement A command that alters the state of the machine in some explicit way. Declaration A syntactic entity that introd... 阅读全文

posted @ 2010-09-18 10:26 胡是 阅读(189) 评论(0) 推荐(0) 编辑

导航