代数、算法和语言



最近读了 Weil 的自传,之前还读了一点代数学书。我渐渐意识到,代数之于数学的必要性。准确地说,代数就是抽象之源。

代数很像算法。或者说代数就是算法,即依照规则的操作。有一种说法是,algorithm 一词就是 algebra 的讹传。不过,它们确实非常像。例如,线性代数中学习过如何计算矩阵的逆的。如果我没记错的话,是将待计算的矩阵与同样尺寸的单位阵一左一右并置。然后利用高斯消去法对左边的矩阵进行操作,同时每一步都在右边的矩阵上复制对左边矩阵的操作。当左边的矩阵变为单位阵时(如果原矩阵是满秩的,则必然会如此),右边的矩阵就是原矩阵的逆。这与计算机算法异曲而同工。它们都是按照一个机械操作进行的,哪怕对于完全不懂数学或计算机科学的人,仅仅按照“操作说明”也能够完成任务。并且,它们都会在某个时刻抵达结果。有时结果是“没有结果”,例如原矩阵不满秩,但总之“停机”了。

另外,代数很像语言。之前在喜洲的院子里(晒着太阳)读过一本讲数学和语言学的书(即《数学犹聊天》)。作者认为人类的数学能力正是源于大脑处理语言的能力。从现象上看,这么说有道理。语言也是依循规则的产物。另一方面,当我们初学一门语言时,常常需要记忆很多词法和语法规则,在对话时需要常常回忆,这很像初学一门数学课时的情况,需要不断回忆代数规则(例如三角函数的导数)。但当我们变得熟练时,就不需要回忆规则了,而是形成了“语感”,能够脱口而出。这很像小平邦彦所说的“数感”,这是熟稔与代数规则所致。从这个角度看,数学家与工匠别无二致,无外乎是熟稔与某个领域的规则的人。

而且,正如代数一样,语言不也是一种对现实的抽象吗?