更新 2020-09-24: Unix pipes as an information-centric approach
在现代计算机的历史中,有几个与我们与系统互动的方式有关的进化步骤。我倾向于将这些步骤归类为以下几点:
- 数值系统
- 特定应用系统
- 以应用为中心的系统
- 以信息为中心的系统
- 无应用的系统
以下章节描述了我如何看待这些类别。
数值型系统(Numeric Systems)
早期的计算机是以数字为中心设计的。它们可以进行加、减、乘、除运算。其中一些能够进行更复杂的数学运算,如微分或积分。
如果你把字符映射成数字,它们也能 “计算 “字符串,但这有点像 “数字的创造性使用”,而不是有意义地处理任意信息。
特定应用的系统(Application-Specific Systems)
对于更高层次的问题,纯数字系统是不够的。特定应用系统的开发是为了完成一个单一的任务。它们与数字系统非常相似。然而,通过足够复杂的数字计算,系统能够完成定义非常明确的更高层次的任务,如与调度问题或其他优化问题有关的计算。
这一类的系统是为一个单一的目的而建立的,他们解决了一个独特的问题。
以应用为中心的系统(Application-Centric Systems)
以应用为中心的系统是第一个真正的通用系统。它们的主要使用风格仍然主要是针对特定的应用,但多个应用要么在时间上分片工作(一个应用接着一个应用),要么在多任务模式下工作(多个应用同时进行)。
上世纪70年代的早期个人电脑是第一个以应用为中心的系统,在广泛的人群中流行起来。
然而,现代操作系统( Windows、macOS、大多数GNU/Linux桌面环境)仍然遵循同样的原则。
当然,也有一些子类别:
- 严格的以应用为中心的系统
- 松散的以应用为中心的系统
严格的以应用为中心的系统,如Windows 3.1(程序管理器和文件管理器),甚至Windows 95的初始版本,都没有预先定义的文件夹层次结构。用户确实启动了像WinWord这样的文本处理软件,并将文件保存在WinWord的程序文件夹中。当使用电子表格程序时,其文件被保存在电子表格工具的应用程序文件夹中。以此类推。用户没有建立自己的文件夹层次结构,主要是因为方便、懒惰,或者因为他们认为没有必要。每个用户的文件数量仍在几十个到几百个之间。
为了获取信息,用户通常会打开一个应用程序,在该应用程序中,使用 “文件/打开 “检索包含所生成数据的文件。
正是Windows 95 SP2为Windows平台引入了 “我的文档”。有了这个文件层次模板,应用程序的设计者开始将 “我的文档 “作为默认的文件保存/打开位置,而不是使用软件产品的安装路径。这使得用户接受了这种模式,并开始自己维护文件夹层次结构。
这导致了以应用为中心的松散系统:典型的文件检索是通过文件管理器完成的。当一个文件被打开时,相关的应用程序被操作系统启动。这是一个小的或微妙的但非常重要的使用转变。以应用为中心的系统仍然是个人电脑的主流使用模式。
尽管如此,这种模式也有很多缺点。例如,为了防止数据检索问题,有必要维持一个严格的文件夹层次结构,其中包含一个特定项目的所有相关文件。不幸的是,大自然并不适合严格的文件夹层次结构。更进一步说,这并不能很好地扩展。桌面搜索引擎和先进的数据组织工具,如tagstore,能够使边缘平滑一些。正如研究表明,只有少数用户在使用这种先进的检索工具。大多数用户仍然在文件系统中浏览,没有使用任何替代或补充的检索技术。
以信息为中心的系统(Information-Centric Systems)
处理某个主题需要有一个存放所有相关文件的文件夹这一问题的一个可能方法是,从以应用为中心的系统转向以信息为中心的系统。
以信息为中心的系统不是打开一个电子表格程序来处理项目预算,打开一个文字处理程序来写项目报告,再打开另一个工具来处理图像文件,而是在一个地方,在一个 “应用程序 “中结合所有关于项目的不同类型的信息。
上个月的计算结果就在客户会议的笔记下面,而客户会议的笔记就在白板笔记的照片下面,白板笔记就在一些待办事项的下面。中间没有任何应用程序或文件边界。
创建这种环境的早期尝试是IBM OS/2、微软OLE或NeXT。由于各种原因,它们都没有取得重大成功。一个非常有趣的以信息为中心的环境是Plan 9的Acme。 它在一个应用程序中结合了各种各样的应用程序,但它从未达到显著的分布,即使它被移植到Windows或GNU/Linux。在某种程度上,Unix的管道实现了以信息为中心的计算概念:数据被放入一个管道。在这个管道中被组合的工具对数据进行操作。这套组合工具所提供的功能是事先在一个单一的工具中无法实现的。这个想法在那篇关于《Linux和Unix哲学》的文章中引起了我的注意。
以信息为中心的系统的现代方法是先进的个人维基,如TheBrain或微软OneNote。
我个人选择的工具是GNU/Emacs平台和它的Org模式扩展。当我用电脑工作时,我几乎不离开Org模式。为了访问外部数据源,我创建了Memacs,它将各种数据带入Org模式。我喜欢在计划任务、在线图像、内部和外部链接等下面进行电子表格计算。这是一个真正以信息为中心的系统,用户不必处理应用程序的边界或严格分层的文件系统文件夹。使用简单或高级的标签,可以进行多分类。所有种类的视图都可以通过一个命令得出。其中一个视图是我的日历,即议程。另一个派生视图是借来的东西的清单。以此类推。对于Org模式的用户来说,没有任何限制。如果你能想到,它很可能在Org-mode中就能实现。
这就是进化的终点吗?当然不是。
无应用的系统(Application-Less Systems)
我可以想到一类系统,我称之为无应用系统。作为下一个逻辑步骤,即使像Org-mode那样有能力,也不需要有单域的应用程序。计算机为信息和功能提供了一个很好的使用界面,而不是文件和应用程序。即使是一个经典的操作系统也是无法访问的。
无应用的系统还不如与人工智能结合。把它想象成《太空漫游》中的某种HAL 9000。或者《星际迷航》中的LCARS。
很难相信,在我们基于应用、基于供应商的软件文化和无应用系统之间存在着一种过渡。也许具有缓慢但持续发展的开放源码运动将能够形成一个真正的无应用环境,各种组织和人们都在为之做出贡献。
信息以及检索和操作信息的功能,这就是它的全部。这就是我们所需要的一切。其他一切都只是限制性的分心。
