周末闲来无事写了个小文“索引化记忆(概述)”,请大家拍砖

梦想家起飞 2007-08-12 06:27:35
有感于许多具备多年开发经验的程序员连MSDN和搜索引擎都不善于利用的现状,过去的大半年时间我总是会偶尔想起并思考这个“索引化记忆”的问题,我希望能给出一个明确的定义,并且论证、阐述,最后给出实践方法,但是未能如愿。我想这样的问题肯定早已有人想到、并研究透,可惜我未能从搜索引擎上找到相关的文献。如果这个想法有意义,我希望能把它整理为一篇更严谨、全面的论文,所以希望听到更多不同的声音。

索引这种东西,作为一种存储、检索信息的辅助手段,在人类社会恐怕已有不下千年的历史。索引的最简单的一种实现莫过于书籍,一般来说,一本书(特别是技术性的)的构成主要有三部分:目录、主体(包含附录)、索引。索引的作用是让你在最短的时间内找到你最关心的主体内容。对于书籍来说,索引的主要构成元素是关键字和页码,其排列方式又主要有音序、笔顺序、相关性序等。目录其实也是一种索引的特殊形式,只不过它的排列方式是“页码式”,说地广义一点,是“地址式”。

在计算机科学领域,索引技术可谓无所不在,甚至可以说一句妄语:没有索引技术,就没有计算机科学。最简单的两个例子:磁盘文件系统和数据库管理系统。对于磁盘文件系统,我们可以简单地理解为文件的全路径就是索引的“关键字”,文件在屋里磁盘上的首地址就是索引的“页码”,所以操作系统内核就可以通过文件的全路径快速地定位到文件所在的位置,而不需要遍历整个磁盘上的所有文件。如果说作为一个一般的软件开发人员我们一般不会去关注磁盘文件系统的索引机制,那么数据库管理系统的索引则是我们每天都要接触到的。我们可能都遇到过在一张100万数量级的大表里面检索数据这样的场景,如果该表没有建立合适的索引,恐怕一个小时都未能成功,但是如果建立了合适的索引的话,耗时可能会缩短到0.1秒,索引的重要性,可见一斑。

而本文提出的“索引化记忆”所关心的事情是:把索引技术运用到人类的记忆活动上。多年的软件开发实践活动促成我去思考这个问题。很多和我差不多的程序员都抱怨过,这是一个折磨人的行业,我们要掌握特别是要记住太多太多的东西,种种原理、种种API、种种错误现象及描述等。但是后来有三种东西让我摆脱了这种痛苦,MSDN、搜索引擎,以及咱们正在探讨的“索引化记忆”。

MSDN是一个例子,指的是MSDN本身以及和它类似的各种开发者文档,大家都知道MSDN几乎涵盖了MS系列技术开发的一切所需的信息,其包含的信息量在使用CHM技术压缩之后尚有2GByte之巨(以MSDN2003为例),如果要让一个开发人员把整套MSDN背下来,那么显然是不可能的,而且没有任何意义,所以我们就要考虑怎样去利用这样的一个信息宝库。

搜索引擎是另一个绝佳的信息宝藏,全球主流的搜索引擎所涵盖的信息量已经是天文数字,可以说搜索引擎是人类智慧的库管员。搜索引擎能帮助我们轻而易举地找到许多我们关心的信息而不需要付出敲敲键盘之外的任何代价。

不讨论MSDN和搜索引擎之所以能让我们快速找到我们想要的信息索引技术就作主了主要的贡献,我们这里想要探讨的是索引技术的另一个层面--把索引的索引--放到脑海里面。首先不管是从MSDN还是从搜索引擎里面查找信息,我们都需要依赖一种东西,那就作为索引的组成部分的关键字,所谓“索引的索引”,前一个索引就指的是需要“告诉”MSDN或搜索引擎的关键字,而后一个索引则是将存储在我们的脑海里,并且借之能推导出前一个索引所需的关键字的东西。也就是说,索引的索引的组成部分也有两个,前者就是刚刚讨论但尚未定义的“这种东西”,后者就是对于计算机系统所适合的关键字(就是你在google的搜索栏里面要填入的文字)。

“这种东西”适合保存在大脑里,目前也只有大脑能做到保存它。因为它可能非常复杂,它既可能是简简单单的适合计算机系统直接识别的关键字本身,又可能是一段故事、也可以是某个场景、甚至可以是童年时期的一个梦魇,总而言之它是一种记忆,或记忆的片段。通过这样的一个有机的记忆的片段,我们可以总结、归纳、或联想、推导出一个或一组适合计算机系统识别的关键字,然后借之查找到我们所需的信息主体。举个例子,我们辛辛苦苦开发的一个程序运行起来出错了,它向我们报告了一些错误信息,同时我们知道这起出错“事故”关系到了那些原理、API,对于计算机来说,“种种原理、种种API、种种错误现象及描述”等是各自为政的东西,他们是陌路人,但是我们的大脑能把它们关联起来--这就构成了一个场景,我们轻而易举地记住了这个场景,以后出现同样或类似错误的时候我们的脑海里就会快速地“泛起”这个场景的“涟漪”,然后迅速地推导出一些关键字,通过搜索引擎找到我们的解决方案--而我们实现并不需要将那个解决方案背诵下来。

“这种东西”也可以简单地理解为一种大脑能保存并加工处理的复杂的索引,和计算机不一样,计算机只能处理简单的索引,当索引过于复杂的时候,就失去了其作用及意义,但是大脑不一样,大脑恰好适合处理这种“复杂的索引”,这是大脑的好处。但是,我们知道大脑除了会记忆,同时更善于遗忘--这个特性似乎常常让我们感到沮丧,但是不要紧,有另一种东西能帮助我们实现精准而且持久的“记忆”,那就是刚刚提到的不能处理复杂索引的有点笨的计算机。所谓“索引化记忆”,到了这里就可以初步地给出一个定义,就是利用大脑和计算机各自对于信息存储、处理的特性,取长补短,显式地使用一种索引化技术,来达到随时随地获取海量信息的目的。

像刚才提到的,所谓索引的索引,既可能是一个直接的适合计算机处理的可以借之找到信息主体所依赖的KEY(关键字),也可能是一个能借之推导出合适的关键字的场景。在网络日益普及计算机设备日益小型化便携化的今天,如果我们能主动地使用索引化记忆的技巧,那么一切信息都唾手可得,“信息爆炸”的论调将成为过去,面对天文数字的信息,我们将不再恐惧,不再望而却步,转而将主要精力从死记硬背中转移到记忆、筛选关键字方面去,进而做到在这个信息时代如鱼得水游刃有余。
...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
colorslife 2007-08-12
  • 打赏
  • 举报
回复
哦,嗯
梦想家起飞 2007-08-12
  • 打赏
  • 举报
回复
不是新技术,聊作新概念好了,哈~
CUG122032 2007-08-12
  • 打赏
  • 举报
回复
。。。
我还以为是一个新技术。。。
tantaiyizu 2007-08-12
  • 打赏
  • 举报
回复
呵呵 , 楼主好人呢

tantaiyizu 2007-08-12
  • 打赏
  • 举报
回复
.

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