老万故事会

【老万】苹果创始人有多抠门你知道吗

地球人都知道,苹果公司有位厉害的创始人叫史蒂夫·乔布斯,又称乔老爷。可是,知道苹果有三位创始人并且能说出他们名字的就不多了。

这三位里面,有一位年纪最大,叫罗纳德·韦恩。

Image

苹果公司三位创始人:乔布斯、韦恩、沃兹尼克

别看他工作经验丰富,但革命意志极其不坚定,对公司前景极度悲观,干了两个星期就问红旗能够打多久。

他合计,十鸟在林不如一鸟在手。与其奋斗,不如躺平。

于是,他把自己的全部股份(占全司的 10%)转让给其他两位,换成 2300 美元喜滋滋地出局了。

按今天苹果近三万亿美元的市值算,他这一操作导致了三千亿美元的损失,折合 100 薇娅加 150 只独角兽,可谓实力败家的扛把子。

当然,这笔交易乔老爷赚翻了!

Image

乔老爷对韦恩:你傻了吧,你饿了吧?

说来也巧,苹果公司的另一位创始人也叫史蒂夫(Steve)。

这位史蒂夫姓沃兹尼克(Wozniak),设计了苹果最早的几个成功产品,和乔布斯一样对公司贡献巨大。

沃大爷年纪比乔老爷大几岁,是大 S 。乔老爷是小 S。

在苹果公司,大 S 主要负责技术,小 S 主要管营销。他们各自把擅长的事做到了极致。

为什么这么分工?看看照片你就懂了。

Image

初代网红乔老爷:买它,买它!

Image

沃大爷:呃,我就是个搞技术的程序猿。

上个星期我发了一篇文章,讲微软程序员过早优化造成大规模 Exchange Server 宕机的故事。

从这位程序员一个字节掰成两半花的行为推断,他应该是苦出身,从电脑行业小米加步枪的时代过来的。

但是论抠门,他比苹果公司的大 S 就必须自惭形秽了。今天我就给大家掰扯掰扯大 S 是如何抠出花的。

那是 1976 年,乘着粉碎四人帮的东风,大 S 朝着四个现代化大步奔跑,在苹果 1 电脑成功的基础上开始设计苹果 2。

后来我们知道,苹果 2 电脑是苹果公司第一套大火的产品。没有它就没有今天的苹果公司。

那年头,电脑还是大公司机房里的高档货,劳动人民高攀不起。但是大 S 不信邪,觉得他可以把成本降下来,让老百姓买得起电脑。

他充分发挥从小捣鼓无线电的技能,用各种奇技淫巧节省开支。

在这之前,所谓的个人电脑大多只有几盏指示灯做输出,用户要经过专门训练才看得懂运算结果。

Image

高档的个人电脑可以外接显示器,但出来的只有单色图像,就像电影《黑客帝国》。

Image

大 S 心血来潮,要给大家一点颜色瞧瞧。

问题还是成本。

电脑显示画面是要占用内存的。当时电脑内存价格不菲。

电脑最基本的存储单位是比特(bit)。一个比特可以表示零或者一这两个不同的状态。今天大家知道的比特币(bitcoin)就是向这个电脑的基本存储单位致敬。

为了处理方便,通常会把八个比特编成一组,叫做一个字节(byte)。

Image

在 1976 年,1KB(1024 字节)内存的价格相当于今天的 130 美元。

苹果 2 电脑支持 280 乘以 192 像素(5 万像素)的“高分辨率”图形显示。(我们今天手机拍照可以有上千万像素,是苹果 2 像素的 200 倍。)

当年电脑跑得慢,动画勉为其难。为了实现肉眼可以接受的动画效果,沃大爷给苹果 2 设计了两个图形页面:一个是用户看到的,另一个是隐藏的。通过一条机器指令可以选择哪一页可见。

动画要一帧一帧地画。在苹果 2 上,画下一帧图的操作是在隐藏页面上做的。这样用户看不见画的过程。

等下一帧全部画好了,再将隐藏页面设成可见,达到瞬间更新的效果。

如果是单色显示,每个像素可以有两种状态,要么点亮要么拉黑,所以可以用一个比特表示一个像素。

