
前言
数据压缩无处不在,对现代计算来说它仍然像以前一样必不可少。过去,
1 GB
就已经很大
了,数据以每秒几千字节的速度传输。从某种意义上来说,我们已经经历了一个完整的循
环,从内存和带宽有限的古董计算机时代,来到了内存有限且数据套餐十分昂贵的移动设
备时代。
幸运的是,有很多工具、
API
以及程序包可以帮我们压缩数据。理解它们如何工作,有助
于我们
正确
地选择压缩工具(或算法),而这又可以令用户更高兴,同时降低成本、增加
收入。
数据压缩的基础是数学,让我们坦然面对它。对大多数人来说,数学很难,真的很难,而
且对于程序员曾经是最高的一道门槛。想想数据压缩之父克劳德
•
香农(
Claude Shannon
),
他的数学非常好,在黑板上随手一写就是一行行复杂的方程。
更疯狂的是,现代程序员不需要了解数学。现在,
8
岁的孩子都能上网,甚至在没有上过
代数课的情况下,就能通过自学教程发布自己的网页或应用程序。
我们相信,这就是过去
20
多年里数据压缩领域一直停滞不前的原因。虽然有
20
亿人在使
用移动设备
1
,并且他们经常遇到内存不足和网络连接不良等问题,但是数据压缩技术仍然
处于半停滞状态。这是因为懂数学的程序员不多。
当然也因为数学比较难。
你可以看到,压缩不是真的与数据有关。数据压缩领域早期的创始人考虑的并不是数据,
而是统计。他们寻找并发现了操纵数据集中符号的
概率分布
的不同方法,并利用这些方法
来生成包含同样的信息但更小的数据集。
注
1
:
这是
2015
年的数据,如果你是在未来某个时间点读到这本书的,数据肯定会不同。还有,很感谢你