系统算法大全讲解(了解系统的过程)(1)

黄鼎 秋日山居轴局部

认识与感受是不同的,我们接下来讨论“认识”。

一个人认识到另一事物,包括对这一事物的两种了解,其一是它的外在,其二是它的内在。例如说认识一个人,男女老少、发肤形貌等这些是外在特性,品性德行、气质教养等这些则是内在特性。“认识”的这两点要求,无论要了解的对象是复杂的人还是简单的石头,都是必要的。

我们获取知识有两种手段,是所谓“知得”与“识得”。在《程序原本》一书中讨论抽象这一主题时,我们提出过这两种手段:当我们知道张三,却不知道它的形貌时,是知得,大多数图书馆知识是知得的;当我们亲触这个事物,却不知道它是什么时,是识得,大多数野外考察知识是识得的。与这一切相关的概念,可以描述在下图所示的方法树上(这里引用的是后续文字中的图例,所以图序号有异):

系统算法大全讲解(了解系统的过程)(2)

从动词角度上来说,认识是识得的具体方法之一。认,是指记认;识,是指辨识。

记认作为一种方法,可以与我们讨论过的曹冲称象与刻舟求剑这两种实践联系起来。它们在船体上刻的标记,都是记认的一种形式;同理,我们后来在《程序原本》一书中讨论到的 HASH,以及全文或数据库检索中用到的关键字,也都是记认的形式。作为实践者,我们大多数时候是在讨论“某种记认的方法”,而未能追究:在认知理论上,这种记认的可靠性及其依赖的条件。而忽略这一点,就会产生一些似是而非的方法,例如失效的刻舟求剑。但是,失效并不是无法容忍的,例如 HASH 应用中存在的命中率问题。所以记认并不是准确无误的方法,实践中只是在寻求这种方法的背景限制并进一步控制误差而已。

辨识的一个基本含义在于分辨出差异。如果找不到差异,那么所有的事物也就混沌一物,无从辨识,也无从获得它的知识了。具体来说,辨识也可以分成两种方法:其一是识别,其二是分别。

识别依赖于我们对事实的直观了解,在一定程度上是与我们的感觉器官相关的,例如听见的、看见的或者闻见的等。识别是我们人类建立对自然界的知识的最基本而又最丰富的方式。大多数情况下,我们不会去考虑我们如何从树林中识别出一个新的树种,或者如何从风声中听到猿啼,这基本上被我们视为本能。我们的这一类知识构建行为,大抵在于为这个新树种命个名称,或者此前便已了解怎样的声音才是猿啼。

然而识别是不可靠的。它首先取决于生理机能本身的可靠性,例如一个红苹果,在正常人与色盲症患者的认识中,就并不相同。其次它还取决于既识的持续可靠性。我称“基于识别所构建的既有知识”为既识,称基于既识而识别为持续性。例如,某人此前听过猿啼(并确认正确),当他再听到某种啼声时,识别为“这是猿啼”。但后者并不一定是持续正确的。后者的正确性涉及三个具有递进关系的问题,其一,猿啼是否必须是一只真实的、自然界的、实体的猿的啼叫;其二,若否定其一,则需讨论非真实的、模拟的猿啼在多大程度上能称为猿啼;其三,若肯定其一,则需讨论如何同化个体猿的声音差异,以使得“(任意)猿的啼声”总能被识别。这三个问题的提出,事实上说明我们“基于既识的识别”是不可靠的。

分别则相对复杂一些,它建立于一个观察的角度、切面,或者依赖于某种参照。以(概念性的)观察角度为例,地上散落的核桃,A可能将它视为“一些核桃”,而 B 则认为是“三堆核桃”,这是整体视角与局部视角的差异;又例如,同向同速的两辆火车之间的观察是相对静止的,这就是参照选择带来的一个结果。通常,“数”这一抽象,是我们能加以分别所依赖的核心概念。例如,核桃的个体与群体,以及火车的速度,都是我们对观察对象先进行数值化,再加以比较,最后得到的知识。

分别是可靠的吗?答案仍然是否定的,千人千面是一种理想状态,现实往往是一人千面。例如一个人早晨显得慵懒一点而中午就亢奋些,又例如对于同一个人,A 认为他和善,B 则认为他隐忍。分别的问题在于比较所需的角度与背景不同,以及不同人对于抽象概念的理解有异——如你所见的,基于“数的值”的分别往往准确一些,是因为人们对于“数”这一抽象有着大抵相同的理解。

--来源《我的架构思想》周爱民

,