作者在本节讲述了IT领域复杂系统表象之下的世界,特别是电脑软件和游戏的发展历史,最早居然可以让用户照着杂志上的代码自己输入,让当时的电脑爱好者充分了解了电脑底层的硬件与软件,算是看清了本质哈,但现在这种情况已经不太可能发生了,软件/游戏容量巨大,动不动几十个G,上亿行代码了。
不妨回想一下,上次安装新软件的时候,你真的知道计算机内部发生了什么事情吗?你是否了解各种软件包被存储在硬盘驱动器上的哪些文件夹中?你知道软件安装程序根据计算机硬件和操作系统的不同性能,修改了计算机的哪些信息吗?
不太可能。你眼中只有一个长条状的东西,你只能通过观察它被逐渐填满的过程,来了解安装的进度。它就是进度条。这种小型的界面创新程序,出自计算机科学家布拉德·A.迈尔斯之手。在读研究生时,迈尔斯开发出了这个程序,并将其称为“进度完成指示器”。进度条给不透明的过程提供了一个小窗口,并以此来抚慰用户。那么,进度条是不是完全准确的?很可能不是。在某些情况下,进度条几乎完全脱离了底层的运行过程。但是在大多数情况下,进度条和其他讨巧的设计,例如描述软件安装过程中所发生之事的文本框一样,可以让人们对一个庞大且复杂的过程投去“放心的一瞥”。(刚接触电脑的小学生时代,我也有过如此好奇的疑问)
我们在构建用户界面时会越来越多地有意地将复杂性抽象掉,或者,至少让部分复杂性与用户隔离。这种做法使复杂性科学和用户界面设计学这两个领域产生了交集。无论是在电脑中,还是在汽车中,抑或是在电器中,技术系统都会在用户与程序运行之间设置一道屏障。许多人都会选择使用用户界面相当友好的特波税务软件,而不会选择与越来越复杂的税法进行面对面的“博斗”。然而,在这个软件的背后,其实隐藏着一整套非常复杂的法律法规体系,它们是通过大量if语句和处理例外情况的计算机代码来呈现的。(这个特波税务软件昨天刚看到新闻并购了credit karma,好巧呀,貌似都是很牛的公司)
凭借直觉,我们能察觉到系统内部到底发生着什么,尽管这种直觉有时候不甚准确。因此,只要想办法保证这种直觉不消失,就可以消除用户因未知而产生的不安。
我家的第一台电脑是康懋达公司生产的VIC-20。在其代言人、《星际迷航》的主演威廉·夏特纳口中,它是“20世纪80年代的奇迹电脑”。我拥有许多有关这款古董级电脑的美好回忆。我曾经用它玩过不少游戏,当时所用的存储设备还是最原始的盒式磁带机。我和我的兄弟玩过很多次的一个游戏是《吃豆人》,不过,在那款游戏中,“吃豆人”的形象不是一个长着大嘴的黄色馅饼,而是一辆赛车。
我们还玩了不少需要手动输入代码来运行的游戏。在那个年代,虽然你也可以购买现成的VIC-20游戏软件,比如赛车游戏,但是人们玩电脑游戏的主要方式是将杂志上发布的计算机代码输入到电脑里。你想玩一个有趣的滑雪游戏吗?买一本杂志,将上面的计算机代码输入到电脑中,然后自己来运行这个程序,并不需要购买游戏软件。(居然还有这种事,当年的计算机极客真牛呀,都是自己编写游戏)当时,这样的游戏很常见。今非昔比,如今,几乎每个游戏程序都有几十万行代码,可能整本杂志都登不完。
自己输入代码,可以让我们更近距离地接触计算机。我看到了软件中的bug是如何产生的。记忆中,我输入的滑雪游戏的程序代码导致屏幕一侧出现了很多图形乱码,我费了很大心思才把这个错误纠正过来。我还看到了计算机程序的逻辑和内在结构。(非常宝贵的经历)今天的计算机程序是以成品的形式交付给用户的,相比之下,往日的计算机程序则具有清晰的结构。
20世纪80年代末,我的家人放弃了那台康懋达公司生产的VIC-20,转而使用苹果公司的产品。自那以后,我一直在使用苹果电脑。我们家的第一台苹果电脑,在年幼的我们看来是一个令人难以置信的产品。无论是操作便利的鼠标,还是大量的游戏,都深深吸引着我。我记得其中有一款游戏叫《宇宙渗透》,它拥有内涵丰富的游戏场景,令人顿生身临其境之感,而且只需点击鼠标即可尽情探索。早期的苹果电脑也会“说话”,能将文本转换为单调的“非人类”语言,这让我们全家都感到无比兴奋。1984年,史蒂夫·乔布斯在苹果电脑新品发布会上的演讲感人至深,给我留下了难以磨灭的印象。然而,在拥抱苹果电脑这个奇迹的过程中,我和我的家人也失去了一些东西。我们离计算机越来越远了,而这种趋势在今天仍在继续:在用惯了顺手的iPad之后,我们甚至忘记了文件是怎样存储的。(乔布斯就是帮大家做了选择,小孩子都能接受的产品和操作系统,反而极客们不太喜欢了,哈哈,难怪沃兹后面没在苹果公司继续任职了)
能与我们产生交互的所有复杂系统都是有层级的。在技术系统中,我们通过深思熟虑的抽象化方法构建了这种分层结构;在自然界中,分层结构则建立在规模和进化的基础上。生物学中的层级从生化酶开始,到线粒体、细胞、器官,再到整个生命体,而后是整个生态系统。每个层级都可以提供不同层面的信息。当从一个层级的抽象化,向上扩展到另一个层级的抽象化时,我们或许会失去对细粒度的理解和控制,但同时也能更好地理解更高级别的体系。在计算机软件中,我们的关注点可以从比特与字节转移到汇编语言,再到更高级别的计算机代码,最后到日常的用户界面,也就是我们点击、拖动的东西,例如对浏览器的使用。每一个更高的层级会都为我们带来更多的功能,但同时也会让我们更加远离底层逻辑。(00后现在可能更加不会明白当年那些老软件的简陋运行方式了)
当然,现在我们已经很清楚了,人类是不可能完全理解底层逻辑的。但是,我们至少应该窥探一下机罩底下的世界。如果将日常使用的平板电脑和手机视为会变魔术的玻璃和金属抛光板,完全不去理会面板下面或数字键下面到底发生了什么,那么我们肯定会失去一些机会。事实上,这确实是个隐患:如果所使用的系统是完全自动化的,那么当它出现问题时,我们几乎无能为力。我们被屏蔽了,无法了解技术系统的内部运行,这种状态被称为“隐藏的电子复杂性”。换句话说,我们所用的设备存在着惊人的复杂性,但这种复杂性却被完全隐藏了起来。(产品和技术在追求简洁优雅的道路上越走越远,也是一种复杂隐患吧)
在20世纪60年代的电话通讯系统中存在着这样一个设计:当系统检测到故障时,就会将用户拨号关联到错误的号码上。这个设计的目的是将技术系统故障定向为人为错误,以逃避人们对技术系统的苛责,用户会认为是自己拨错了号码。因为不了解内情,所以那些“拨错了号码的人”对电话通讯系统的权威性和神秘性有着自己的理解;一旦让他们知道了电话通讯系统是庞杂的、不完美的“人造物”,他们的理解就会变得不一样。
是的,我们必须打开机罩或通过窗口往里面瞥上一眼,看看那里发生了什么,尽管这种“管中窥豹”的做法通常无法做到“知全豹”。当技术的复杂性超出了人们的理解能力时,这样的“一瞥”,无论是对专家而言,还是对普通用户来说,都至关重要。仅仅让一个人,或一小部分人看到底层逻辑,并认识到系统和人类的局限性,是远远不够的。人人都应该关注,如何实现这“一瞥”。倘若做不到,我们在系统面前便会失去谦卑之心和敏锐直觉,从而转向崇敬或恐惧。(确实如此呀)关注技术底层,不仅有趣且有教育意义,而且还有助于抵制对待技术的“不正之风”。在当今这个纠缠时代中,我们越来越需要这种抵御能力了。
不过,如果很难瞥见机罩下的东西,我们又该怎么办呢?如果一个系统复杂到难以构建窗口,或是所提供的线索太少,我们又该如何是好?这里可以考虑另一种方法:构建模型。通过构建模型,我们可以推测出一个复杂的技术系统是如何运行的。(间接办法之一,也不错,总比没有好)
例如,虽然我们无法真的控制气象,也无法理解它所有的非线性细节,但却可以相当好地预测它、适应它,甚至为坏天气的到来做好准备。气象模型非常复杂,尽管它每个部分的设计都不是很难。我们不仅希望利用气象模型来指导日常活动,比如何时清理衣橱,何时出远门等,还希望对气象模型有所理解,哪怕是不完全的理解。当然,在面对突如其来的暴风雪或洪水时,我们还希望能靠它避险。
就像构建气象模型一样,我们也可以构建技术系统模型,哪怕有所简化也没关系。通过对感兴趣的系统进行模型构建,并测试其极限,调整其参数,我们便可以获得对复杂系统的强大洞察力,而用不着完全理解它。而且,构建模型本身也是一项值得培养的技能。(建模能力必备)
随着时间的推移,技术将变得越来越难以渗透,为此,中学和大学教育需要更多地引入模型构建和简化直觉,并把它们结合起来,作为必要的复杂性科学方法传授给学生,让每个人都有机会成为系统的解释者。
简化直觉是由复杂性科学家发展起来的一般模型,它为启发式方法奠定了基础。启发式方法可以使我们得以理解系统,同时又不会被其复杂性压倒,并能与“包容性的将就”相结合,这也是约翰·盖尔的“一般系统滑稽论”所采用的视角。这些用来窥探大规模复杂系统的小窗口,体现了我们对待技术的谦卑之心。(经典,人类面对问题总会想出办法哈)
网友评论