All problems in computer science can be solved by another level of indirection.
— by David Wheeler
相信每个从事与计算机相关工作的人,都知道抽象在计算机科学中的重要作用。因为抽象,用户在看视频的时候无需了解手机如何处理视频流,视频流中的每个报文如何从服务器到达你的手机。因为抽象,程序员在编程时无需考虑CPU如何执行每一行代码,代码又是如何和操作系统、硬件发生交互。正是抽象在计算机科学中的无处不在和无所不能,人们赋予了它至高无上的意义,以致于形成了一种信念:计算机科学的所有问题都可以通过增加一层抽象来解决。
让程序直接和物理内存打交道?不不不,内存的使用效率不一定高而且还有安全隐患,那就加一层虚拟内存的抽象,把内存访问的种种细节对程序隐藏。让程序员直接写汇编语言?那对于99%的程序员来说会生不如死,那就加一层高级语言的抽象,把程序功能的实现与底层硬件的特性解耦。似乎同样的逻辑不仅限于计算机科学,社会组织、职业规划等等命题遇到的问题,也都可以通过抽象来解决。古代中国的郡县制可以理解为中央王朝与平民大众的一层抽象。员工的归属感可以理解为公司的价值观与员工的成就感的一层抽象。总之,抽象可以拨云开雾,让组织和人不再迷失于浩如烟海的细节中;抽象可以化繁为简,让组织和人聚焦于当下触手可及的目标。
抽象看上去那么完美,那么无懈可击,不仅让正在地铁一号线上神游的我,突然冒出来一个细思极恐的问题:是谁,制定了抽象的标准?
单从计算机科学的角度去回答这个问题,似乎很容易。随着开源软件运动在上个世纪的兴起,计算机科学的先驱们制定了各种各样的抽象标准。从Multics
到Unix
再到Linux
,从B语言
到K&R
再到C++
,伟大的抽象标准不断演化,也吸引着更多人站在前人的肩膀上继续开疆辟土。然而放到个人生活的领域,似乎问题就变得吊诡起来。我似乎并没有一条清晰的脉络供我追溯乃至质疑,究竟是谁,制造了我现实生活和虚拟生活的中间抽象层?究竟是谁,规定了这些中间抽象层的标准?或者说,什么是现实,什么又是虚拟?
If real is what you can feel, smell, taste and see, then ‘real’ is simply electrical signals interpreted by your brain.
— by Morpheus in The Matrix
如果我在现实生活中的食欲,是被电梯或者地铁里琳琅满目的虚拟广告刺激的,那这欲望究竟是我想要还是虚拟广告想让我要?如果我在现实生活中的性欲,是被猎奇怪异的成人影片和视频满足的,那这欲望的对象是具体的还是抽象的?如果我在现实生活中的探索欲,是被精心设计的推荐算法主导的,那我所认知的现实,究竟是现实还是虚拟构建出来的现实?
我似乎不得不接受这样一个事实:有一只无形的手,制定了抽象的标准,我作为个体几乎无力反抗。如同黑客帝国中生活在‘母体’中的人类一样,只是作为系统饲养的动物。我也只是这个抽象系统中的囚徒而已。困在名目繁多的APP所带来的碎片化的虚拟满足,困在金钱至上的评价体系中的肤浅虚荣,困在间或清醒和时常贪嗔痴慢疑的自我矛盾之中。
更令我恐惧的是,这只无形的手的触角似乎越来越大,制定标准的权力野心也越来越膨胀。Metaverse
的出现,或许终有一天我的结局如同黑镜第三季第四集中的剧情那样,最终变成一条数据流在庞大的数据中心里游荡。也许那时不存在沉迷网络一说,更大的偏见可能是一个人沉迷现实了。
Red Pill or Blue Pill ?
说真的,我不知道。引用张悬一句歌词:也觉得想不透,想透了能有多轻松。而且也没有Neo的主角光环,就是’母体’中一个普普通通的饲养动物。想必Morpheus也不会大费周折来找到我,然后让我选哪个颜色的药丸,选完了就带我飞到Zion去参加狂野party。
又或者,Zion本身就是另一层抽象?Neo就是Architect设计的另一个抽象的囚徒?
地铁一号线从上海南站的地下驶出,外边乌云密布,打断了我神游的思路。手机消息提示下周上海大降温。我突然觉得眼前地铁两边穿梭而过的建筑,倏忽间变成了一串串代码数据流,又刹那间变成了它看上去的模样。