古语道,一图胜千言。如今则有,无图无真相。
操作系统最开始是命令行,现在则是各种图形视窗。
人们在2G时代聊天,到3G时代看图,到4G时代看视频。随着网速和带宽的不断提升,应用从文字进化到图片,再从单张图片进化到一连串图片组成的视频。
随着技术的进步,种种应用的演化轨迹似乎印证着「一图胜千言」这个古老格言。为什么一图胜千言?图能给我们带来哪些好处?以下是我的一些思考。
信息
先让我们来比一比图片和文字在电脑中的大小吧。
关于图片,我们选择最简单的黑白图。图中每个像素只需要表达两种意义:黑与白。假设我们用0表示黑色,用1表示白色,这样我们只需要一个二进制位(比特)就能表示一个像素。
一张256×256的黑白图大小就是256×256个比特,那么在相同大小下可以容纳多少文字呢?
文字的编码有许多种,比如只针对英文的ASCII码只需要7个比特就能表达所有英文字母和数字。
世界上还有汉字,日语,阿拉伯语等复杂文字。为了给世界上所有的文字编码,Unicode字符集被提出。
然而Unicode并没有规定每个字符的编码格式,不同的编码格式对应着不同的大小。这里我们特意选一个最大的编码格式UTF-32来表示文字,UTF-32编码使用固定32个比特来表示单个字符。
那么一张256×256的黑白图大约等于多少文字呢?
\frac {256 \times 256} {32} = 2048 > 1000
可以看到,即便刻意缩小差距,在信息量的绝对大小上,一张黑白小图也抵得过两千言。
理解成本
既然图比文字的信息量要大,是不是意味着图片需要花更多时间才能理解呢?
恰恰相反。
你也许花了2分钟才阅读到这里(约700字)。然而只需要10秒,你就能看完下面那张图:空闲内存在7点左右达到顶峰,随后一直呈下降趋势。
当然,缺乏了背景知识,你还是无法推断出这张图所表达的具体含义。
这是我们游戏某台战斗服最近的空闲内存曲线图。
在某天早晨7点,我们发布了一次战斗服更新,重启了十余个战斗进程,释放了一定内存,使空闲内存达到了顶峰。然而之后,空闲内存却不断变低,说明此次更新的战斗版本存在内存泄露。
最终,在几天前的下午5点,我们又发布了一次战斗服更新。通过对空闲内存的曲线监控,我们一眼就可以看出,更新后的空闲内存非常平稳,没有出现剧烈的下降,这极大的增强了我们已成功解决内存泄露的信心。
试想如果没有曲线,从数以万计的离散的空闲内存数据中,我们将很难发现它的变化轨迹。这样不仅会导致难以定位问题发生的时刻;另一方面,也难以确定问题是否真正得到解决。
具象思考
为什么相对于文字来说,人更容易理解图片呢?
也许这与进化有关。
文字是人类的发明,语言需要通过后天习得,也需要通过后天不断的努力来建立和巩固连接。很久不用笔写字,你再下笔时就会忘记某个字该怎么写。
跟动物一样,人天生就有视神经。在还不会说话的时候,我们通过眼睛观察一幅幅图片来感知这个世界,在头脑中形成具象。人脑的视神经系统非常发达,经过百万年的不断进化,处理图像的速度自然也变得飞快。
另一方面,通过将行动具象化的思考,有时候也能获得不亚于实际行动的锻炼效果。
我在中学时听说过一个实验叫「脑内投篮」:一个心理学家将投篮水平差不多的学生随机分成以下三组:
- A组为对照组,每天什么都不做;
- B组为实战组,坚持每天投篮;
- C组为脑内组,每天在脑海中想象投篮;如果投篮不中,则在想象中做出修正
20天后,进行投篮比赛;发现A组成绩最差,而B组和C组则在伯仲之间。
我还想讲一个自己的小故事。
在4年前,我还不会骑自行车。小学都是接送,中学一直住在教职工宿舍,加之我沉迷电子游戏,很宅。所以每次父亲想教我骑车,都被我拒绝了。因为我认为骑车对我来说毫无必要,而且我很怕摔跤。
工作后,一般短距离我就走路,长距离就打车。随着时间推移,我始终觉得不会骑车是一种遗憾。每每走在大都市的街头,看着一辆辆自行车从身旁飞过,我都会想到在这个城市我居然还没骑过车,遗憾的情绪便油然而生。
2016年,共享单车的浪潮开始在北京扩散开来。我觉得学习自行车的时机已到,必须要解决这个遗憾了。由于几乎什么东西都是自学,所以我也决定自学自行车。
首先我进行了一次不成功的尝试,因为个头比小时候高,在即将摔跤前我用脚刹住了车。旁人的侧目,让我有点不自在。为了避免当众出丑,我决定后续先在脑海中练习找感觉。
每天入睡前,我都会去想象自己在骑车,然后努力调节平衡。有一天做梦,我梦见了自己在骑自行车,找到了那种平衡的微妙感觉。
于是,我再次鼓起勇气解锁了一辆摩拜。骑出数米,我便知道,我学会了骑车。
相信热爱竞技游戏的人应该有过这种经历,就是看完高手的第一人称视角的比赛视频后,往往会发现在实战中自己也变强了。
我想这可能是因为大脑通过想象,建立了图形化的,具象的连接,符合某种潜意识的工作机制。使得信息更容易被理解,也更容易被吸收,潜意识层面的消化最终将涌现出来,使得意识层面受益。
抽象与教育
既然图形比文字好这么多,为什么文字还有存在的必要呢?
首先,文字是一种符号,其本身也是一种图形。从广义的角度来说,文字也是图形的一个子集。
其次,图形的信息量太大,往往需要一些文字的辅助说明,标出重点,才能便于人们理解。
另外,除了视觉系统外,人类还有听觉系统。嘴巴说话也能传递信息,而且是一种1对N的广播模式。
文字可以通过说者的声带振动进行编码,听者通过耳朵接收,并通过听觉神经解码。这种方式,不需要额外的媒介,只需要空气声音便能传播,它很方便传递信息。
所以在我看来,无论是图形还是文字,都只是信息的一种抽象的封装。两者不可对立起来,而是应该统一起来,各取所长。在图文混合的情况下,往往更利于信息的传达和理解。
抽象便于计算,便于协作,便于规模化,便于封装细节,但是不便于学习和理解。对于没有启蒙的小孩来说,直接教他们公式1+1=2,是不便于理解的;而教一个苹果加上另一个苹果等于两个苹果则有助于他们理解加法。
遗憾的是,如今还是有很多书籍充斥着长篇的文字和公式,读起来味同嚼蜡。很多老师也只是照本宣科,有时候一张图就能说清楚的事情,非要啰嗦一大堆。这样的书本和课堂又怎么能让学生提起兴趣?
本周的技术分享会上,出现了类似的场景。当有同学问到什么是锯齿,怎么抗锯齿时。主题分享者试图通过语言来解释,结果同学的疑惑便更多了。我随后在白板上画了一张图,一切就清晰了很多。
想象在屏幕上画一条直线。
屏幕是由一个像素矩阵组成的,最后绘制到屏幕上的直线,必然出现类似黑色区域的不平滑,而这个不平滑给人的感觉就是锯齿。
至于怎么抗锯齿,最简单的做法就是增加采样的像素(拉高分辨率或采样率),使得锯齿看起来足够小,小到人眼识别不出来就行了。类似于正十七边形看起来跟圆一样,实际上不平滑,但是边多了,看起来就平滑了。
3B1B是一个YouTube的数学视频播客,在B站也有同步。播客作者认为学习数学,建立起直观的印象是重要的。
通过3B1B的几何图形演示,我加深了对线性代数和概率论的理解,这些知识又反哺到游戏算法中。比如旋转矩阵可以帮助计算碰撞,概率分布用于设计和验证抽奖的伪随机算法等等。
我向很多人推荐过3B1B,在此我还要向你们推荐一次。如果中国的老师和科普作者能像3B1B那样,帮助人们建立起对复杂知识背后的直观感知,将会大大激发学生的学习兴趣和热情,教和学的过程也会变得非常有趣。
总结
一图胜千言,胜在信息量,胜在容易理解,也胜在能记得更加牢靠。
在信息爆炸的今天,数据如同海洋一般庞大,人们必须要借助图表来整合和理解数据。也只有通过可视化的方式,人们才能更好的理解数据。
另一方面,将新知识具象化,以图形的方式理解和记忆能使知识更加巩固,甚至替代部分实战训练的效果。
思维导图是一种工具,而我更喜欢用纸和笔,这些只是工具上的个人偏好选择而已,无关大局。最重要的事情还是要养成具象化的思考方式,以图形化的方式去展开,这对培养想象力也有很大的作用。
一图胜千言,当你无法解释一件事情的时候,考虑用图;当你无法理解一件事情的时候,尝试把它画出来。