首页 百科知识专业化在信息处理中的优势及应用

专业化在信息处理中的优势及应用

【摘要】:专业化大脑的功能就是用来处理信息,所以我们需要考虑信息处理系统中特异化的权衡和优势。没有任何关于专业化的信息来源能说明这些信息对于建造一个能正确运行的机器是必需的。不仅仅是计算机科学家,我认为苹果公司iPhone手机的成功很大程度上就是来自于iPhone手机上运行了大量专业化的小程序。iPhone手机被广泛地使用,就是因为它可以运行很多和模块类似的实用性应用程序。

专业化

大脑的功能就是用来处理信息,所以我们需要考虑信息处理系统中特异化的权衡和优势。在思考如何建造以信息处理为目标的机器上花费了大量时间的计算机科学家们,普遍已经发现把庞大的程序任务拆分为许多更小、更明确具体的问题是一个很有效的办法。任何一个尝试去写一个子程序或宏的人都能直觉到这一点。伴随着其他模块化的优势,对于你需要解决的问题有越多的假定,包括信息数据的格式(整数型、实数型、字符串型等等),就越容易写出执行问题中功能的代码。

实际上,据我的了解,在计算机科学领域,在复杂的信息处理系统中,模块性是否是一个好的想法并不是一个真正的问题。就像近来所说的,模块性或者“关注点分离”是“软件工程的一条关键指导原则”。计算机科学早已知道,好的系统设计需要将计算分解成子程序,使系统更灵活、更易修改,容错能力更强。甚至模块“内部”的“隐藏”信息的概念(它与我们将在以后的章节中探究的许多观点非常类似)也并不新鲜。考虑到模块性在计算机科学领域中已为大家所公认,我不明白为什么在心理学领域它却还如此有争议。我把这个困惑的问题留到下次再谈。

我们来思考一下被称为“特定领域语言”和多用途语言的区别。根据维基百科(我常常犹豫是否使用它,但为了这个目的我会使用)的说法:

如果特定领域语言与现有的语言相比,能够使一个特殊类型的问题或问题的解决方案可以被更清楚地表达,而且这些问题类型在讨论中频繁地反复出现,那么创造一个特定领域语言(包括支持它的软件)可能会很值得。

反对的意见如下:“相对的一面就是一种多用途编程语言,例如C语言或者Java语言……”基本上,特定领域语言非常擅长完成严格定义的任务,而且能够高效和有效地完成。多用途语言在权衡的另一端,它可以用来做很多的事情,但是做任何一件事的效率都不会很高,因为这种语言并不是为特定目标而专门构建的。

维基百科条目规定“讨论中的问题”必须是“频繁反复出现”的问题。除非你将需要一遍又一遍地执行同样的运算,否则建造一个用来处理某一特定信息的机器就没有任何意义。在进化背景下这种观念也适用,但是在自然选择的情况下,这不仅仅是一个好主意,更是一条法则。因为自然选择的作用跨越了许多世代,一个基因为了能够被选中,必须授予自己频繁地成功自我繁殖的优势,使自己能够在群体中增长。如果一个基因在这一代中产生优势,然后在下一代产生了劣势,那么就不要期望它能在自然选择的过程中生存下来。(www.chuimin.cn)

一篇计算机科学领域的文章谈到了由于内在的权衡性,不同的系统是如何更有助于不同类型的问题。我在这里详细地引用其中的一部分,是因为其作者为了让人理解拥有很多专业化工具的好处,使用了进化心理学家们使用过的同样的类比:

在过去,人们认为一套单一的语言就可以很好地适用于所有的编程任务……但是随着时间慢慢过去,更多的语言投入了使用,新的语言仍然在不断出现……正如任何一个强大的机器都会装配各种不同的工具应对一个10mm的螺母(开口扳手、套筒扳手、乌鸦脚扳手、浅插座、深插座等);任何一个有能力的程序员都会通晓许多不同的语言,这样他们就能够选择最好的语言来应对某种特定的情况。

同样,意识也是一套包含着各种程序和子程序的软件。当然这并不是说人类没有获取信息、向他人学习或者传递信息等等。没有任何关于专业化的信息来源能说明这些信息对于建造一个能正确运行的机器是必需的。许多模块被设计用来获取关于世界的信息(语言学习系统就是最著名的例子),但是并没有说明模块化系统不能学习,而且很不灵活,或者仅仅是绿色版。许多人像这样推论(不是关于绿色的部分),但是专业化显然和固定化、基因决定论或者任何其他荒谬的东西不一样。

实际上,就像我们在车辆的例子中看到的,增加模块化系统可以增加复杂性和灵活性,这是计算机科学家早已熟练掌握的要领。

不仅仅是计算机科学家,我认为苹果公司iPhone手机的成功很大程度上就是来自于iPhone手机上运行了大量专业化的小程序。iPhone手机被广泛地使用(现在有了拥有类似性能手机的竞争),就是因为它可以运行很多和模块类似的(专业化的)实用性应用程序。人类工程和进化过程采用了同样的解决方案,将许多专业化的应用组合在一起,制造出了一个灵活实用的信息处理设备。