RIP: “剪切/復(fù)制-粘貼”功能發(fā)明人拉里·特斯勒(Larry Tesler)于2020年2月17日去世,終年74歲劫拢。
我做了50多年的計(jì)算機(jī)程序員搓幌。從一開始,我就被那些不好用的軟件所困擾豆茫。我在斯坦福大學(xué)讀書的時候侨歉,在施樂帕洛阿爾托研究中心、蘋果公司揩魂、亞馬遜公司和雅虎公司擔(dān)任各種工程幽邓、用戶體驗(yàn)和管理職務(wù)的時候,我就開始著手解決這個問題火脉。
我最著名的貢獻(xiàn)是剪切/復(fù)制-粘貼牵舵。我和一些同事合作了幾年,開發(fā)了這個模式倦挂。但是剪切/復(fù)制-粘貼不是一個獨(dú)立的項(xiàng)目畸颅;它是圖形用戶界面(GUI)模式的集合之一,我稱之為非模態(tài)文本編輯(modeless text editing)方援。
我不是第一個注意到模式(modes)對錯誤率的不良影響的人没炒。我也不是第一個試圖消除最繁瑣模式的人。但對我來說犯戏,模式簡化(mode reduction)成了一項(xiàng)研究工作和商業(yè)使命送火。我?guī)椭_發(fā)了非模態(tài)編輯的理論基礎(chǔ)和第一個確認(rèn)理論有效性的產(chǎn)品拳话。
二十世紀(jì)六十年代
1960年,當(dāng)我還是布朗克斯科學(xué)高中(Bronx High School of Science)的學(xué)生時漾脂,我學(xué)了一門類似FORTRAN的語言假颇。我喜歡它的功能,但它不直觀的限制讓我沮喪骨稿。
1961年笨鸡,我作為一名新生進(jìn)入斯坦福大學(xué)。1962年坦冠,我對一種開創(chuàng)性的動畫語言進(jìn)行了可用性改進(jìn)形耗。那個項(xiàng)目給了我簡化可用性研究(discount usability studies)和參與式設(shè)計(jì)的經(jīng)驗(yàn)。
很快辙浑,我就成為了一個很好的程序員激涤,使軟件易于使用。教授和研究生都請我咨詢判呕。1963年倦踢,我創(chuàng)建了一家軟件公司,它是帕洛阿爾托黃頁上僅有的六家公司之一侠草。
在20世紀(jì)60年代辱挥,交互式分時系統(tǒng)開始取代批處理系統(tǒng),并且開始在微型計(jì)算機(jī)上使用定點(diǎn)設(shè)備(pointing devices)边涕。我更喜歡交互式晤碘,但是大多數(shù)交互程序都有模式,這總是讓我出錯功蜓。我開始分析命令語言园爷,找出模式和模式錯誤的原因。
1968年式撼,我開始在斯坦福人工智能實(shí)驗(yàn)室(SAIL)為精神病學(xué)家和認(rèn)知科學(xué)家肯·科爾比(Ken Colby)工作童社。科爾比開發(fā)了一個名為PARRY的對話程序端衰,它可以模擬一個偏執(zhí)型的病人叠洗。在為他工作期間,我認(rèn)識了艾倫·凱(Alan Kay)旅东、唐·諾曼(Don Norman)灭抑、特里·維諾格拉德(Terry Winograd)和大衛(wèi)·坎菲爾德·史密斯(David Canfield Smith)——他們后來都成了人機(jī)交互的先驅(qū)——并且我學(xué)到了一點(diǎn)認(rèn)知心理學(xué)的知識。
1969年初抵代,我參觀了位于加利福尼亞州門洛帕克的斯坦福研究所的道格·恩格爾巴特(Doug Engelbart)的增強(qiáng)研究中心(Augmentation Research Center)腾节。恩格爾巴特最近首次公開展示了NLS(oN Line System)在線系統(tǒng),這是一個建立在分時系統(tǒng)基礎(chǔ)上的有遠(yuǎn)見的原型。這一開創(chuàng)性事件被稱為“所有演示之母”(the mother of all demos)案腺。這些創(chuàng)新包括鼠標(biāo)庆冕、平鋪窗口、多視圖劈榨、提綱(outlining)访递、超文本、協(xié)作編輯和視頻會議同辣。
從1968年到1970年拷姿,我有時會為當(dāng)?shù)氐囊患曳菭I利組織制作一份季度目錄。在用刀片和膠水“剪切和粘貼”的時候旱函,我設(shè)想了一個交互式的頁面合成系統(tǒng)响巢,可以簡化這個過程。
在同一時期棒妨,彭蒂·卡內(nèi)瓦(Pentti Kanerva)向我展示了布萊恩·托利弗(Brian Tolliver)的全屏文本編輯器TVEDIT的PDP-10端口踪古。卡內(nèi)瓦添加了一個簡單的錯誤恢復(fù)命令oops券腔。他還增加了兩步移動:刪除步驟將用戶指定的文本移動到堆棧頂部伏穆;檢索步驟將堆棧的頂部元素移動到用戶指定的位置。在兩個步驟之間纷纫,用戶可以做任何保持堆棧完整性的事情蜈出,包括歸檔、搜索涛酗、輸入和移動其他文本。雖然TVEDIT有模式偷厦,但在我看來商叹,兩步移動和類似于錯誤恢復(fù)的命令有助于使設(shè)計(jì)合理的編輯器無模式化。
二十世紀(jì)七十年代
1971年只泼,人工智能實(shí)驗(yàn)室的主任萊斯·歐內(nèi)斯特(Les Earnest)讓我設(shè)計(jì)并實(shí)現(xiàn)一種頁面構(gòu)成語言(page-makeup language)剖笙,這種語言可以對章節(jié)進(jìn)行編號,并生成索引请唱、目錄弥咪、腳注、交叉引用等十绑。我提議讓它具有交互性聚至,但他想要一個批處理系統(tǒng),我承認(rèn)這更容易些本橙。
在幾個月的緊張工作中扳躬,我創(chuàng)建了PUB:文檔編譯器(The Document Compiler)。PUB是一種帶有嵌入式標(biāo)簽和腳本的標(biāo)記語言。它在阿帕網(wǎng)(ARPANET)連接的大學(xué)的研究生中變得流行起來贷币。
973年击胜,我加入了施樂帕洛阿爾托研究中心(PARC),成為帕洛阿爾托研究中心在線辦公系統(tǒng)(POLOS役纹,PARC Online Office System)團(tuán)隊(duì)的一員偶摔,但我花了一些時間和艾倫·凱(Alan Kay)的學(xué)習(xí)研究小組(Learning Research Group)一起研究Smalltalk。我對與凱合作感興趣的一個原因是促脉,他發(fā)明重疊窗口(overlapping windows)的動機(jī)是希望找到模式的替代方案辰斋。
POLOS團(tuán)隊(duì)的大多數(shù)成員都是從SRI的恩格爾巴特(Engelbart)小組來到施樂的。我的經(jīng)理比爾·英格利什(Bill English)參與了鼠標(biāo)的設(shè)計(jì)嘲叔,合著了恩格爾巴特1968年的論文亡呵,并管理了著名的NLS演示。
從一開始硫戈,NLS主要用于構(gòu)建和修改技術(shù)規(guī)范锰什、源代碼等。它的老用戶發(fā)現(xiàn)它很適合這個功能丁逝。但我覺得汁胆,作為編輯常見文檔(如信件、備忘錄和表單)的工具霜幼,它不會得到公眾的認(rèn)可嫩码。它的命令語言有多種模式。在文本輸入模式之外罪既,幾乎每一次按鍵和點(diǎn)擊都會改變模式铸题。
NLS命令語言的語法隨著時間的推移而演變,但它始終是前綴琢感,其中動詞在其對象之前指定丢间。要刪除一個段落,你告訴NLS刪除之前驹针,你告訴它應(yīng)該刪除什么段落烘挫。
當(dāng)指針指向某物時,點(diǎn)擊鼠標(biāo)按鈕被稱為標(biāo)記(marking)柬甥。需要標(biāo)記的三個常用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>表示)可以從鍵盤或鼠標(biāo)調(diào)用饮六。Text是任意范圍的文本。Statement通常是一個段落苛蒲。
當(dāng)用戶鍵入并單擊時卤橄,命令行會在一個可見的窗口中累積。用戶可以從窗口中刪除最新的命令行臂外,或者刪除整行虽风,然后重新開始棒口。當(dāng)用戶調(diào)用<ok>時,NLS會刪除整行辜膝,防止進(jìn)一步修改无牵。然后執(zhí)行命令。
因?yàn)镸ove是單個的命令厂抖,所以在輸入“M”之前茎毁,目標(biāo)和源都必須在屏幕上可見。同樣的限制也適用于復(fù)制和替換忱辅∑咧可折疊提綱(collapsible outlines)等功能提供了規(guī)避限制的方法,但用戶必須學(xué)習(xí)更多語法并提前計(jì)劃墙懂。
我相信橡卤,如果我們繼續(xù)使用NLS語法,競爭對手將在學(xué)習(xí)速度和易用性方面超過施樂(Xerox)损搬。我的大多數(shù)同事都不關(guān)心碧库。他們認(rèn)為NLS很直觀,因?yàn)樗恼Z法類似英語的動賓語法巧勤。這種語法有很大的發(fā)展空間嵌灰。命令行使得從舊終端使用NLS成為可能。
在我工作的第一周颅悉,比爾·英格利森(Bill English)讓我和另一位新雇員杰夫·魯利森(Jeff Rulifson)一起工作沽瞭,對編輯行業(yè)的未來發(fā)展進(jìn)行展望。我和魯利森見過幾次剩瓶,進(jìn)行頭腦風(fēng)暴驹溃。當(dāng)我向他吐露我對NLS命令語言的擔(dān)憂時,他透露說這是他設(shè)計(jì)的延曙。他原本打算把它作為軟件測試的臨時工具吠架。恩格爾巴特的團(tuán)隊(duì)進(jìn)行了可用性研究,并不斷改進(jìn)搂鲫,但是他們沒有認(rèn)真考慮后綴語法,在后綴語法中磺平,動詞是在其賓語之后指定的魂仍。
我向魯利森(Jeff Rulifson)介紹了后綴語法的錯誤恢復(fù)優(yōu)勢,即:
如果用戶在指定對象時犯了選擇錯誤拣挪,她可以再次選擇擦酌。不需要在命令行中進(jìn)行備份。不需要顯示命令行菠劝。
如果用戶選擇了錯誤的動詞赊舶,其后果將立即顯現(xiàn)。為了糾正錯誤,她可以調(diào)用一個取消命令的操作笼平。
我以前從未見過比TVEDIT的oops更通用的錯誤恢復(fù)命令园骆。魯利森告訴我,我們的PARC同事沃倫·泰特爾曼(Warren Teitelman)在他的LISP shell中應(yīng)用過寓调。它被恰當(dāng)?shù)孛麨槌蜂N(undo)锌唾。
我和魯利森還討論了圖形在界面中的使用。他最近讀了一本關(guān)于符號學(xué)的書夺英,書中將圖標(biāo)定義為已標(biāo)記的象形圖晌涕,并提到了它與交互式計(jì)算的潛在相關(guān)性。
我們在PARC分發(fā)了幾個版本的白皮書痛悯。它的標(biāo)題是“OGDEN:非程序員的通用的顯示編輯器”(OGDEN: An Overly General Display Editor for Non programmers)余黎。我們提出了帶有桌子(desks)和文件柜的標(biāo)志性用戶界面。我們還提出了剪切和粘貼的非模態(tài)后綴語法载萌。
魯利森愿意徹底改變他為NLS設(shè)計(jì)的用戶界面惧财,這使得POLOS團(tuán)隊(duì)的其他成員更容易考慮我的建議。在芭芭拉·格羅茨(Barbara Grosz)的幫助下炒考,我進(jìn)行了用戶研究键菱,包括空白屏幕研究,這些研究揭示了模式帶來的問題神年。然后玄货,使用Smalltalk語言的早期版本,我開發(fā)了一個簡單的瓤帚、類似打字機(jī)的編輯器描姚,只有很少的模式。從未接觸過電腦的人可以在五分鐘內(nèi)學(xué)會簡單的編輯器戈次。
Gypsy
比爾·英格利森(Bill English)表揚(yáng)了我的工作轩勘,但讓我把注意力轉(zhuǎn)向POLOS系統(tǒng)。我剛開始這么做怯邪,就有了意外的發(fā)現(xiàn)绊寻。施樂(Xerox)旗下的教科書出版商Ginn and Company要求PARC開發(fā)兩個應(yīng)用程序,一個用于排版編輯(galley editing)悬秉,另一個用于頁面布局澄步。英格利森(Bill English)知道我會感興趣,讓我負(fù)責(zé)這個項(xiàng)目和泌。他指派丹·斯溫哈特(Dan Swinehart)給我提建議村缸。我在斯坦福人工智能實(shí)驗(yàn)室(SAIL)共事過的丹·斯溫哈特(Dan Swinehart)是模式的強(qiáng)烈反對者。
我建議在頁面排版系統(tǒng)和排版編輯中使用剪切和粘貼武氓,這讓Ginn管理層很高興√菝螅現(xiàn)在我的實(shí)驗(yàn)有了一批愿意接受的聽眾仇箱。
另一個可喜的轉(zhuǎn)變是,Ginn雇傭了一位名叫蒂姆·莫特(Tim Mott)的軟件工程師东羹,在他們位于波士頓附近的工廠進(jìn)行人種學(xué)研究(ethnographic study)剂桥。1974年,在完成了這項(xiàng)研究之后百姓,莫特來到PARC幫我實(shí)現(xiàn)了他稱之為Gypsy的排版編輯器渊额。當(dāng)他到達(dá)時,幾臺施樂的Alto個人電腦已經(jīng)開始工作了垒拢。查爾斯·西蒙尼(Charles Simonyi)和湯姆·馬洛伊(Tom Malloy)已經(jīng)在Alto運(yùn)行了Bravo文本編輯器的早期版本旬迹。Bravo是一個開創(chuàng)性的所見即所得應(yīng)用程序,是巴特勒·蘭普森(Butler Lampson)和西蒙尼的創(chuàng)意求类。
為了實(shí)現(xiàn)Gypsy奔垦,我們采用了Bravo的源代碼,用非模態(tài)用戶界面代替了模態(tài)用戶界面尸疆。應(yīng)Ginn的要求椿猎,我們增加了粗體、斜體和下劃線寿弱,以及支持版本和草稿的歸檔系統(tǒng)犯眠。這個軟件花了幾個月才完成。
Gypsy引入了幾個非模態(tài)的用戶界面特性症革,這些特性現(xiàn)在是標(biāo)準(zhǔn)的筐咧。用戶可以:
在字符之間單擊,看到閃爍的插入點(diǎn)出現(xiàn)噪矛,然后開始鍵入量蕊;
向下拖動以選擇文本;
雙擊一個單詞進(jìn)行選擇艇挨;
分兩步移動文本残炮,稱為剪切和粘貼;
分兩步復(fù)制文本缩滨,稱為復(fù)制和粘貼势就;以及
需要搜索,請?jiān)诳删庉嬜侄沃墟I入或粘貼搜索文本脉漏。
當(dāng)我們開始實(shí)現(xiàn)時苞冯,我還沒有把界面的所有細(xì)節(jié)都弄清楚。我認(rèn)為我們應(yīng)該在開發(fā)過程中進(jìn)行迭代鸠删。我沒有想到的是莫特的創(chuàng)造力,以及他對在Ginn觀察到的目標(biāo)用戶的適應(yīng)程度贼陶。例如刃泡,當(dāng)我提出的選詞建議無一奏效時巧娱,是他想出了雙擊的主意。經(jīng)驗(yàn)教訓(xùn):你并不知道所有的答案烘贴。組隊(duì)禁添。
在Gypsy的開發(fā)過程中,PARC雇傭了湯姆·莫蘭(Tom Moran)桨踪、斯圖·卡德(Stu Card)和貝弗利·麥克休(Beverly McHugh)老翘。他們觀察到我正在進(jìn)行一項(xiàng)可用性研究,并提出為我們進(jìn)行未來的研究锻离。貝弗利的研究對于改進(jìn)Gypsy的用戶界面非常有價(jià)值铺峭。教訓(xùn):有些人能比你做得更好。組隊(duì)汽纠。
1975年初Gypsy完成后卫键,莫特把它帶到了Ginn。用戶喜歡它的優(yōu)點(diǎn)虱朵。但是他們不喜歡它的缺點(diǎn)莉炉,尤其是幾乎完全沒有代碼維護(hù),而這是我們研究人員忽略的一個工程需求碴犬。經(jīng)驗(yàn)教訓(xùn):如果你打算把你的研究原型給那些可能會逐漸依賴它的用戶絮宁,確保有人已經(jīng)計(jì)劃好了維護(hù)。
影響
1975年6月服协,《商業(yè)周刊》(Businessweek)發(fā)表了一篇名為《未來辦公室》(The Office of the Future)的特稿绍昂,其中提到了Gypsy。
帕洛阿爾托研究中心的其他同事以我們的工作為基礎(chǔ)蚯涮。莫特和我使用專用的按鍵進(jìn)行剪切治专、復(fù)制、粘貼和撤銷遭顶。部分受威廉·紐曼(William Newman)在他的Markup繪畫程序中使用彈出圖標(biāo)網(wǎng)格的啟發(fā)张峰,丹·英戈?duì)査梗―an Ingalls)在Smalltalk中實(shí)現(xiàn)了一個非常簡單的彈出菜單,包含一個列清單棒旗,列出了四個命令名喘批。這個菜單演變成了今天常見的右鍵上下文菜單。教訓(xùn):當(dāng)你認(rèn)為它是最簡單的時候铣揉,也許有一種方法可以讓它變得更簡單饶深。
Gypsy也影響了BravoX和Xerox Star。BravoX是查爾斯·西蒙尼(Charles Simonyi)在PARC開發(fā)的Bravo的繼承者逛拱。Star是第一個帶有鼠標(biāo)敌厘、位圖顯示、窗口和文件服務(wù)器的商業(yè)辦公系統(tǒng)朽合。Star有一個完全一致且近乎無模態(tài)的用戶界面俱两。
BravoX和Star都支持無模態(tài)“點(diǎn)擊并鍵入”插入饱狂,但都沒有使用兩步剪切/復(fù)制-粘貼。用戶可以用比Gypsy更少的操作進(jìn)行移動或復(fù)制——在一個版本的BravoX中是兩個操作宪彩,在Star中是三個操作休讳,而在Gypsy中是四個操作。但是實(shí)現(xiàn)更少操作的折衷是一種模態(tài)尿孔,限制用戶在源和目標(biāo)選擇之間的操作俊柔。
在20世紀(jì)80年代早期,施樂的非模態(tài)編輯器影響了蘋果的麗薩(Lisa)和麥金塔(Macintosh)電腦活合,以及微軟的Word雏婶、Office和Windows。微軟和蘋果產(chǎn)品的流行使得剪切/復(fù)制-粘貼和無模態(tài)文本編輯無處不在芜辕,甚至可以應(yīng)用到帶有多點(diǎn)觸摸屏的智能手機(jī)上尚骄。
現(xiàn)代的文字處理程序中仍然有一些模式,比如微軟Word中的格式刷侵续。設(shè)計(jì)者仍然在嘗試其他移動文本的方法倔丈,比如Word中拖放。但這些都是不感興趣的用戶通匙次希可以忽略的快捷方式需五。
Post-Gypsy
莫特從Ginn回到PARC后,他加入了一個不同的項(xiàng)目轧坎。對我來說宏邮,接下來是Ginn要求的頁面排版系統(tǒng)。我使用Smalltalk構(gòu)建了一個名為Cypress的原型缸血。用戶進(jìn)行選擇后蜜氨,編輯菜單會在附近自動彈出,就像今天的iPhone一樣捎泻。在Smalltalk-76中實(shí)現(xiàn)的Cypress原型運(yùn)行速度非常慢飒炎,為了演示它,我們以每秒三幀的速度拍攝視頻笆豁,并以每秒30幀的速度回放郎汪。
那時,施樂公司的工作重點(diǎn)變了闯狱,我的個人興趣也變了煞赢。Ginn同意再等幾年,直到他們能夠在維護(hù)良好的商業(yè)系統(tǒng)上進(jìn)行頁面布局哄孤。我開發(fā)了Smalltalk Browser照筑,它是當(dāng)今IDE(集成開發(fā)環(huán)境)的前身。工作之余,我涉足了業(yè)余愛好者計(jì)算機(jī)凝危,并為Commodore PET開發(fā)了教育應(yīng)用程序饭弓。1979年12月,史蒂夫·喬布斯對帕洛阿爾托研究中心進(jìn)行了一次改變世界的訪問媒抠,我開始重新思考我的職業(yè)生涯。
1980年代
到1980年咏花,施樂公司的復(fù)印機(jī)專利到期趴生,公司正在為生存而戰(zhàn)。很明顯昏翰,除了針對商業(yè)用戶的激光打印機(jī)和STAR外苍匆,我們不會將太多PARC的工作推向市場。
我去蘋果公司研究麗莎(Lisa)電腦的用戶界面和應(yīng)用程序棚菊。為了開發(fā)麗莎用戶界面標(biāo)準(zhǔn)浸踩,我和多才多藝的比爾·阿特金森(Bill Atkinson)合作,他和我一樣堅(jiān)持簡單(simplicity)统求。那年夏天的幾個星期里检碗,他幾乎每天晚上都會制作一個原型,第二天早上我會進(jìn)行可用性研究码邻。杰夫·拉斯金(Jef Raskin)當(dāng)時正著手開發(fā)他稱之為麥金塔(Macintosh)的概念折剃,他對鼠標(biāo)持懷疑態(tài)度,但慷慨地提供了建議和支持像屋。
麗莎(Lisa)軟件工程師將非模態(tài)編輯原則內(nèi)在化怕犁,并找到了使其應(yīng)用程序非模態(tài)化的巧妙方法。我的工作是管理己莺,并就界面設(shè)計(jì)做出基于證據(jù)的決策奏甫。
麗莎(Lisa)對圖形用戶界面的眾多貢獻(xiàn)之一是對話框,它是為非模態(tài)命令提供參數(shù)的工具凌受。羅德·珀金斯(Rod Perkins)設(shè)計(jì)了麗莎(Lisa)對話框阵子。典型的對話框在打開時阻止用戶繼續(xù)工作。這使得它具有模態(tài)性胁艰。但是對話框中的小部件可以以任何順序操作款筑,使其在本地?zé)o模態(tài)化。
在蘋果腾么,就像在帕洛阿爾托研究中心一樣奈梳,新的用戶界面也遭到了質(zhì)疑,其中一些人更喜歡NLS風(fēng)格的界面解虱。但蘋果想要的是產(chǎn)品攘须。“宗教戰(zhàn)爭”確實(shí)爆發(fā)了殴泰,但持續(xù)不了幾天于宙。經(jīng)驗(yàn)教訓(xùn):如果你需要打一場硬仗浮驳,選擇一座小山丘。
今天
在20世紀(jì)70年代捞魁,移動(move)和復(fù)制是用戶想要執(zhí)行的編輯至会,剪切/復(fù)制-粘貼是用戶執(zhí)行它們的一種新方式。現(xiàn)在這些術(shù)語的作用顛倒過來了谱俭。用戶不會說他們想“移動”(move)東西奉件;他們說他們想要“剪切和粘貼”它們。甚至關(guān)于Star昆著、NLS和其他具有模態(tài)移動的系統(tǒng)的學(xué)術(shù)著作县貌,也常常將它們的移動/復(fù)制操作稱為剪切/復(fù)制-粘貼。
在計(jì)算機(jī)時代之前凑懂,剪切和粘貼這個術(shù)語是出版業(yè)的行話煤痕。“復(fù)制和粘貼”這個術(shù)語似乎起源于Gypsy。這兩個術(shù)語今天都被廣泛理解接谨。我不知道誰創(chuàng)造了復(fù)制粘貼工作(copy-paste job)或復(fù)制粘貼錯誤(copy-paste error)摆碉。但是當(dāng)我犯了復(fù)制粘貼錯誤,不像大多數(shù)人脓豪,我沒有其他人可以責(zé)怪兆解。
編譯自:A Personal History of Modeless Text Editing and Cut/Copy-Paste
相關(guān)閱讀:
施樂帕洛阿爾托研究中心(PARC):“信息架構(gòu)師”