两个 280 乘以 192 像素的页面,每个像素一个比特,需要 280*192/8*2 = 13440 字节,成本要 1700 多美元,不低了。这还只是视频内存这一部分。

要显示彩色,常人的思路多半是用更多的比特去表示每个像素。比如两个比特可以表示四种不同的状态(00,01,10,和11),分别对应于黑色和其它三种颜色。

但是这样搞内存量要翻倍到 26880 字节,3400 多美元。太贵了。

大 S 后来想出来的点子,我觉得是受了《葫芦兄弟》的启发。

葫芦娃和爷爷一家八口人,像不像一个字节有八个比特?

隐身代表 0,现身代表 1。八口人的隐身/现身状态,正好对应于八个比特的 0/1 状态。

大 S 把一条水平线上的 280 个像素分成 7 个一组,每组交给七个葫芦娃控制,再来一个爷爷领头。

这样一共 280*192/7*2 = 15360 字节就行了,成本 1950 美元,比 3400 可是低了不少。

那么,颜色从哪里来呢?

大 S 的想法,是用牺牲像素的独立性来换彩色。

他把每两个葫芦娃配成一对,规定:

  • 隐身-隐身 表示 黑色。

  • 隐身-现身 表示 紫色。

  • 现身-隐身 表示 绿色。

  • 现身-现身 表示 白色。

这样不就有四种颜色了吗?

Image

两个比特 00 表示黑。所以 0-00-00-00-0 就是 7 个黑像素。

Image

01 代表紫。0-01-01-01-0 就是 6 个紫色像素加 1 个黑像素。

Image

10 代表绿。0-10-10-10-0 是 6 个绿色像素加 1 个黑像素。

Image

11 是白色。0-11-11-11-0 就是 6 个白像素加 1 个黑像素。

Image

这几种套路可以任意组合,比如 0-11-01-10-0 就是 2 白 2 紫 2 绿 1 黑。

两个葫芦娃一对,那七娃单一个咋算?没关系,他和下一家葫芦娃的大娃配一对。

Image

两个字节 0-11-01-10-0 和 0-1-10-11-00 啥意思?还是每两个像素一对。

当然,只有黑白紫绿,这色彩还是不够丰富。这时候就该爷爷出手了!

大 S 规定,要是一个字节里面爷爷现身,那么像素的颜色遵循以下规则:

  • 隐身-隐身 表示 黑色。

  • 隐身-现身 表示 蓝色。

  • 现身-隐身 表示 橙色。

  • 现身-现身 表示 白色。

Image

1-10-01-11-0 就是 2 橙 2 蓝 2 白 1 黑。

问题来了:黑白颜色在爷爷隐身的时候就能表示了,为啥在爷爷现身的时候还要浪费 00 和 11 来继续表示它们?表示其它两种颜色不好吗?

两个原因:

  1. 黑白非常重要。如果一个字节里面爷爷出现的时候无法表现黑白的话,对画面有很大的限制。

  2. 大 S 不光对内存抠门,设计彩色显示硬件的时候一样抠门。这种色彩编码方案硬件成本比较低。

Image

苹果 2 电脑《武士》游戏的感人画质

由于沃大爷的精打细算和非凡才智,苹果 2 以亲民的价格一炮而红。虽然在画面显示上有种种限制,大家都表示忍了。

毕竟其它电脑的性价比被苹果 2 吊打。

所以,优化还是不优化,不可一概而论。

沃大爷在该优化的地方优化,以一种匪夷所思的方式设计出彩色电脑,引爆个人电脑革命,成就了今天全球市值最高的高科技企业。

某软程序员在不该优化的地方强行优化,以一种哭笑不得的姿势埋下定时炸弹,在 2022 年的第一天爆雷,成就了段子手的狂欢。

我们今天学习沃大爷的创新精神,抠要抠在痒处,不可生搬硬套买椟还珠,学成了精神病而不自知。

切记:若为战术精明洋洋自得,必因战略愚蠢引火烧身。

~~~~~~~~~~

猜你会喜欢:

~~~~~~~~~~

关注老万故事会公众号:

本公众号不开赞赏不放广告。如果喜欢这篇文章,欢迎订阅、转发、评论、点赞。谢谢!🙏