在很大一部分 Mathematica 用户眼中, Mathematica 只不过是一个兼有符号操作和数值计算功能、用户界面良好的计算软件而已,由于中文资料的相对缺乏,这一点在中文用户中尤其严重。稍微挑选基本在互联网上可见的中文本土教程,比如张韵华、王新茂教授等人编著的 Mathematica 7 实用教程,徐安农所编写的 Mathematica 数学实验 等等,基本上从软件教学的层面编写的。从编程语言、计算机科学角度编写的中文资料,即使有,也是相当贫瘠的。 实际上,尽管 Mathematica 脱胎于 Stephen Wolfram 最早的 SMP 符号操作程序,但却是作为一种编程语言被设计的。Mathematica 的底层解释器大部分由 C 语言写成,此外一些极端要求速度的基础计算函数也由 C 语言支持, 而其他大量的实用函数以及包由则是由 Mathematica 编程语言来实现的。解释器和这些函数构成了所谓的 Mathematica Kernel。Mathematica 这个生态系统的另外一个重要组成部分是前端(Front End),大量美轮美奂的数学公式显示,图形绘制,文档排版功能都极大程度地依赖前端,而前端和 Kernel 之间通过 MathLink 进行交互。Front End 和 Kernel 被设计得相当独立,尽管并不普遍,但是Front End实际上是可以被当做独立的软件来使用的,用户可以在上面编辑文字公式,生成漂亮的文档、演示文稿,绘制图形等等。 个人感觉,学习 Mathematica 编程,至少有三点是一定需要了解的:“Everything is Expression” 的语言设计原则、“规则替换”的系统实现机理和“模式匹配”引擎的强大效用。 从设计上来说,Mathematica 遵循 “Everything is Expression” 的哲学,这种哲学可以大大简化解释器的设计,也可以产生“统一”的数学美感。关于这一点,有些读者可能会知道对于任何公式函数以及符号,当我们用 FullForm 这个函数作用于其上的, 就能求出该公式函数或符号的“完全形式”,而 FullForm 通常遵循这样的形式: head[arg1, arg2, ..., argn]. 这就是一个 Mathematica 表达式, 甚至对...