拉里·特斯勒(Larry Tesler):非模态文本编辑和剪切/复制-粘贴的个人历史

作者:ConanXin
知乎文章编号:108184084
创建于:2020-02-20 8:07:57
修改于:2020-02-20 8:07:57


RIP: “剪切/复制-粘贴”功能发明人拉里·特斯勒(Larry Tesler)于2020年2月17日去世,终年74岁。

我做了50多年的计算机程序员。从一开始,我就被那些不好用的软件所困扰。我在斯坦福大学读书的时候,在施乐帕洛阿尔托研究中心、苹果公司、亚马逊公司和雅虎公司担任各种工程、用户体验和管理职务的时候,我就开始着手解决这个问题。

我最著名的贡献是剪切/复制-粘贴。我和一些同事合作了几年,开发了这个模式。但是剪切/复制-粘贴不是一个独立的项目;它是图形用户界面(GUI)模式的集合之一,我称之为非模态文本编辑(modeless text editing)。

我不是第一个注意到模式(modes)对错误率的不良影响的人。我也不是第一个试图消除最繁琐模式的人。但对我来说,模式简化(mode reduction)成了一项研究工作和商业使命。我帮助开发了非模态编辑的理论基础和第一个确认理论有效性的产品。

二十世纪六十年代

1960年,当我还是布朗克斯科学高中(Bronx High School of Science)的学生时,我学了一门类似FORTRAN的语言。我喜欢它的功能,但它不直观的限制让我沮丧。

1961年,我作为一名新生进入斯坦福大学。1962年,我对一种开创性的动画语言进行了可用性改进。那个项目给了我简化可用性研究(discount usability studies)和参与式设计的经验。

很快,我就成为了一个很好的程序员,使软件易于使用。教授和研究生都请我咨询。1963年,我创建了一家软件公司,它是帕洛阿尔托黄页上仅有的六家公司之一。

在20世纪60年代,交互式分时系统开始取代批处理系统,并且开始在微型计算机上使用定点设备(pointing devices)。我更喜欢交互式,但是大多数交互程序都有模式,这总是让我出错。我开始分析命令语言,找出模式和模式错误的原因。

1968年,我开始在斯坦福人工智能实验室(SAIL)为精神病学家和认知科学家肯·科尔比(Ken Colby)工作。科尔比开发了一个名为PARRY的对话程序,它可以模拟一个偏执型的病人。在为他工作期间,我认识了艾伦·凯(Alan Kay)、唐·诺曼(Don Norman)、特里·维诺格拉德(Terry Winograd)和大卫·坎菲尔德·史密斯(David Canfield Smith)——他们后来都成了人机交互的先驱——并且我学到了一点认知心理学的知识。

1969年初,我参观了位于加利福尼亚州门洛帕克的斯坦福研究所的道格·恩格尔巴特(Doug Engelbart)的增强研究中心(Augmentation Research Center)。恩格尔巴特最近首次公开展示了NLS(oN Line System)在线系统,这是一个建立在分时系统基础上的有远见的原型。这一开创性事件被称为“所有演示之母”(the mother of all demos)。这些创新包括鼠标、平铺窗口、多视图、提纲(outlining)、超文本、协作编辑和视频会议。

从1968年到1970年,我有时会为当地的一家非营利组织制作一份季度目录。在用刀片和胶水“剪切和粘贴”的时候,我设想了一个交互式的页面合成系统,可以简化这个过程。

在同一时期,彭蒂·卡内瓦(Pentti Kanerva)向我展示了布莱恩·托利弗(Brian Tolliver)的全屏文本编辑器TVEDIT的PDP-10端口。卡内瓦添加了一个简单的错误恢复命令oops。他还增加了两步移动:删除步骤将用户指定的文本移动到堆栈顶部;检索步骤将堆栈的顶部元素移动到用户指定的位置。在两个步骤之间,用户可以做任何保持堆栈完整性的事情,包括归档、搜索、输入和移动其他文本。虽然TVEDIT有模式,但在我看来,两步移动和类似于错误恢复的命令有助于使设计合理的编辑器无模式化。

二十世纪七十年代

1971年,人工智能实验室的主任莱斯·欧内斯特(Les Earnest)让我设计并实现一种页面构成语言(page-makeup language),这种语言可以对章节进行编号,并生成索引、目录、脚注、交叉引用等。我提议让它具有交互性,但他想要一个批处理系统,我承认这更容易些。

