基本的内部结构

数字(numbers)二进制数字序列
字符串(strings)字符码字节或字节对序列
符号(symbols)指向中心符号表的指针
一般表达式(general expressions)指向头和元素的指针序列

Mathematica 使用的内部表示法.

当用户在 Mathematica 插入输入时,一个数据结构被建立在计算机的内存中来表示已经输入的表达式.

一般地,表达式的不同部分被存储在内存的不同地方. 例如,对一个列表如 ,其"主要部分"将被存储在一个地方,而每个实际元素将被存储在不同的地方.

列表的主要部分仅由三个指明计算机内存地址的指针组成. 在该地址上,形式列表元素的实际表达式能被找到. 这些表达式依次包含指向子表达式的指针. 当人们达到一个对象,例如一个数或者一个字符串时(该对象以二进制类型直接存储在内存中),这是指针链结束.

对于 Mathematica 运算至关重要的是符合,例如 的表示方法. 当 出现在表达式中间时,Mathematica 用一个指针代表它. 但是,这个指针总是指向内存中的同一个地方——由 Mathematica 进程定义的所有符号中心表的入口.

这个表是关于每个符号所有信息的存储器. 它包含指向给出符号名的串的指针,以及指向给出该符号计算规则的表达式的指针.

• 一旦内存中的数据不再被引用就使内存重新循环.

Mathematica 内存管理的基本原则.

Mathematica 使用的每一块内存都保持着当前指向它的指针计数. 当这个计数降为零时,Mathematica 知道这块内存不再被使用,并且立即使这块内存可用于新的任务.

这个策略基本上保证内存不被浪费,Mathematica 使用的任何一块内存实际上正存储着用户需要访问的 Mathematica 进程数据.

• 建立相应于用户给出的输入表达式.
• 使用对于该对象的所有已知规则处理该表达式.
• 生成相应于结果表达式的输出.

Mathematica 的基本行为.

Mathematica 的中心处有一个在概念上很简单的称为运算器的程序,它取出表达式中的每一个函数,并且对其进行计算.

当函数是建立在 Mathematica 中的数以千计的函数中的一个时,运算器所做的事情是直接执行 Mathematica 系统中的内部代码. 这个代码被建立来执行相应于该函数的运算. 然后建立一个新的表达式来代表结果.

Mathematica 内部函数支持通用的运算.

使 Mathematica 成为自包含系统的基本特征.

Mathematica 内部函数的一个重要特征是它们支持通用运算. 这意味着在这些函数之外,用户可以构建程序进行计算机能够做的任何类型的运算.

这样,Mathematica 内部函数的一个小的子集合对于支持通用运算已经很充分了. 但是具有函数的整个集合使得在实际运用中更容易构建程序.

然而,因为 Mathematica 支持通用计算,故而用户决不要修改其内部函数,执行特定任务时,用户必须做的事情是以适当的方式将这些函数结合起来.

通用计算是所有标准计算机语言的基础. 但许多语言依赖于编译的思想. 例如,使用 C 或者 Fortran 是,用户首先写出程序,然后编译它生成能在计算机上实际执行的机器代码.

Mathematica 不需要用户进行编译:一旦用户输入完表达式,表达式中的函数能立即被执行.

Mathematica 常常对用户输入的表达式进行预处理,安排事务以便随后的运用尽可能的有效. 但是这样的预处理决不影响生成的结果,而且很少能明显地被看到.

New to Mathematica? Find your learning path »
Have a question? Ask support »