1.12.2 基本的内部结构Mathematica 使用的内部表示法 当用户在 Mathematica 插入输入时,一个数据结构被建立在计算机的内存中来表示 已经输入的表达式. 一般地,表达式的不同部分被存贮在内存的不同地方.例如,对一个列表如 {2, x, y + z},其 "主要部分" 将被存在一个地方,而每个实际元素将被存在 不同的地方.列表的主要部分仅由三个指明计算机内存地址的指针组成. 在该地址上,形式列表元素的实际表达式能被找到.这些表达式依次包含 指向子表达式的指针.当人们达到一个目标,例如一个数或一个串(该目标 以二进制类型直接存贮在内存中),这时指针链结束. 对于 Mathematica 运算至关重要的是符号,例如 x 的表示方法.当x出现在 表达式中时,Mathematica 用一个指针代表它.但这个指针总是指向 内存中的同一个地方ꆪꆪ由Mathematica 进程定义的所有符号中心表的入口. 这个表是关于每个符号所有信息的存贮器. 它包含指向给出符号名的串的指针, 以及指向给出该符号计算规则的表达式的指针. Mathematica 内存管理的基本原则 Mathematica 使用的每一块内存都保持着当前指向它的指针计数. 当这个计数成为零时,Mathematica 知道这块内存不再被使用,并立即使 这块内存对新的任务是可用的. 这个策略基本上保证内存不被浪费,Mathematica 使用的任何一块内存 实际上正存贮着需要进入用户的 Mathematica 进程的数据. Mathematica 的基本行为 在 Mathematica 的心脏处有一个在概念上很简单的称为运算器的程序, 它取出表达式中的每一个函数并对其进行计算. 当函数是建立在 Mathematica 中的数以千计的函数中的一个时,运算器所做的事 情是直接执行 Mathematica 系统中的内部代码,这个代码被建立来执行相应于 该函数的运算.然后建立一个新的表达式来代表结果. 使 Mathematica 成为自包含系统的基本特征 Mathematica 内部函数的一个重要特征是它们支持通用运算.这意味着 在这些函数之外,用户可以构建程序进行计算机能够做的任何类型的运算. 这样,Mathematica 内部函数的一个小的子集合对支持通用运算已经 很充分了. 但具有函数的整个集合使得在实际运用中更容易构建程序. 然而,因为 Mathematica 支持通用计算,故用户决不要修改其内部函数, 执行特定任务时,用户必须做的事情是以适应的方式将这些 函数结合起来. 通用计算是所有标准计算机语言的基础. 但许多语言依赖于编译的思想. 例如,使用 C 或 Fortran,用户首先写出程序,然后编译它生成能在计 算机上实际执行的机器代码. Mathematica 不需要用户进行编译:一旦用户输入完表达式. 表达式中的函数 能立即被执行. Mathematica 常常对用户输入的表达式进行预处理,安排事务以便 随后的运用尽可能的有效. 但这样的预处理决不影响生成的结果,且很少 能明显地被看到.
|