|||
谈到类型论,就不得不谈到一本书,一本计算机程序员狂热推崇的书:《计算机程序的结构与解释》(Structure and Interpretation of Computer Programming,简称SICP)。
对于不了解计算机专业的人来说,这本书也许就是一本和其它专业书籍一样的入门教科书,和外行人无关;而计算机专业或者正在从事IT产业的专业人员则相信,这是一本高深的“武功秘籍”,书中隐藏着学得上乘武功的不二法门。
不过我在这里谈这本书,并不是想谈计算机科学,而是书或者说是书的作者所要传达的思想,一种超越了技术层面,超越了专业知识层面,可以和任何非专业人士分享的东西——一种类似哲学的东西。康德曾经用一个特殊的术语表示他所理解的哲学:Weltweisheit,直译过来就是关于世界的智慧。这样的智慧可以隐藏在任何人类的知识体系中,而我这里所要传达的,毋宁说就是这种“世界的智慧”。
这里特别引用书中引言中的一个段落:
“研究这个问题的基础是基于我们对“计算机科学”所持的理念:“计算机科学”不是科学,它的重要性也几乎和计算机无关。计算机革命是我们思维方式的革命,是我们思维表达方式的革命。这个变革的本质是被称作“程序化知识理论”的出现——从指令性的观点研究知识的结构,这相对于数学学科从声明式观点的研究。 数学为处理“是什么”这一概念提供了基础框架,而计算则正是从“如何做”的角度为“知识结构”提供了框架。”
“计算机科学”不是“科学”,而且和“计算机”无关,多么惊世骇俗的论断!作者不是在哗众取宠,博取眼球,而是在阐述一种思想——一种关于知识定义的思想;世间有两种知识:静态的定义性、直陈式知识和动态的程式化知识。前者的性质是“什么”,而后者的性质是“如何”。这两种知识的本质,一种我们可以看做是某个世界模型内的对象,另一种则是“流程”——完成一个特定任务的过程。几千年来的所有知识,大部分集中在前者,只有到了20世纪,由逻辑学的革命所引发数学基础问题,从而产生的数学哲学,使我们对迄今的知识体系有了全新的认识,这种认识,以哥德尔定理的形式让我们看到了形式系统的全貌,最终产生了形式系统的自动化形式——计算机科学,这就是“计算机革命是我们思维方式的革命”的真正含义。20世纪中叶兴起的信息革命,在某种程度上是对人类迄今为止的知识体系的再定义。我们对世界知识的认识,从静态走向动态,从具体走向抽象,从而将静止不变的对象和因语境而改变的过程看做是既有联系又有差异的“对立统一”体。这个思想,我觉得就是类型论的本质。
在前一篇小文中,我曾提到现代中国人知识结构的一种失衡,“前端知识”与“后端知识”的平衡差。所谓前端知识指的就是书本中陈述的事实、定义、定理以及支持这些断言的习题。而另一方面,这些知识所对应的另一个世界——思想,知识背后所隐藏着的对世界的理解,康德所理解的哲学——世界的智慧,我称之为“后端知识”。举个例子,这里有三个表达式:
a 、{a}、 {{a}}
能解释它们的意义吗?
我的意思是请不要告诉我第一个是变量/常量/元素a、第二个是含有a的集合、第三个是含有a的集合的集合,而是请你告诉我这些抽象符号背后所要“表达”的意义。
其实,如果要把这种状况说清楚,就需要明确一对概念:对象语言和元语言。
任何一个知识体系,其内容都是关于这个知识体系概念的定义、关于体系内各个概念之间的关系;其形式则是一套“专业”语言,有着一套对应该知识体系特有概念的术语、公式和符号。所有知识体系内的概念都可以用术语准确定义,从一个概念到另一个概念可以用一套逻辑规则推理得到。我们通常意义上的学习大致就是对这个知识体系中概念的理解、术语的记忆、概念间逻辑关系的把握——如何从一个概念得到另一个概念,如何再反推回去等。我们所学到的是知识体系内的逻辑结构,是术语与概念的对应,例如看到{}就能想到集合。这种描述特定知识的语言我们通常称作“对象语言”,或者说“目标语言”;另一方面,我们需要理解这个语言本身构建的机制,以及这个知识体系所对应的另一个维度的世界,这种语言通常称作“元语言”(metalanguage)。这两种语言的差别,不是量的差别,不是概念之间的差别,而是“阶”的差别,如果说集合论语言是一阶的话,那么描述这种语言的语言就是二阶。而上例中的三个符号也显示了“阶”的差别。数学书中通常为了区分概念“阶”的差异用不同种类的字母,基本对象、原子对象、常量、变量通常用小写拉丁字母、而由这些量的运算所得到结果、或者说聚合、复合对象,如向量、矩阵等多用大写拉丁字母,而由这些大写字母所代表的复合对象的聚合形成的对象,则用大写希腊字母,这虽然只是一种习惯不是规定,但反映了书作者心目中对这些数学对象“阶”差异的认知。
“阶”的概念反映到我们对世界建模的模型体系上就是三个层次:
一、确定其基本元素,原子对象;
二、确定将基本元素组合、成为复合元素的手段和规则;
三、建立符号系统,亦即、对系统内各种对象的命名系统,这个过程称之为“抽象”。
在新的知识体系下,我们建模世界的原子对象有两种,一种是未具名的原子个体,另一种是“过程”。而过程和原子个体的唯一区别是前者上下文敏感的、或者说需要“施用”到另外一个对象来确定该对象的实质存在(identity)。而“阶”的差异,即可以体现个体和过程的差异,也可以反映原子对象和组合对象之间的差异。这些,无论在抽象的哲学、还是具体的、和某个世界有紧密联系的具体科学中都可以找到相应的实例。
“阶”使我们认识到了知识体系中各个对象之间的差异,这是我们为“世界”建模时必须时刻把握的问题,这个问题大、可以使整个数学科学为之沮丧、疯狂、兴奋几十年,小可以影响到我们日常的认知。例如,你拿着一把改锥上螺丝,如果有人让你反着拿,让改锥的把柄对着螺丝,你会怎么想?一定很荒唐,对不对?为什么?因为这偏离了人的常识认知;其实这也是“类型”的问题,在我们的模型中,正着拿改锥和反着拿改锥是两种不同的过程,或者叫做“行为模式”,在“拿改锥拧螺丝”这个过程中,需要另一个“正确的”过程:“正着拿改锥”,才能得到一个值——“螺丝上紧”、或者“螺丝卸下”这个新过程。那么我如果问,为什么改锥不能反着拿?估计我的朋友们都会笑出声来——大家在“同情”我的智力。不过,你如果是个有几年经验的计算机程序员,或许对我这个问题不会感到“那么地非常可笑”,甚至你会陷入沉思。为什么,你对“类型”问题的思考会比一般人多一些。
如果说“阶”只是让我们从微观的角度见识了建模世界过程中对象的维度差异,那么,另外一个概念——“结构”就可以使我们从宏观的视角把握对世界建模的过程。
学数学、学计算机科学、学语言学的人对“结构”这个概念大概都不陌生,因为我们的世界都是成体系的复合存在。一堵传统意义上的墙,由砖石、连接材料和砌墙的一系列规则组成,这套规则,决定了每一块砖石相对于其它砖石的位置。这堵墙其实就是一个“结构”。可以说,这堵墙的结构大致上就定义了“这堵墙是什么”的问题。
新春佳节,招待朋友办桌酒席,如果组成这桌酒席的各种菜肴由前菜、主菜、汤品、甜点构成的话,让我们用比较形式化的语言描述一下。
1. 首先我有一个四元组:酒席 := <前菜、主菜、汤品、甜点>
2. 我们一次定义这四元组的每一个元素:
2.1 前菜 := {前菜1, 前菜2, 前菜3}
2.2 主菜 := {主菜1, 主菜2, 主菜3, 主菜4, 主菜5}
2.3 汤品 := {汤品1, 汤品2, 汤品3}
2.4 甜点 := {甜点1, 甜点2}
3.i 主菜i := {
食材 := {食材1,食材2,… 食材n }
调味料 := {调味料1, 调味料2,… 调味料n}
……
炒菜过程 := {炒菜过程1, 炒菜过程2, … 炒菜过程n}
}
……
可以看得出,如果把我们办酒席的状况(世界)建模表达出来,这个模型是非常复杂的;但是基本元素,复合元素、复合规则以及对元素的抽象化等,和“这堵墙”的世界没有本质差异。
再看画画,例如画素描。如果我们把其它因素去除,例如画家、画画用笔纸等外在因素,只关注素描本身,我们可以把素描的每一笔看做是基本元素,这样,孤立地看每一笔曲线我们看不出素描要表达的对象,只有把所有笔画放在一起才可以,因此每个笔画在纸上的位置就是至关重要的了。如果我们把所有笔画作为一个整体,用一个集合表示,那么每笔画之间的关系我们又可以建立一个集合——关系集合;或许每笔画的浓淡不同,我们同样可以建立一个关于控制浓淡过程的集合。这些元素放在一起,就构成了我们对这幅素描的定义。至于这幅素描表现什么,就不是这些基本元素可以确定的了——它反映了跟笔画、笔画关系等素描元素无关的对象——另一个世界的对象,或是一个人像、一组静物、风景等,如果表达朦胧,或许不同的人有不同的印象,有些人看山是山、看水是水,而有些人看山不是山、看水不是水。
总之,我们利用了最简单的手段,就可以勾勒出世界复杂事物的本质特征——这就是建模,在建模过程中,各个元素之间的差异、类别的差异、量的差异、“阶”的差异等,正是这些元素、它们之间的差异构成了我们认识世界的模型。
在数学中,“结构”有时成为了定义“什么是数学”、“数学是什么”这类问题的答案。虽然“结构”作为定义数学统一性的想法没有被所有人接受,但是这个概念确实可以用来描述许多数学最本质的东西,在这其中,类型问题,是一个不可忽略的重要问题之一。关于一些常用的数学结构,我们将在下次详细讨论,但讨论本身并不是数学式的,因为我相信真正想了解数学知识的人都很忙,为了升学、为了考研、为了出国留学等,没有时间在这里和我一起消磨。我们的讨论,仍然是“非形式化的”、口语式的,我们所关心的不是某个特定学科的细节,而是关于“世界的智慧”,康德的Weltweisheit.
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-23 15:12
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社