第六章 GUI时代:图形界面的逆袭
到1985年,你走进一家电脑商店。架子上摆着Apple II、IBM PC、Commodore 64。你坐下来,开机,屏幕上出现一个闪烁的光标,等着你敲命令。
你想复制一个文件。你得记住copy命令的格式。你想看看磁盘里有什么。你得敲dir。你想运行一个程序。你得知道它的文件名。
如果你记不住这些命令,你就什么都干不了。
计算机厂商发现了一个问题:普通人并不想当程序员。他们只想用计算机写文档、做表格、玩游戏。但命令行像一堵墙,把大多数人挡在了门外。
有没有一种方式,让用户“点一点”就行,不用记命令?
答案是图形用户界面——简称GUI。
这一章我们回答:
- 为什么图形界面的核心发明早在1970年代就有了,却等了十几年才普及?
- 为什么苹果能从施乐“偷”走图形界面,并率先商业化?
- 为什么Lisa失败了,而Macintosh成功了一半?
- 微软Windows早期版本为什么被所有人嘲笑,最后却赢了?
- 为什么图形界面最终取代了命令行——不是因为技术更先进,而是因为人性?
- 还有哪些被遗忘的GUI先驱?(Xerox Star、VisiOn、GEM)
先记住硬件前提。
硬件前提
GUI的普及依赖一个硬件跃迁:微处理器的性能足够驱动图形显示。
早期微处理器(Intel 8080、Z80)只能处理字符界面——在屏幕上显示80×24个字母数字。要显示窗口、图标、鼠标指针,CPU得不断重绘屏幕上的每一个像素。这需要更快的CPU和更多的内存。
1980年代初,摩托罗拉68000(用于苹果Macintosh)和Intel 80286(用于IBM PC/AT)的出现,让图形界面从实验室走进了市场。68000有32位内部寄存器,寻址能力达16MB;80286引入了保护模式,可以管理更大的内存。没有这些芯片,GUI永远只是研究员的玩具。
一、为什么图形界面的核心发明在实验室里躺了十多年?——施乐PARC的悲剧
故事要从一个叫施乐的公司说起。
施乐靠复印机发家,1970年已经是复印机界的“微软”。为了探索“未来的办公室”,施乐在加州帕洛阿尔托建立了一个研究机构——PARC(帕洛阿尔托研究中心)。
PARC聚集了一群世界顶级计算机科学家。他们不问“明年能赚钱吗”,只问“什么技术能改变世界”。1973年,他们造出了一台叫Alto的计算机。
Alto有多超前?我们来列一个详细清单:
- 位图显示:屏幕上的每个像素都可以独立控制,而不是只能显示固定字符。这意味着你可以画任意图形、不同字体、不同灰度的图像。Alto的分辨率是606×808,比后来Macintosh的512×342还要高。
- 图形窗口:多个窗口可以叠加、移动、改变大小。Alto的程序可以在不同窗口中同时运行。
- 鼠标:一个三键的小盒子,用来点击屏幕上的东西。这不是施乐发明的(鼠标是道格拉斯·恩格尔巴特在斯坦福研究院发明的),但施乐第一次把它和图形界面结合。
- 以太网:Alto是第一台联网的个人计算机。施乐发明了以太网(3Mbps),几十台Alto可以共享打印机和文件服务器。
- 所见即所得:你可以在Bravo文字处理软件中直接看到字体、字号、页边距,打印出来一模一样。这是文字处理的革命。
- 面向对象的编程语言:Smalltalk-72,后来演变成Smalltalk-80,影响了Java、C++、Objective-C。
- 激光打印机:施乐PARC发明了激光打印技术,后来成为施乐复印机业务的护城河。
- PostScript页面描述语言:后来被Adobe商业化,成为桌面出版的基石。
Alto比苹果Macintosh早了整整11年,比Windows早了12年。PARC的工程师们活在一个未来的世界里。
但你猜怎么着?施乐没有把它变成产品。
为什么?
第一,管理层看不懂。施乐的高管是复印机行业出身,他们认为“办公室的未来”是更好的复印机,不是计算机。一位副总裁曾问:“这个鼠标有什么用?谁会想用手在屏幕上指来指去?”还有人说:“如果你想要一个窗口,为什么不直接把纸贴在墙上?”
第二,成本太高。Alto的造价约1万美元(相当于今天5万美元),施乐不知道如何把它变成廉价商品。销售团队不会卖计算机,只会卖复印机。
第三,没有杀手级应用。Alto能做什么?研究人员用它做实验,写论文,但普通人为什么要花1万美元买它?施乐没有Excel,没有Word,没有浏览器。
第四,内部政治。PARC的研究成果被施乐总部视为“长远的赌注”,但公司更关注眼前复印机市场的利润。PARC的研究员们被孤立,他们的论文被发表,但产品化需要另一个部门,而那个部门觉得“这玩意儿抢我们饭碗”。
于是,Alto被锁在实验室里,只供PARC内部使用。到1980年代初,施乐仍然没有把GUI产品化。
但Alto的种子撒了出去。PARC的研究员们开始跳槽——他们把GUI的理念带到了苹果、微软、Adobe。其中最著名的故事,是1979年乔布斯参观PARC。
乔布斯当时正在研发Lisa——苹果的高端个人计算机。他听说PARC有神奇的东西,于是安排了一次参观。施乐为了换取苹果的投资机会(施乐想投资苹果),同意让乔布斯看一次完整演示。
乔布斯后来说:“那一刻,我看到了计算机的未来。窗口、菜单、鼠标……就像眼前揭开了面纱。” 他几乎当场就决定:苹果要做GUI,而且要做得比Alto更好。
施乐没有意识到自己看到了什么。他们就像站在金矿上,却只挖了几块石头。后来施乐也尝试推出了Xerox Star(1981年),这是第一台商业化的GUI计算机,价格高达1.6万美元,销量不到2.5万台,彻底失败。施乐在1980年代中期退出了计算机市场,回归复印机。
被放弃的路径:施乐本可以成为GUI时代的微软+苹果,但它错过了。不是因为技术不行,而是因为组织结构、管理眼光和文化惯性。这个故事后来被无数商学院作为“创新者的窘境”的经典案例。
二、为什么苹果能率先商业化GUI?——Lisa的失败与Macintosh的妥协
乔布斯从PARC回来后,立刻重组了Lisa团队。他要的是一台面向普通用户的图形界面计算机。Lisa项目始于1978年,最初只是一个普通的办公计算机。参观PARC后,整个项目被推翻重来,加入窗口、鼠标、菜单。
1983年,Apple Lisa发布。价格9995美元(相当于今天2.5万美元)。
Lisa的技术很先进:有窗口、下拉菜单、垃圾桶图标、剪切复制粘贴。它甚至引入了保护模式内存(基于摩托罗拉68000的MMU),程序崩溃不会拖垮整个系统——这在当时是领先的。但它的价格吓退了所有人:当时一台IBM PC才3000美元,Apple II才1400美元。Lisa只卖了几万台,商业上失败。
为什么Lisa失败了? 不止是价格问题。
第一,性能悲剧。68000处理器虽然强大,但要驱动一个高分辨率位图显示器(720×364)和一个三键鼠标,还要做窗口重叠、菜单动画,已经捉襟见肘。Lisa的磁盘驱动器和文件系统也慢。用户反馈“那个沙漏转好久”。
第二,软件生态为零。Lisa发布时只有几个预装的应用(LisaWrite、LisaDraw、LisaCalc),第三方开发商来不及跟进。一台1万美元的机器,能用的软件还不如Apple II多。
第三,开发过程内耗。乔布斯和Lisa团队的关系极其紧张。他要求设计必须完美,但工程进度一再拖延。最终Lisa发布了,但乔布斯已经被踢出了Lisa项目组,转而去搞一个更低成本的机器——那就是Macintosh。
Macintosh的目标:把GUI计算机的价格降到2500美元以内。乔布斯给团队下了死命令:开机速度要快,界面要流畅,成本要低。
Macintosh的技术突破在哪里?
- 摩托罗拉68000处理器:和Lisa一样,但Mac的硬件设计更紧凑,减少了不必要的芯片。更重要的是,Mac使用了定制的图形芯片(Apple-designed IWM和VLSI逻辑阵列),可以把位图块移动操作交给硬件加速,CPU负担比Lisa小很多。
- ROM中的工具箱(Toolbox):苹果将大量图形操作(画窗口、菜单、滚动条)的代码固化在64KB的ROM里。这样系统启动快,图形响应快,也节省了宝贵的内存(Mac只有128KB内存)。
- 软驱:Mac使用了3.5英寸软驱(Sony设计),容量400KB,比当时PC的5.25英寸软驱更方便。沃兹尼亚克设计了极其精简的软驱控制器(用几个通用逻辑芯片替代了昂贵的专用芯片),大幅降低了成本。
- 一体化设计:Mac把所有部件(9英寸黑白显示器、软驱、电源)装在一个手提箱式的机箱里,用户插上电源就能用。不像Apple II或IBM PC那样需要用户自己插卡、接显示器。
1984年1月22日,苹果在“超级碗”比赛中播出了著名的“1984”广告——一个女运动员砸碎巨大的屏幕,旁白宣布:“1月24日,苹果计算机将发布Macintosh。你会看到为什么1984不会像《1984》。” 广告轰动全美。
第二天,Macintosh发布,定价2495美元(比目标贵了100美元,但还行)。界面让所有人惊艳:你打开电源,一个笑脸的Mac图标出现,然后桌面、窗口、文件夹、垃圾桶、下拉菜单……你甚至可以用鼠标拖动文件,直接扔进垃圾桶。
普通人第一次可以用“直觉”操作计算机,不需要记命令。Macintosh第一年卖了28万台,比Lisa强很多,但远低于苹果预期的50万台。
为什么Macintosh没有一举打败IBM PC?
一是软件太少。早期Mac只有MacWrite和MacPaint。没有电子表格(Excel for Mac要等到1985年),没有数据库,没有商业软件。企业用户说:“我买来能做什么?”
二是内存太小。128KB的RAM,跑一个大的文档就报错“内存不足”。用户花了2500美元,还得再花几百美元升级内存。1985年苹果推出了Mac 512Ke(512KB),但已经错过了早期的口碑窗口。
三是封闭生态。Mac的硬件不兼容任何第三方,不提供扩展槽(后来的Mac Plus加了扩展槽,但太晚)。用户不能自己升级显卡、声卡。苹果认为“用户不需要知道这些”,但发烧友和开发商想要灵活性。
四是性能不足。Mac的68000处理器要驱动位图显示、窗口系统,还要运行应用程序,速度并不快。用户抱怨“那个沙漏转得比Lisa还久”。
尽管如此,Macintosh重新定义了“易用性”。所有后来的GUI——包括Windows——都在模仿它。
被放弃的路径:苹果在Lisa和Mac早期坚持的“完全封闭、无扩展槽”策略,后来在Mac II(1987年)上被推翻,加入了NuBus扩展槽。但苹果始终没有像IBM那样开放硬件授权,这既是它活下来的原因(控制体验),也是它市场份额低的原因。
三、为什么微软Windows早期版本被所有人嘲笑?——从1.0到3.0的爬坡
微软在1983年就宣布要开发Windows——一个给IBM PC用的图形界面。但真正的第一个版本Windows 1.0直到1985年才发布,比Mac晚了将近两年。
Windows 1.0有多烂?我们来解剖一下。
- 窗口不能重叠,只能平铺。因为微软担心用户不会管理重叠窗口,而且当时的硬件内存不够支持复杂的窗口裁剪算法。你打开两个程序,屏幕一分为二,各占一半——惨不忍睹。
- 没有垃圾桶图标,没有下拉菜单(至少不像Mac那样)。Windows 1.0的菜单栏是固定在窗口顶部的文字,点击后才下拉。
- 运行速度极慢。为什么?因为当时的Intel 8088 CPU(8位外总线)和CGA显卡(320×200,4色)根本不适合图形界面。Windows 1.0的每个窗口重绘都需要CPU反复访问内存,而8088的8位外总线成了巨大瓶颈。一个简单的滚动操作,等上两秒钟。
- 内存管理糟糕。Windows 1.0只能跑在实模式下,无法使用386的保护模式。所有程序共享同一个内存空间,一个程序崩溃,整个系统蓝屏。
- 应用程序少得可怜。你买回Windows,能用的软件只有画图、记事本、一个简陋的时钟、一个翻牌游戏。没有Word,没有Excel,没有第三方应用。
评论家说:“Windows是把Mac的界面强行塞进IBM PC的鞋子里。” 还有人调侃:“Windows 1.0不是图形用户界面,是图形用户界面模拟器。”
1987年,Windows 2.0发布。窗口可以重叠了,但性能仍然拉胯。Windows 2.0最大的贡献是引入了控制面板和Excel for Windows——微软的第一个重磅应用。Excel借助Windows的图形界面,比当时流行的Lotus 1-2-3(DOS字符界面)更直观,开始吸引部分用户。
但Windows 2.0还有一个死穴:它依赖MS-DOS,底层还是16位,不能充分利用386的32位能力。程序的内存仍然受限在640KB,图形响应还是慢。
直到1990年,Windows 3.0才真正翻盘。
为什么Windows 3.0成功了?
第一,硬件成熟了。1990年的主流PC已经是Intel 386或486。386的保护模式(Protected Mode)允许Windows运行在32位模式下,可以访问更多的内存(16MB+)。VGA显卡成了标准配置(640×480,256色),显示速度和色彩都上了台阶。CPU速度是1985年的5-10倍,内存从640KB涨到了2-4MB,价格也降下来了。
第二,更好的内存管理。Windows 3.0引入了“增强模式”(386 Enhanced Mode),可以利用386的虚拟内存功能,把硬盘当内存用。同时,Windows 3.0改变了执行模型:每个DOS程序跑在一个虚拟8086模式中,互不干扰;Windows程序则是协作式多任务,但比之前稳定。
第三,虚拟设备驱动(VxD)。Windows 3.0引入了VxD技术,允许Windows直接访问硬件(如声卡、网卡),而不需要通过DOS。这大大提升了多媒体性能,催生了Windows游戏和多媒体应用。
第四,完美的Windows API兼容性。微软从Windows 1.0开始就坚持向后兼容——为Windows 1.0写的程序可以在Windows 3.0上运行。这让早期开发者积累的代码没有被抛弃,也保护了用户投资。
第五,大量的第三方软件。Lotus 1-2-3、WordPerfect、CorelDRAW等重量级应用在1990-1992年间推出了Windows版本。更重要的是,微软自己把Word和Excel做得极好——Excel 3.0的图表功能让Mac用户都眼红。
第六,价格策略。Windows 3.0升级版只要149美元,预装在新PC上的OEM版更低。OEM厂商(戴尔、康柏、惠普)发现:预装Windows比预装任何其他GUI都便宜,而且用户想要。
1990年到1992年,Windows 3.0和3.1的销量飙升到2500万份。IBM PC兼容机的市场份额加上Windows,终于压倒了苹果。
历史性的转折点:1995年Windows 95发布时,苹果Mac的市场份额已经跌到了7%以下。
微软赢了,不是因为它先发明了GUI,也不是因为它的界面最好看,而是因为它绑定了最廉价的硬件平台,加上对兼容性的极端重视,以及庞大的软件生态。
被放弃的路径:在Windows 1.0到3.0之间,还有几个短暂的竞争者和被遗忘的GUI:
- VisiOn (1983):VisiCalc的开发商开发的一个图形环境,在IBM PC上运行,需要512KB内存,反应极慢。1984年就消失了。
- GEM (1985):由Digital Research(CP/M的母公司)开发,界面很像Mac,还引发了苹果的诉讼。GEM在PC上只有平淡的表现,但在Atari ST计算机上成为标准。后来Digital Research放弃了PC市场。
- DESQview (1985):一个多任务窗口环境,不是真正的GUI,但可以在DOS上同时跑多个程序。有一定商业用户,但微软最终用Windows碾压了它。
这些系统都失败了,不是因为技术差,而是因为没有足够的应用软件和OEM支持。Windows 3.0的胜利,本质上是生态的胜利。
四、平行叙事:BeOS——那个比Windows更早有多处理器的多媒体系统
在大众熟知的Windows和Mac之外,1990年代还有一个操作系统,技术圈的老人们念念不忘——BeOS。
BeOS的故事和苹果有关。1990年,前苹果高管让-路易·加西被乔布斯赶出苹果后,创建了Be公司。他的目标是:为多媒体应用(视频、音频、3D图形)从头设计一个操作系统。
BeOS的设计理念非常超前:
- 模块化内核:内核很小,文件系统、设备驱动、网络栈都跑在用户空间,但又不是微内核(微内核的性能当时有问题)。BeOS的内核叫做**“multi-threaded, real-time media OS”**,专注于低延迟。
- 原生支持多处理器:BeOS从第一天就支持对称多处理(SMP)。你插两块CPU,BeOS自动调度线程到两个核心上。而Windows NT 3.1到4.0还需要专门的SMP版本,Mac OS 9根本不支持。
- 数据库式的文件系统:BeFS文件系统允许为文件附加自定义属性(比如一个mp3文件可以带“艺术家”“专辑”标签),然后按属性查询。这个特性20年后才在macOS的Spotlight中部分实现。
- 极简的API:BeOS的API叫BeAPI,设计得非常整洁,比当时Win32或Mac Toolbox容易学得多。开发者说“三天上手写应用”。
1995年,BeOS运行在PowerPC的BeBox硬件上(双CPU,售价约4000美元)。1998年,BeOS移植到Intel x86,可以跑在普通PC上。用户评价:“它在奔腾133上跑得比Windows 95在奔腾200上还快,还能同时处理CD播放、视频剪辑和网页浏览,一点都不卡。”
BeOS差点成为Mac OS X。
1996年,苹果四处寻找System 7的后继系统。当时苹果和乔布斯的NeXT谈,也和Be公司谈。加西开价2亿美元(也有说法是3亿),但乔布斯的NeXT要价4亿美元,最终苹果选择了NeXT。乔布斯回归后,加西的梦想破灭。
BeOS继续生存了几年,但无法撼动Windows。2001年,Be公司倒闭,BeOS被卖给Palm公司。之后开源社区开发了Haiku操作系统,目标是兼容BeOS API,至今还在更新,但已经边缘化。
为什么BeOS没有赢?
第一,应用生态匮乏。虽然技术好,但几乎没有商业软件支持。Adobe、微软不会为一个市场份额不到1%的系统开发软件。 第二,硬件支持有限。BeOS的硬件驱动需要自己写,不如Windows的即插即用成熟。 第三,时机错过。如果1995年BeOS能拉到足够多的PC厂商预装,也许能成为第三极。但当时Windows 95如日中天,没人敢站队。 第四,加西谈判失败。如果苹果当年买了BeOS而不是NeXT,今天的macOS可能就是BeOS的后代,世界会完全不同。
BeOS是一个“技术上更优但输给了商业”的经典案例。它的遗产是:后来很多系统(包括Linux的音频子系统)从BeOS的设计中汲取了灵感。
五、为什么图形界面最终取代了命令行?——不是技术问题,是人性问题
命令行没有消失。今天程序员、系统管理员仍然大量使用命令行(比如git、docker、kubectl)。但对于普通人,图形界面是理所当然的选择。
为什么?答案不是技术,是生物学。
人脑处理视觉信息的速度比处理文字快得多。你看到一个红色的垃圾桶图标,瞬间就知道“扔东西”;但看到rm -rf,你得回想命令含义。鼠标点击是一个直接的物理动作,而命令行需要你先记住抽象命令,再键入字符串。
心理学上叫认知负荷。命令行的认知负荷高——你需要记忆、打字、避免拼写错误。图形界面的认知负荷低——看到,点击,完成。神经系统科学显示,视觉识别和运动操作使用了大脑中更古老和自动化的通路,而语言生成依赖更晚近进化出的皮层。
1984年Macintosh推出时,很多人嘲笑它“是一个玩具,重活还得靠命令行”。但历史证明:界面不是给专家用的,是给所有人用的。计算机从实验室走进千家万户,必须变得“蠢人都能操作”。GUI就是那个“变蠢”的接口。
有趣的是,命令行并没有被淘汰。它变成了“高级工具”——程序员用命令行控制服务器,专业人士用快捷键提高效率。普通人的图形界面下,藏着命令行和脚本。这种分层设计——把复杂性藏起来,只暴露给需要的人——才是GUI真正的胜利。
今天的触摸屏、语音助手、手势控制,都是GUI的延伸。但它们的底层,仍然是一个个命令行工具在默默执行。
本章小结:哪些选择被固定了,哪些可能性被放弃了?
这一章我们讲了GUI从实验室到市场的过程。哪些选择被固定了?
- 位图显示 + 鼠标 + 窗口范式:舍弃了字符界面的简单和低开销,换来了直观和易用。此后所有主流操作系统都采用这个范式。
- 苹果的封闭生态:从Lisa和Macintosh开始,苹果坚持硬件和软件一体化设计。带来极佳的用户体验,但代价是市场份额失去。1990年代中期苹果濒临破产,后来靠iPod、iPhone等新产品线续命,但macOS的封闭策略从未改变。
- 微软的开放授权 + 向后兼容:Windows不依赖自家硬件,而是适配所有IBM兼容机;同时长期保持API兼容。牺牲了系统的纯粹性,换来了生态繁荣。
- GUI成为通用计算的默认交互:命令行退居专业领域。这个选择不是技术最优,而是人性最优。
哪些可能性被放弃了?
- Xerox Alto的商业化:施乐本可以成为GUI时代的领导者,但因管理层短视和市场时机不成熟,错失了机会。
- BeOS的多媒体优化和多处理器优先:技术“更优”,但生态和商业策略失败,最终被历史遗忘。
- VisiOn、GEM等早期PC图形环境:资源不足、应用匮乏,被Windows 3.0横扫。
- 命令行继续作为大众界面:如果GUI没有被发明或太贵,也许个人计算会延迟很多年。但1990年代后,命令行只在服务器领域存活。
下一章预告
Windows 3.0和3.1确立了微软在桌面市场的统治地位。但微软的垄断引来了一个意想不到的挑战者——不是苹果,不是一个公司,而是一个芬兰大学生。
他叫林纳斯·托瓦兹。1991年,他在赫尔辛基的宿舍里写了一个小内核,发了一封邮件:“我正在写一个免费的操作系统(只是个爱好,不会像GNU那么大和专业)。” 30年后,这个“爱好”跑在全世界的服务器、超级计算机、智能手机(安卓)上。
下一章:Linux的诞生——一个大学生的杰作(加厚版)。我们将补充BSD的官司、发行版战争、许可证博弈,以及Linux桌面为什么没有成功。