这并不意味着抽象已经过时了。
想象一下,在未来,VR会以我和我朋友以前尝试的方式,显性地完成程序设计。在这种情况下,你可以通过各种操作改变其中的比特,使你所在的虚拟世界突然发生变化。
上面所说的操作到底有哪些?你操作的模拟控制面板看起来会不会像是“企业号”星舰的舰桥?你是不是要拉动中世纪地下城的锁链,或者像叶子一样跳舞?还是要编辑目前大家都在用的与格雷丝·霍珀源代码类似的文本?所有这些编辑器设计可能都会存在。
无论如何,一定要存在某种设计。你不可能不接受任何观点或思维方式,就完成某件事情。但是从根本上说,我们没有道理在特定的时间内坚持同一种设计。
在霍珀的非显性源代码世界中,每种计算机语言都对应着特定的抽象对象,使用一种语言时将不可避免地用到这些真实、强制和永恒的对象。我之前提到了Fortran的经典功能和Smalltalk的对象,我正在写本书的时候,可以很轻易地在当时流行的云软件中添加“机器人程序”(bots)。
每个对象在有的时候都很好,很有用,但没有任何一个对象是必不可少的。如果“现实”指的是你不能拒绝的事物,那它们不是真实的。如果它们看起来像是真的,那就会比较麻烦。
如果不是历史的扭转,其他抽象对象可能已经替代了我们熟悉的对象。(是否要重新考虑目前广泛使用的软件抽象对象还是个开放性问题。在之前出版的《你不是个玩意儿》中,我认为软件中要表达的想法可能会被恶意的“网络效果”锁定,但是在本书中,我假设我们还有改变的时间和希望。)
你在使用计算机时,唯一基本的、不可侵犯的真实现实是你和计算机中运行的比特模式,但这两个真实现象之间的抽象连接不是真实的。
计算机架构能否表达出这种看法?是否真有办法更换不同的编辑器设计,呈现当前的特定比特模式,方便你在不同时间以不同方式理解和修改比特模式呢?