计算机科学入门
苹果在1984年发布的 Macintosh,是普通人可以买到的 , 第一台带 图形用户界面 的计算机,还带一个鼠标。
那时的计算机全是 命令行 ,图形界面是个革命性进展,不必记住或猜正确的命令,图形界面直接显示了,你可以做什么,只要在屏幕上找选项就行了。
这是一个 选择并点击
的界面,突然间计算机更 直观 了。
oN-Line System
不只是爱好者或科学家能用计算机 , 任何人都可以用计算机解决问题,人们认为是 Macintosh , 把图形用户界面(GUI)变成主流。
但实际上图形界面是数十年研究的成果,我们之前讨论了早期的交互式图形程序,比如 Sketchpad
和 太空战争
, 都是 1962 年制作的,但都是一次性项目,不是整合良好的体验。
现代图形界面的先驱 , 可以说是 道格拉斯·恩格尔巴特 (Douglas Engelbart),
二战期间 , 恩格尔巴特 驻扎在菲律宾做 雷达操作员 ,他读了 万尼瓦尔·布什 的 Memex
文章,这些文章启发了他。
当他海军服役结束时,他回到学校,1955年在 UCB 取得博士学位,他沉溺于新兴的计算机领域,他在1962年一份开创性报告中 , 汇集了各种想法,报告名为: 增强人类智力
。
恩格尔巴特认为,人类面临的问题 , 比解决问题的能力增长得更快,因此,找到增强智力的方法 , 似乎是必要且值得一做的目标。
他构想计算机不仅做自动化工作,也可以成为未来知识型员工 , 应对复杂问题的工具,伊凡·苏泽兰 的 几何画板
, 进一步启发了恩格尔巴特。
他决定动手把愿景变为现实 , 开始招募团队来做 oN-Line System
,他意识到如果只有键盘 , 对他想搭建的程序来说是不够的。
我们设想人们用计算机辅助工作站来增强工作,用户需要和屏幕上的信息互动,用某种设备在屏幕上移动 [光标] 。——道格拉斯·恩格尔巴特
第一个鼠标
1964 年,和同事 比尔·英格利希 的共同努力下,他创造了第一个 计算机鼠标 ,尾部有一根线,看起来很像老鼠 , 因此 鼠标
这个名字沿用了下来。
1968年 恩格尔巴特,在 秋季计算机联合会议
展示了他的系统,这次演示被视为如今 所有 演示的祖先。
演示有 90 分钟 , 展现了现代计算机的许多功能,包括 位图图像
,视频会议
,文字处理
和 实时协作编辑文件
。
还有现代图形界面的原型比如 鼠标
和 多窗口
,不过窗口不能重叠,远远先于那个时代,就像其它 跨时代 的产品一样,它最终失败了,至少商业上是这样。
但它对当时的计算机研究者影响巨大,恩格尔巴特因此获得 1997 年 图灵奖 。
施乐奥托
政府资金在 1970 年代初开始减少,那时,恩格尔巴特团队里的许多人,包括 比尔·英格利希 ,去了施乐公司新成立的 帕洛阿尔托研究中心
,更为人熟知的名字是 Xerox PARC
,他们在这里开发了第一台带真正 GUI 的计算机: 施乐奥托
(Xerox Alto) ,于 1973 年完成。
为了让计算机易于使用,需要的不只是花哨的图形,还要借助一些人们已经熟悉的概念,让人们不用培训 就能很快明白如何使用。
桌面隐喻
施乐的答案是将2D屏幕当作 桌面
(desktop),就像桌面上放很多文件一样,用户可以打开多个程序 , 每个程序都在一个框里,叫 窗口
(window)。
就像桌上的文件一样,窗口可以重叠,挡住后面的东西,还有桌面配件,比如计算器和时钟,用户可以把配件在屏幕上四处移动。
它不是现实桌面的完美复制,而是用桌面这种隐喻,因此叫 桌面隐喻
(Desktop Metaphor)。
WIMP 界面和 GUI
有很多方法来设计界面 , 但 Alto 团队用 窗口,图标,菜单和指针 来做,因此叫 WIMP 界面,如今大部分图形界面都用这个。
它还提供了一套基本部件,可复用的基本元素 , 比如 按钮,打勾框,滑动条和标签页 ,这些也来自现实世界,让人们有熟悉感。
GUI 程序就是这些小组件组成的,让我们试着写一个简单例子。
首先,我们必须告诉操作系统 , 为程序创建一个窗口,我们通过 GUI API
实现 , 需要指定窗口的 名字 和 大小 ,假设是 500×500 像素。
现在再加一些小组件,一个文本框和一个按钮,创建它们需要一些参数,首先要指定出现在 哪个窗口 , 因为程序可以有多个窗口。
还要指定默认 文字 , 窗口中的 X,Y 位置 以及 宽度 和 高度 。
但它还没有功能,如果点 Roll 按钮,什么也不会发生。
在之前的例子中,代码是从上到下执行的,但 GUI 是 事件驱动编程
(event-driven programming),代码可以在 任意时间 执行以响应事件。
这里是用户触发事件 , 比如点击按钮,选一个菜单项,或滚动窗口。
假设当用户点 Roll 按钮,我们产生 1 到 20 之间的随机数,然后在文本框中,显示这个数字,我们可以写一个函数来做。
我们还可以让它变有趣些,假设随机数是 20 , 就把背景颜色变成血红色!
最后,把代码与 事件 相连 , 每次点按钮时都触发代码。
那么,要设置事件触发时,由哪个函数来处理,我们可以在初始化函数中,加一行代码来实现。
我们要处理的,是 点击
事件 , 然后函数会处理这个事件。V
这就是程序背后的原理,在编辑器里点 按钮 或菜单里选 关机 ,一个处理该事件的 函数 会触发。
施乐之星系统
大约制作了 2000 台奥托, 有的在施乐公司内部用,有的送给大学实验室,从来没有商业出售过。
然而,PARC 团队不断完善硬件和软件,最终于 1981 年发布了 施乐之星系统
(Xerox Star system),施乐之星扩展了 "桌面隐喻" 。
现在文件看起来就像一张纸 , 还可以存在文件夹里,这些都可以放桌面上,或数字文件柜里,这样来隐喻底层的文件系统。
施乐卖的是印刷机 , 但在文本和图形制作工具领域也有领先,例如,他们首先使用了, 剪切
, 复制
, 粘贴
这样的术语,这个比喻来自编辑打字机文件,真的是剪刀 "剪切" , 然后胶水 "粘贴" 到另一个文件,然后再复印一次,新文件就是一层了,看不出编辑的痕迹。
文字处理软件出现后 , 这种手工做法就消失了,Apple II
和 Commodore PET
上有文字处理软件,但施乐在这点上走的更远,无论你在计算机上做什么,文件打印出来应该长得一样,他们叫这个 所见即所得
。
不幸的是,就像恩格尔巴特的 oN-Line System
,施乐之星也领先于那个时代,销售量不高,因为在办公室里配一个,相当如今20万美元。
苹果
IBM 同年推出了 IBM PC
,之后便宜的 IBM兼容 计算机席卷市场,但 PARC 研究人员花了十几年做的这些 , 没有被浪费。
1979 年 12 月,施乐之星出货前一年半,有个人去施乐公司参观 , 你可能听说过这个人:史蒂夫·乔布斯 。
这次参观有很多传闻,许多人认为, 乔布斯和苹果偷走了施乐的创意,但那不是事实,事实上是施乐公司主动找苹果,希望合作。
最终施乐还买了苹果的一百万美元股份,在苹果备受瞩目的 首次公开募股(IPO) 前买的,但一个额外条款是: 公布一切施乐研究中心正在进行的酷工作 。
史蒂夫知道他们很厉害,但他完全没预想到这些,其中有个演示是,一个清晰的位图显示器上,运行着施乐公司的图形界面 , 操作全靠鼠标直观进行。
就像拨开了眼前的一层迷纱,我可以看到计算机产业的未来。 ——史蒂夫·乔布斯
Apple Lisa
史蒂夫和随行的工程师回到苹果公司,开始开发新功能,比如菜单栏和垃圾桶,垃圾桶存删除文件。
苹果第一款有图形界面和鼠标的产品,是 1983 年发行的 Apple Lisa
,一台超级先进的机器,标了 "超级先进" 的价格,差不多是如今的 25000 美元虽然比施乐之星便宜不少,但在市场上同样失败。
Macintosh
幸运的是,苹果还有另一个项目: Macintosh
,于 1984 年发布,价格大约是如今的 6000 美元,Lisa 的四分之一,它成功了,开售 100 天就卖了 7 万台。
但在最初的狂潮后,销售额开始波动,苹果公司卖的 Apple II
比 Mac
多,一个大问题是: 没人给这台新机器做软件 。
之后情况变得更糟,竞争对手赶上来了,不久,其它价格只有 Mac 几分之一的个人计算机 , 有了原始但可用的图形界面,消费者认可它们, PC 软件开发者也认可。
随着苹果的财务状况日益严峻 , 以及和苹果新 CEO 约翰·斯卡利 的关系日益紧张,史蒂夫乔布斯被赶出了苹果公司。
微软
Windows 1.0
几个月后,微软发布了 Windows 1.0
,它也许不如 Mac OS
漂亮,但让微软在市场中站稳脚跟 , 奠定了统治地位。
十年内,95%的个人计算机上都有微软的 Windows ,最初,Mac OS 的爱好者还可以说, Mac 有卓越的图形界面和易用性。
Windows 95
Windows 早期版本都是基于 DOS
, 而 DOS 设计时没想过运行图形界面,但 Windows 3.1
之后,微软开始开发新的,面向消费者的 GUI 操作系统,叫 Windows 95
。
这是一个意义非凡的版本 , 不仅提供精美的界面,还有 Mac OS 没有的高级功能,比如 多任务
和 受保护内存
。
Windows 95 引入了许多 , 如今依然见得到的 GUI 元素,比如 开始菜单 , 任务栏 和 Windows 文件管理器 。
Microsoft Bob
不过微软也失败过,为了让桌面更简单友好 , 微软开发了一个产品叫 Microsoft Bob
,将比喻用到极致。
现在屏幕上有了一个虚拟房间,程序是物品,可以放在桌子和书架上,甚至还有噼啪作响的壁炉 , 和提供帮助的虚拟狗狗,你看到那边的门没?是的,那些门通往不同房间 , 房间里有不同程序。
你可能猜到了,它没有获得成功。
这是一个好例子,说明如今的用户界面,是自然选择后的结果,无论你用的是 ,Windows,Mac,Linux 或其他 GUI ,几乎都是施乐奥托 WIMP 的变化版。
一路上,人们试了各种做法并失败了,一切都必须 发明,测试,改进,适应或抛弃 。
如今,图形界面无处不在 , 使用体验一般只是可以接受,而不是非常好,你肯定体验过差劲的设计,比如下载了很烂的 App,用过别人糟糕的手机,或者看到过很差的网站。
因此,计算机科学家和界面设计师 , 会继续努力工作,做出更好更强大的界面,朝着恩格尔巴特 增强人类智能 的愿景努力。