“Try quickly typing 1+2+3. I bet you won’t get 6.”

Marcin Wichary

试试快速输入 1+2+3,我赌你得不到 6

原文由 Marcin Wichary 发布,订阅该博客

本月初,我聊过照片里的旋转按钮在 iOS 上表现非常顺手,在 Nothing Phone 上却不尽如人意。这里再讲一个 iOS 曾经犯过的类似失误,或许更能说明问题。

自 2007 年 iPhone 问世以来,计算器应用就一直预装在系统里。很长一段时间里,它不过是一个标准的四则运算计算器,功能几十年如一日。然而,即便如此简单的东西,一不留神也会搞砸。

iPhone 发布十年后,iOS 11 引入了一个和 Nothing Phone 旋转按钮如出一辙的问题——快速点按按键时,按键看似有了响应,实际操作却没有被记录下来。Michael Tsai 的聚合博客第一条记录里有一段来自 Stephen Heaps 的视频:

视频演示了输入 1+2+3+4 的过程,其中 iOS 漏掉了一次对 + 号的按压,结果变成了 1+23+4 = 28。之后有很多人跟帖反映了这个问题,并展示了各种其他例子

看着计算机在最基础的算术上栽跟头,有种莫名的吸引力。不过,从历史角度看,更有趣、也更让苹果难堪的是,这类问题其实早就有极为丰富的解决方案。

计算器与打字机一同演进,是最早采用按钮式(而非钢琴式)键盘的设备。但两者面临的风险截然不同。

想象一台做工糟糕的打字机,它让人失望的方式有很多:轻按按键字迹会变淡,重按又会戳破纸张,输出可能歪歪扭扭,或者字杆以某种方式卡住,逼得你只能重来。

打字机必须费尽心思,通过擒纵机构、棘轮等装置,把一张空白的、模拟的纸张划分成可靠、美观的网格。但计算器要让模拟世界服从数字规则,所做的工作要重要得多。毕竟,打字机上你按下的键不太可能打出错误的字母——但在做工糟糕的计算器上,轻按一下 5,却完全可能输出 4、6,甚至是 4.5。

而且,打字机只是原样记录你输入的文字,而计算器的工作恰恰是要用你输入的数字算出新的数字。不够精确的机械结构会搞砸这些计算。卡住可能导致计算只完成了一部分,或是产生不确定的结果。给 999,999 加上 1,连续进位所需的力道甚至可能让设备在运算中途直接罢工。

除此之外,语言本身就有冗余性。就算有很多错别字,这句话依然能看懂。但数字看起来都长得差不多。计算器一旦在某个对工资、工程或导航至关重要的数字上出错——你可能永远也发现不了。

明白了这一点,早在 19 世纪,许多计算器制造商就花了极大的功夫,不仅要让人相信他们的设备好用、快速、易于上手,更要让人相信它们值得信赖。按键经过精心配重。Comptometer 配备了锁定机构。如果机器感觉哪里不对,就会停止工作,需要硬重置才能恢复。传递的信息是:“你可以信任我,因为我绝不会给你错误的计算结果,在可能骗你之前,我会先让自己停下来。”查尔斯·巴贝奇对他的差分机如此自信,甚至欢迎人们在计算过程中去拨弄它的机械轮盘,坚信即便遭到蓄意破坏,机器也绝不会算错。

就像几十年后的 Selectric 一样,这些问题早已被那些用心的人在远为苛刻的机械条件下解决了。

当然,我并不指望苹果核心 iOS 团队的每个人都是计算器交互历史专家(不过团队里至少有一个这样的人倒也不错!)。让人尴尬的是,团队里竟然没有人能想到,在动画过程中让按钮对快速点击做出视觉响应、却不实际注册点击,会带来各种严重的麻烦。(这个 bug 在 iOS 11.2 中通过移除动画得到修复,随后在 iOS 11.3 中动画又被加了回来,且不再有原来的问题。)

但或许更尴尬的是,苹果竟然没有一套能以不同速度在界面上模拟手指操作的自动化测试,去覆盖那想必有数百万人在用的计算器应用。那同样是几十年来的标准做法。

2017 年,这些测试似乎是缺席的。希望 2+3+4 年后的今天,情况已不再如此。

本文章由 muse-spark-1.2-contributor 进行翻译

评论