在几个月的紧张工作中,我创建了PUB:文档编译器(The Document Compiler)。PUB是一种带有嵌入式标签和脚本的标记语言。它在阿帕网(ARPANET)连接的大学的研究生中变得流行起来。

973年,我加入了施乐帕洛阿尔托研究中心(PARC),成为帕洛阿尔托研究中心在线办公系统(POLOS,PARC Online Office System)团队的一员,但我花了一些时间和艾伦·凯(Alan Kay)的学习研究小组(Learning Research Group)一起研究Smalltalk。我对与凯合作感兴趣的一个原因是,他发明重叠窗口(overlapping windows)的动机是希望找到模式的替代方案。

POLOS团队的大多数成员都是从SRI的恩格尔巴特(Engelbart)小组来到施乐的。我的经理比尔·英格利什(Bill English)参与了鼠标的设计,合著了恩格尔巴特1968年的论文,并管理了著名的NLS演示。

从一开始,NLS主要用于构建和修改技术规范、源代码等。它的老用户发现它很适合这个功能。但我觉得,作为编辑常见文档(如信件、备忘录和表单)的工具,它不会得到公众的认可。它的命令语言有多种模式。在文本输入模式之外,几乎每一次按键和点击都会改变模式。

NLS命令语言的语法随着时间的推移而演变,但它始终是前缀,其中动词在其对象之前指定。要删除一个段落,你告诉NLS删除之前,你告诉它应该删除什么段落。

当指针指向某物时,点击鼠标按钮被称为标记(marking)。需要标记的三个常用NLS命令是:

D(elete) W(ord) <mark affected word> <ok>
M(ove) T(ext) <mark source text start> <mark source text end> <mark destination> <ok>
I(nsert) S(tatement) <mark destination> <type text to insert> <ok>

命令-接受操作(这里用<ok>表示)可以从键盘或鼠标调用。Text是任意范围的文本。Statement通常是一个段落。

当用户键入并单击时,命令行会在一个可见的窗口中累积。用户可以从窗口中删除最新的命令行,或者删除整行,然后重新开始。当用户调用<ok>时,NLS会删除整行,防止进一步修改。然后执行命令。

因为Move是单个的命令,所以在输入“M”之前,目标和源都必须在屏幕上可见。同样的限制也适用于复制和替换。可折叠提纲(collapsible outlines)等功能提供了规避限制的方法,但用户必须学习更多语法并提前计划。

我相信,如果我们继续使用NLS语法,竞争对手将在学习速度和易用性方面超过施乐(Xerox)。我的大多数同事都不关心。他们认为NLS很直观,因为它的语法类似英语的动宾语法。这种语法有很大的发展空间。命令行使得从旧终端使用NLS成为可能。

在我工作的第一周,比尔·英格利森(Bill English)让我和另一位新雇员杰夫·鲁利森(Jeff Rulifson)一起工作,对编辑行业的未来发展进行展望。我和鲁利森见过几次,进行头脑风暴。当我向他吐露我对NLS命令语言的担忧时,他透露说这是他设计的。他原本打算把它作为软件测试的临时工具。恩格尔巴特的团队进行了可用性研究,并不断改进,但是他们没有认真考虑后缀语法,在后缀语法中,动词是在其宾语之后指定的。

我向鲁利森(Jeff Rulifson)介绍了后缀语法的错误恢复优势,即:

我以前从未见过比TVEDIT的oops更通用的错误恢复命令。鲁利森告诉我,我们的PARC同事沃伦·泰特尔曼(Warren Teitelman)在他的LISP shell中应用过。它被恰当地命名为撤销(undo)。

我和鲁利森还讨论了图形在界面中的使用。他最近读了一本关于符号学的书,书中将图标定义为已标记的象形图,并提到了它与交互式计算的潜在相关性。

我们在PARC分发了几个版本的白皮书。它的标题是“OGDEN:非程序员的通用的显示编辑器”(OGDEN: An Overly General Display Editor for Non programmers)。我们提出了带有桌子(desks)和文件柜的标志性用户界面。我们还提出了剪切和粘贴的非模态后缀语法。

