- 论吴文俊的数学史业绩
- 纪志刚 徐泽林
- 6239字
- 2021-03-28 07:36:36
关于优先、错误和正确——高德纳、“高德纳”、吴文俊,以及算法
◎ 延斯·霍伊鲁普(Jens Hayrup)(丹麦)
(丹麦罗斯基尔德大学)
首先必须声明我不会中文。我在此谈论的是一个可以通过我所熟知的语言来研究的主题。确切地说,本文所依据的材料的语言是英语和法语。
我从胡吉瑞(Jiri Hudecek)所著吴文俊政治传记中的几段话谈起:[Hudecek 2014:117f]
尽管希腊几何学是公理化的,但公理化并不以其在现代数学中的同样方式来作为希腊几何学的工作方法。也许是因为这些问题,吴在其后来的作品中引入了证明与算法的对立来作为替代。计算机科学家高德纳(Donald Knuth)的作品是这一转变中的关系重大的影响因素。吴研究过高德纳所编写的计算机教材《计算机程序设计的艺术》(The Art of Computer Programming,首卷问世于1968年,其后1969年第二卷,1973年第三卷),该教材由带有评注的算法组成,正如中国古代数学经典由问题-解答及其方法所组成。高德纳还发表过一篇关于古巴比伦算法的文章[Knuth 1972]。尽管吴文俊本人并没有引用高德纳的这篇文章,吴文俊的年轻同事李文林和袁向东[1982]在与吴文俊发表过文章[1982c]的同一卷文集内提到了该文。李文林,以及曾于1980年代初在北京学习中国古代数学的林力娜(Karine Chemla),都向我证实了该文对吴文俊想法的影响。[个人通信]
吴也可能从高德纳的卷首语中得到了启发:“帮助计算机科学得到尊敬的方法之一是展示它深深地根植于历史、并不是一个年幼的现象”。吴文俊本人转向历史有着类似的动机,尽管也可以说吴的行动方向与高德纳是相反的:通过展示那些根植于中国古代数学的东西来使得中国古代数学获得尊敬。高德纳对古巴比伦数学与计算机科学作了一系列类比:古巴比伦数学的六十进制计数法实际上是第一个浮点计数法;其代数算法是“机器语言”,对立于现代代数的“符号语言”;古巴比伦数学使用数值代数而不论其物理或几何意义。高德纳还将某些古巴比伦算法与“栈式计算机”或“宏展开”作对比。高德纳的这篇文章并不是严肃的算法史论文,它更是对于计算机科学之基本技术的久远先辈的一个提醒。但高德纳文章的最后一段对吴文俊来说一定非常有提醒性:
其他那些发展又是怎样的呢?古埃及人数学不错,考古学家也已经发掘出一些与巴比伦泥板几乎同样古老的纸草书。古埃及的乘法,本质上基于二进制系统,(……)尤其有趣(……)。然后是古希腊人,他们虽着重几何学,但也有欧几里得算法这样的东西;而该算法是最古老的非平凡算法。(……)还有古印度人和中国人;显然有多得多的东西可以讲。(Knuth 1972:676)
相比高德纳,吴仅强调了中国数学,显得狭隘了。也许甚至可以猜想,吴随后尝试证明一些中国古代算法相较西方算法在计算上的优越性的同时也是在试图剥夺古代文明“对手”们的一些荣耀。
高德纳的《计算机程序设计的艺术》是否关系重大的影响因素,对这一点我没有任何看法,而且它也与本文主题无关,无论如何它看起来只关乎从“机械化”到“算法”的术语转变。但是说“(高德纳对巴比伦数学的算法化解释)对吴文俊思想的影响”得到确证,倒是引起了我的怀疑。首先,根据胡吉瑞自己的一些引证[Hudecek 2014:116-119],吴并不吝于承认从他人获得的教益。其次,吴文俊强烈怀疑将“代数”归功于古巴比伦人的观点,以及斯特洛伊克(Dirk Struik)的这一信念:存在一体而不可分的“东方”数学。[Struik 1948:I,xii and passim]而高德纳既不怀疑古巴比伦代数的真实性,又暗示古巴比伦、埃及、印度和中国数学共属于同种(见前文胡吉瑞引高德纳语)。吴文俊当然很可能在某时已经知道高德纳1972年的文章,但在此事上,他看起来遵循了这样一个原则:用我的老朋友泰斯巴克(Marinus Taisbak)写给我的私人信件里的话来说,就是“为世界和平之利益,就不引述我所不同意的那些了”。无论如何,吴文俊自传里的一段话[Wu 2017]表明他对中国古代数学的算法化(一开始称为“机械化”)本质的洞见应当早于他被认为接触到高德纳文章的时间:
文化大革命期间,我被派到一个工厂制造计算机。我一开始震撼于计算机的能力。我还花时间研究中国古代数学并开始理解中国古代数学真正是什么。中国古代数学思想和方法的深刻和强大令我深为震惊。在这一影响下,我开始考察用机械化方法证明几何定理的可能性。
巴比伦
接下来让我们更仔细地看看高德纳关于古代算法说了什么,以判断其论述的质量,首先将其置于所引材料的年代背景来看,其次简短地从目前的算法观念(不过这多少有点时代错置)来评价他的论述。
如胡吉瑞所说,高德纳的文章并不是严肃的历史写作(我们还可以补充说既不是算法的历史也不是其他什么东西的历史);而高德纳本来就没打算把这文章写成历史论文。他开门见山地说:[1972:671]
帮助计算机科学得到尊敬的方法之一是展示它深深地根植于历史、并不是一个年幼的现象。因此自然要去看看存世的最古老的处理计算的文献,研究几乎四千年前的人们是怎么处理这一课题的。
高德纳的核心论点依托于对诺伊格鲍尔译文(当时可得的最佳译文—高德纳为了使其更易理解又做了一些调整)中的一些逐步计算的描述,在这一描述中,巴比伦文本看起来在指示一个单纯由算术步骤构成的过程。这些被用来说明:[p.672]
巴比伦数学家[…]擅于解许多类型的代数方程。但是他们没有和我们所使用的一样显明的代数符号;他们用一列逐步的估值规则来表达每一个公式,即用计算该公式的一个算法来表达该公式。实际上,他们用公式的“机器语言”表达来工作,而不是用符号语言。
同时,高德纳抱怨说他的例子[p.674]只表达了
“直线式的”计算,而不涉及任何的分支和决策。为了构造计算机科学家看来真正的非平凡算法,我们需要有一些影响控制流的操作。
高德纳忽略了这一点:恰恰是这一直线性允许他将一个计算—必然是无分支的—与他认为该计算所表达的算法视作同一。为了得到某种像带有停止标准的循环的东西,高德纳指向了关于复利的那些问题,高德纳说[Knuth,p.674],在复利问题里,“冗长而相当笨拙的过程读起来近乎类似一个宏展开”—显然只在熟悉“宏”的人眼中看来如此。巴比伦计算者只不过一再重复同一计算而已。
高德纳还评述说:[p.674]
我们找不到像“Go to step 4 if x<0”这样的测试语句,因为巴比伦人没有负数;我们甚至找不到像“Go to step 5 if x=0”这样的条件测试语句,因为他们并不把零当作数!没有这样的测试语句,取而代之地,事实上有分别的算法来对应不同的情况。(例如,[MKT I,312-314]中的一个算法与另一个实际上步步相同,只不过其中一个因参数之一为零而更简单。)
其实我们也找不到任何像“Go to step 4 if x>10”的测试语句—没有数字零与负数并不是巴比伦数学文本不含决策或分支的原因。没有就是没有。而存在“分别的算法来对应不同的情况”表明高德纳的算法概念用于巴比伦文献时是空洞的,并且掩盖了相关文本的真正特征。巴比伦文本所包含的例题既要是示范性的,也要以必然的灵活性来应用。一些文本甚至展现了不同的解法是可能的—于是古巴比伦文书AO 8862[MKT I,108-117]的头三题本可以用同一方法来解,但文本展示了三种不同技巧分别来解这三题。
高德纳不可能知道的是巴比伦文书并不是如诺伊格鲍尔和丹然的译文所示那样“指示单纯由算术步骤构成的过程”,所谓的“代数”文本实际上指示了方形几何面积的割补操作,在这一操作中,计算过程的正确性与基于符号的简单方程代数一样直观显然—具体例子可参阅[Hayrup 2017]。不过这是另一件事,与今天所谈问题无关。高德纳在1972年时可能已经知道的是公元前一千纪晚期的巴比伦数理天文学中描述行星运动的“之字形函数”(zigzag functions)应该是使用(带有分支的)固定算法来计算的—参阅[ACT I,30-32]。星表本身并没有解释相关算法,的确,只是宣称数字由相关算法算得。不过,天文“程序文本”解释了毫无疑问可称为算法的东西,经常带有“DO ...WHILE”类型的决策语句;一些例子(大部分是残篇)见于[ACT I,186-276]。一个保存得相当好的样本由布莱克-贝恩松(Lis Brack-Bernsen)和洪格尔(Hermann Hunger)发表[2008]。因此在较晚的时期写作了这些文本的巴比伦天文学家-僧侣充分能够算法化地思考—但这并不必然要求比他们早1200到1700年的书吏-教师也如此。
下面这段话也不能被采纳为古埃及、印度和中国数学包含算法的论据:[Knuth 1972:676]
其他那些发展又是怎样的呢?古埃及人数学不错,考古学家也已经发掘出一些与巴比伦泥板几乎同样古老的纸草书。古埃及的乘法,本质上基于二进制系统,(尽管他们的计算是十进制的,使用类似罗马数字的东西)尤其有趣;但在其他方面,他们使用笨拙的“单位分数”使他们远远落后于巴比伦人(…)。还有古印度人和中国人;显然有多得多的东西可以讲。
也不能认为高德纳掌握更多的信息而只是选择了不具体展示。巴比伦文书集成[MCT,MKT,TMB]除外,其参考文献里谈到历史的条目只有高中生读本艾伯伊(Asger Aaboe)的《早期数学史片段》(Episodes from the Early History of Mathematics)[1964],以及两本科普书:诺伊格鲍尔的《古代精密科学》(Exact Sciences in Antiquity)[1957]和范德瓦尔登(B.L.van der Waerden)的《科学苏醒》(Science Awakening)[1954],这三本书都无法为他在相关问题上提供更多的信息。
实际上,高德纳如此明智,必不至于宣称古埃及、印度和中国数学包含算法。最后这段话只不过是在呼应文章的开篇,呼吁人们“去看看存世的最古老的处理计算的文献,研究几乎四千年前的人们是怎么处理这一课题的”。胡吉瑞用来将吴文俊比作狭隘的那个“高德纳”是肤浅理解的产物。
古代中国
现在让我们看看吴文俊是如何研究中国古代数学的。显然,如果像高德纳阅读美索不达米亚文献那样阅读《九章算术》之类的文本,那么包含计算指示的后者因而可以被宣称“含有算法”。胡吉瑞看起来就是在这个层次上理解吴文俊对中国古算的“算法化”观点的——至少胡吉瑞2014年[Hudecek 2014:130]的解释没有超出这个范围。然而,吴文俊提到“中国古代数学思想和方法的深刻和强大令我深为震惊”,即便对于那些没有能力阅读他以中文发表的数学史著作的人而言,这也表明了他是在另一个层次上动心和行动的。而当高德纳试图以巴比伦数学来支持现代计算机科学的悠久历史时,抱怨巴比伦数学只有直线式计算的肤浅,这实际上使其不可能深刻也无法特别强大。
首先从《九章算术》里陈述计算程序(如开平方和开立方)的方式谈起。如林力娜(总结她更早的工作时)所说[1991:75],这些陈述有时候“使用了迭代、条件和赋值:这三个办法恰恰被高德纳在《基本算法—计算机程序设计的艺术》中列为基本概念”。并且,与高德纳强解说美索不达米亚数学文本里有条件句相比,条件句真实地存在于中国古代数学文本中—[Chemla 1987]的附录提供了相关文句的译文以及对应于相关段落的流程图。
此处不再深入细节—林力娜在此课题上从不同角度做出了比我所可能做到的好得多得多的工作,而且这不仅仅是因为她能够阅读原文。我将从“算法”问题移步到“算法文化”(algorithmic culture)问题,吴文俊强调的更是后者,尽管他一开始使用了不同的术语。
胡吉瑞复述或解释吴文俊的话语时说,“尽管希腊几何学是公理化的,但公理化并不是希腊几何学的工作方法”,此处的“工作方法”指十九世纪初以来的并被布尔巴基符号化了的那种公理化方式(吴文俊作为职业数学家肯定熟知布尔巴基)。从另一个方面看,公元前四世纪希腊几何学中发展起来的公理化文化,自欧几里得时代以来成为具有支配地位的思想观念[HØyrup 2018]。在这之前的数学文化里,虽然必须有论证,但论证的起点只是“(在某)局部显见(的东西)”(locally obvious),而不诉诸绝对的基本原则(first principles)。
巴比伦数学文化与此不同。它在教学性解释中也会使用“局部显见”,但总体来看并不明言(不过也许口头教学中会说)。其主要教学目的,如前所述,是通过示范性例题来训练学生,使他们能够尽可能灵活地运用范例所涉技巧—即高德纳所看见的“不同情况下使用不同的算法”。
而中国古代数学与以上几种都不一样—中国古算之理念,即便是在想传递理解的时候,也是“算法化的”(algorithmic)。这一点可以用《九章算术》第三卷[ed.,trans.Chemla & Guo 2004:280-311]来说明。该章处理按“程度”(degrees)—根据刘徽注,也就是按“级别”(ranks)—来进行分配。【《九章算术》卷第三“衰分”,刘徽注“衰分,差也”—译者注】
在法老时代的埃及,此类问题是周知的—莱茵德纸草书第63题[trans.Peet 1923:107]是为一例。计算法则也是一样的。而且该类型问题在中世纪晚期和早期现代欧洲的商业算术里也很常见,被归类在“公司法则”(rule of company)题类中,在这些材料里,解题技法也是一样的。但是《九章算术》有一点与众不同,而这一点恰恰反映了数学文化间的区别。《九章算术》第三卷一上来就用抽象术语给出了解题法则—一个(未分支的)算法,而接下来的若干例题,则是该法则之真正应用。这是《九章算术》的数学文化是“算法化的”的第一条线索。
在此意义上,婆罗摩笈多(Brahmagupta)和婆什伽罗二世(Bhaskara II)之间的梵文数学文本也经常(但并不总是)算法化的。但《九章算术》第三章还有更多独特之处。在第一、第三和第五题里,“权重”是立刻给出的,章首所述算法可以如常应用。而在第二题里,三者权重并没有直接给出,只告诉说两个比是1:2和1:2—并且在第四题里,五个权重两两之间的比依次是1:2、1:2、1:2、1:2和1:2。显然,应该先把各自权重计算出来,即第二题为1-2-4,第四题为1-2-4-8-16。但是,两题都没有解释这预先的计算,计算结果直接就被宣布了。也就是说,文本只解释章首算法所覆盖的那部分计算,算法之外的计算也就被排除在解释之外。这样看来,文本的目的是教算法—比教会如何计算更高的目标并不直接可见,但我们可以看到该目标是以算法为中介来进行的。
算法的中心性并不只是《九章算术》这一个作品的特征。尽管《九章算术》是最重要的经典之一,毕竟不能凭一部经典就说是数学文化。中国古代数学是实作(practice),而经典在其中发挥了重要作用。但不能就此将二者混为一谈。不过,编撰于1060年的《新唐书》描述了比《九章算术》晚了几乎一千年的科举考试,特别指出了考生们的任务之一是构造算法(construct algorithms)(引文见[Siu & Volkov 1990:92f])。对经典的注疏(如刘徽注)也解释了为什么算法是有效的,而新算法的创造(不特别地属于新的数学知识)是好几个作者吹嘘的东西(引文同上p.94)。因此,正如从古希腊风格到现代的数学倾向于将发现定理视为主要任务,中国古代数学眼中的任务是构造算法—而且显然是可证明为正确的且连贯协调的算法。
这样,从汉至唐的中国古代数学即便在此意义上也是算法化的,而在此意义上,古代印度、美索不达米亚和法老时代(以及中世纪阿拉伯和欧洲)的数学都不是算法化的。
因此,认真的局外人必定得到这样的结论:吴文俊是正确的——不仅仅在于他对中国古代数学特征的概括,还在于他认为此特征是中国古代数学所独有的。
同一个局外人(现在变成局内人了)必须下此结论:高德纳是错误的——批评吴文俊比所谓“高德纳”更狭隘则是错上加错。
以此二结论为条件,谁先谁后就没什么可讨论的了。毫无疑问明希豪森男爵在天上骑着炮弹时就已经是第一了,而怀特兄弟只是第二。
参考文献
[1] Aaboe,Asger.Episodes from the Early History of Mathematics [M].New York:Random House,1964.
[2] ACT:Otto Neugebauer.Astronomical Cuneiform Texts:Babylonian Ephemerides of the Seleucid Period for the Motion of the Sun,the Moon,and the Planets [M].London:Lund Humphries,1955.
[3] Brack-Bernsen,Lis,Hermann Hunger.BM 42484+42294 and the Goal-Year method [J].SCIAMUS,2008,9:3-23.
[4] Chemla,Karine,Guo Shuchun (eds).Les neuf chapitres.Le Classique mathématique de la Chine ancienne et ses commentaires [M].Paris:Dunod,2004.
[5] Chemla,Karine.Should They Read Fortran As If It Were English?[J].Bulletin of Chinese Studies 1,1987:301-316.
[6] Chemla,Karine.Theoretical Aspects of the Chinese Algorithmic Tradition (First to Third Centuries)[J].Historia Scientiarum 42,1991:75-98.
[7] HØyrup,Jens.Algebra in Cuneiform:Introduction to an Old Babylonian Geometrical Technique.Berlin:Edition Open Access,2017.
[8] HØyrup,Jens.Was Babylonian Mathematics Algorithmic?[J].2018:297-312 in Kristin Kleber,Georg Neumann & Susanne Paulus (eds),Grenzüberschreitungen:Studien zur Kulturgeschichte des Alten Orients.Festschrift für Hans Neumann zum 65.Geburtstag am 9.Mai 2018.Münster:Zaphon,2018.
[9] HØyrup,Jens.From the Practice of Explanation to the Ideology of Demonstration:an Informal Essay[J].Forthcoming in Gert Schubring (ed.),Interfaces between Mathematical Practices and Mathematical Education.New York:Springer,2019.
[10] Hudecek,Jiri.Ancient Chinese Mathematics in Action:Wu Wen-Tsun's Nationalist Historicism after the Cultural Revolution[J].East Asian Science,Technology and Society 6,2012:41-64.
[11] Hudecek,Jiri.Reviving Ancient Chinese Mathematics:Mathematics,History and Politics in the Work of Wu Wen-Tsun[M].London & New York:Routledge,2014.
[12] Imhausen,Annette.agyptische Algorithmen.Eine Untersuchung zu den mittel agyptischen mathematischen Aufgabentexten[M]. Wiesbaden:Harrassowitz,2003.
[13] Knuth,Donald E..“Ancient Babylonian Algorithms”.Communications of the Association of Computing Machinery 15,1972:671-677,with correction of an erratum in 19,1976:108.
[14] MCT:Otto Neugebauer & Abraham Sachs.Mathematical Cuneiform Texts[M].New Haven,Connecticut:American Oriental Society.
[15] MKT:Otto Neugebauer,Mathematische Keilschrift-Texte[M].3 vols.Berlin:Julius Springer,1935,1935,1937.
[16] Neugebauer,Otto,1957.The Exact Sciences in Antiquity[M].Second edition.Providence,Rh.I.:Brown University Press.
[17] Peet,T.Eric.The Rhind Mathematical Papyrus,British Museum 10057 and 10058 [M].Introduction,Transcription,Translation and Commentary.London:University Press of Liverpool,1923.
[18] Ritter,Jim.Reading Strasbourg 368:A Thrice-Told Tale[J].Karine Chemla (ed.),History of Science,History of Text.Dordrecht:Kluwer,2004:177-200.
[19] Siu,Man-Keung,& Alexe Volkov.Official Curriculum in Traditional Chinese Mathematics:How Did Candidates Pass the Examinations?[J].Historia Scientiarum 9,1999:85-99.
[20] Struik,Dirk J.A Concise History of Mathematics[M].2 vols.New York:Dover,1948. TMB:Fran?ois Thureau-Dangin,Textes mathématiques babyloniens[M].Leiden:Brill.van der Waerden,B.L.Science Awakening.Groningen:Noordhoff,1954.
[22] Wu,Wenjun,2017.Autobiography of Wentsun Wu (1919-2017)[J].written 2006.Notices of the AMS 64,2017:11,1319-1320.
(2018年12月定稿,郑方磊译)