鲁利森愿意彻底改变他为NLS设计的用户界面,这使得POLOS团队的其他成员更容易考虑我的建议。在芭芭拉·格罗茨(Barbara Grosz)的帮助下,我进行了用户研究,包括空白屏幕研究,这些研究揭示了模式带来的问题。然后,使用Smalltalk语言的早期版本,我开发了一个简单的、类似打字机的编辑器,只有很少的模式。从未接触过电脑的人可以在五分钟内学会简单的编辑器。

Gypsy

比尔·英格利森(Bill English)表扬了我的工作,但让我把注意力转向POLOS系统。我刚开始这么做,就有了意外的发现。施乐(Xerox)旗下的教科书出版商Ginn and Company要求PARC开发两个应用程序,一个用于排版编辑(galley editing),另一个用于页面布局。英格利森(Bill English)知道我会感兴趣,让我负责这个项目。他指派丹·斯温哈特(Dan Swinehart)给我提建议。我在斯坦福人工智能实验室(SAIL)共事过的丹·斯温哈特(Dan Swinehart)是模式的强烈反对者。

我建议在页面排版系统和排版编辑中使用剪切和粘贴,这让Ginn管理层很高兴。现在我的实验有了一批愿意接受的听众。

另一个可喜的转变是,Ginn雇佣了一位名叫蒂姆·莫特(Tim Mott)的软件工程师,在他们位于波士顿附近的工厂进行人种学研究(ethnographic study)。1974年,在完成了这项研究之后,莫特来到PARC帮我实现了他称之为Gypsy的排版编辑器。当他到达时,几台施乐的Alto个人电脑已经开始工作了。查尔斯·西蒙尼(Charles Simonyi)和汤姆·马洛伊(Tom Malloy)已经在Alto运行了Bravo文本编辑器的早期版本。Bravo是一个开创性的所见即所得应用程序,是巴特勒·兰普森(Butler Lampson)和西蒙尼的创意。

为了实现Gypsy,我们采用了Bravo的源代码,用非模态用户界面代替了模态用户界面。应Ginn的要求,我们增加了粗体、斜体和下划线,以及支持版本和草稿的归档系统。这个软件花了几个月才完成。

Gypsy引入了几个非模态的用户界面特性,这些特性现在是标准的。用户可以:

当我们开始实现时,我还没有把界面的所有细节都弄清楚。我认为我们应该在开发过程中进行迭代。我没有想到的是莫特的创造力,以及他对在Ginn观察到的目标用户的适应程度。例如,当我提出的选词建议无一奏效时,是他想出了双击的主意。经验教训:你并不知道所有的答案。组队。

在Gypsy的开发过程中,PARC雇佣了汤姆·莫兰(Tom Moran)、斯图·卡德(Stu Card)和贝弗利·麦克休(Beverly McHugh)。他们观察到我正在进行一项可用性研究,并提出为我们进行未来的研究。贝弗利的研究对于改进Gypsy的用户界面非常有价值。教训:有些人能比你做得更好。组队。

1975年初Gypsy完成后,莫特把它带到了Ginn。用户喜欢它的优点。但是他们不喜欢它的缺点,尤其是几乎完全没有代码维护,而这是我们研究人员忽略的一个工程需求。经验教训:如果你打算把你的研究原型给那些可能会逐渐依赖它的用户,确保有人已经计划好了维护。

影响

1975年6月,《商业周刊》(Businessweek)发表了一篇名为《未来办公室》(The Office of the Future)的特稿,其中提到了Gypsy。

帕洛阿尔托研究中心的其他同事以我们的工作为基础。莫特和我使用专用的按键进行剪切、复制、粘贴和撤销。部分受威廉·纽曼(William Newman)在他的Markup绘画程序中使用弹出图标网格的启发,丹·英戈尔斯(Dan Ingalls)在Smalltalk中实现了一个非常简单的弹出菜单,包含一个列清单,列出了四个命令名。这个菜单演变成了今天常见的右键上下文菜单。教训:当你认为它是最简单的时候,也许有一种方法可以让它变得更简单。

Gypsy也影响了BravoX和Xerox Star。BravoX是查尔斯·西蒙尼(Charles Simonyi)在PARC开发的Bravo的继承者。Star是第一个带有鼠标、位图显示、窗口和文件服务器的商业办公系统。Star有一个完全一致且近乎无模态的用户界面。

BravoX和Star都支持无模态“点击并键入”插入,但都没有使用两步剪切/复制-粘贴。用户可以用比Gypsy更少的操作进行移动或复制——在一个版本的BravoX中是两个操作,在Star中是三个操作,而在Gypsy中是四个操作。但是实现更少操作的折衷是一种模态,限制用户在源和目标选择之间的操作。

在20世纪80年代早期,施乐的非模态编辑器影响了苹果的丽萨(Lisa)和麦金塔(Macintosh)电脑,以及微软的Word、Office和Windows。微软和苹果产品的流行使得剪切/复制-粘贴和无模态文本编辑无处不在,甚至可以应用到带有多点触摸屏的智能手机上。

现代的文字处理程序中仍然有一些模式,比如微软Word中的格式刷。设计者仍然在尝试其他移动文本的方法,比如Word中拖放。但这些都是不感兴趣的用户通常可以忽略的快捷方式。

Post-Gypsy

莫特从Ginn回到PARC后,他加入了一个不同的项目。对我来说,接下来是Ginn要求的页面排版系统。我使用Smalltalk构建了一个名为Cypress的原型。用户进行选择后,编辑菜单会在附近自动弹出,就像今天的iPhone一样。在Smalltalk-76中实现的Cypress原型运行速度非常慢,为了演示它,我们以每秒三帧的速度拍摄视频,并以每秒30帧的速度回放。

那时,施乐公司的工作重点变了,我的个人兴趣也变了。Ginn同意再等几年,直到他们能够在维护良好的商业系统上进行页面布局。我开发了Smalltalk Browser,它是当今IDE(集成开发环境)的前身。工作之余,我涉足了业余爱好者计算机,并为Commodore PET开发了教育应用程序。1979年12月,史蒂夫·乔布斯对帕洛阿尔托研究中心进行了一次改变世界的访问,我开始重新思考我的职业生涯。

1980年代

到1980年,施乐公司的复印机专利到期,公司正在为生存而战。很明显,除了针对商业用户的激光打印机和STAR外,我们不会将太多PARC的工作推向市场。

我去苹果公司研究丽莎(Lisa)电脑的用户界面和应用程序。为了开发丽莎用户界面标准,我和多才多艺的比尔·阿特金森(Bill Atkinson)合作,他和我一样坚持简单(simplicity)。那年夏天的几个星期里,他几乎每天晚上都会制作一个原型,第二天早上我会进行可用性研究。杰夫·拉斯金(Jef Raskin)当时正着手开发他称之为麦金塔(Macintosh)的概念,他对鼠标持怀疑态度,但慷慨地提供了建议和支持。

丽莎(Lisa)软件工程师将非模态编辑原则内在化,并找到了使其应用程序非模态化的巧妙方法。我的工作是管理,并就界面设计做出基于证据的决策。

丽莎(Lisa)对图形用户界面的众多贡献之一是对话框,它是为非模态命令提供参数的工具。罗德·珀金斯(Rod Perkins)设计了丽莎(Lisa)对话框。典型的对话框在打开时阻止用户继续工作。这使得它具有模态性。但是对话框中的小部件可以以任何顺序操作,使其在本地无模态化。

在苹果,就像在帕洛阿尔托研究中心一样,新的用户界面也遭到了质疑,其中一些人更喜欢NLS风格的界面。但苹果想要的是产品。“宗教战争”确实爆发了,但持续不了几天。经验教训:如果你需要打一场硬仗,选择一座小山丘。

今天

在20世纪70年代,移动(move)和复制是用户想要执行的编辑,剪切/复制-粘贴是用户执行它们的一种新方式。现在这些术语的作用颠倒过来了。用户不会说他们想“移动”(move)东西;他们说他们想要“剪切和粘贴”它们。甚至关于Star、NLS和其他具有模态移动的系统的学术著作,也常常将它们的移动/复制操作称为剪切/复制-粘贴。

在计算机时代之前,剪切和粘贴这个术语是出版业的行话。“复制和粘贴”这个术语似乎起源于Gypsy。这两个术语今天都被广泛理解。我不知道谁创造了复制粘贴工作(copy-paste job)或复制粘贴错误(copy-paste error)。但是当我犯了复制粘贴错误,不像大多数人,我没有其他人可以责怪。

编译自:A Personal History of Modeless Text Editing and Cut/Copy-Paste

相关阅读:

施乐帕洛阿尔托研究中心(PARC):“信息架构师”

道格·恩格尔巴特是如何成就“所有演示之母”(the Mother of All Demos)

计算机先驱艾伦·凯访谈