聊聊压缩软件背后的陈年往事

写在最开始,这一篇我是准备来讲故事的,所以后面没有什么硬核的东西(虽然我也不懂),如果哪里有说错的,欢迎大家指正,还是那句如果不爱,请勿伤害。

之前那一篇文章我不是提了句压缩的秘密,不过就是将重复的字节(二进制数据单位)用统一的代码表示。

举个简单的例子就是好比「11111000」的字节,用「1(4)0(3)」来代替,通过这样的方式减少文件占用的体积。

但落实到具体的压缩,就离不开各种复杂的算法,不同的算法配合不同的字典就大致确定了压缩的效率(还有文件格式等乱七八糟的影响因素)。

压缩算法的起源

如果说搞算法的都是大佬,那提出先于算法出现的压缩概念的这个人,大概就是能上历史课本的大人物了。

事实也正是这样,最先提出压缩这个概念的,就是信息论的创始人,香农(Shannon)。

香农这个爱迪生的远房亲戚,跨时代论述了信息的定义,并提出了对信息进行压缩(编码)的设想。

随后在香农和范若(Fano,另一位研究信息编码的元老级人物,后面还有戏份)的共同努力下,提出了「香农-范若编码」,这也是压缩算法的起源。

不过这种跨时代的理论研究和应用还隔了几条街,在当时虽然轰动一时,但并没有投入使用,但毫无疑问「香农-范若编码」的出现已经为压缩算法的发芽提供了土壤。

而为这个土壤是施肥浇水的,是范若的学生,哈夫曼。

青出于蓝的天才少年

1951 年,在范若门下攻读博士的哈夫曼,为了完成学业,需要在学期末,于学期报告和期末考试之间进行选择。

不甘寂寞的哈夫曼自然选择了前者,可范若这个业界大佬提了一个相当有难度的问题,寻找最有效的二进制编码。

这会已经有很多大佬提出了不同的编码规则,各有优劣,如果仅仅只是对比已有的编码方式,混一篇学期报告也不是不行(想想自己上学的时候怎么糊弄作业的)。

但哈夫曼钻起了牛角尖,既然题目是寻找最有效的编码,那对比已有且存在问题的编码方式肯定无法证明谁是最有效。

哈夫曼直接放弃了已有的编码研究,转向了新的探索,仅一年的时间,哈夫曼不仅找到了想法,并且证明了自己的编码就是最有效的。

1952 年,「哈夫曼编码」面世,后来也有人称为最佳编码,当然这个最佳编码也成了后来 n 多压缩算法的基础。

万事俱备,只欠东风。

一枝独秀的ARC

1985 年,那会的电脑操作系统还没有 Windows 这样的图形化界面,而是以命令行的形式存在。

微软家的 DOS 就是当时的主流,其实 Windows 问世以后,DOS 一直以后台程序的形式出现,就是那个你一定听说过的 CMD。

在 1985 年之前,哪怕在市场上举足轻重的 DOS 上,也没有任何压缩软件。虽然「哈夫曼」面世的 30 多年间,有很多压缩算法先后提出,但没有任何商业应用。

直到 1985 年 SEA 公司开发了一款名为 ARC 的压缩软件,打破了这个尴尬。

ARC 作为 DOS 的第一个压缩软件,占据了绝对统治地位,可由于 ARC 利用的是申请过专利的 LZW 算法(不重要),再加上自己的统治地位,SEA 给 ARC 定了一个在当时极其不良心的价格。

买得起电脑却用不起 ARC 是当时电脑用户最大的尴尬,如果放弃 ARC,软盘的成本也难以让人接受,仿佛一切都陷入了僵局。

直到一个人的出现打破了 ARC 的垄断。

打破垄断的ZIP

在 DOS 的那个时代,软件的出售不单单是一份 exe 可执行文件,还有一份不加密的 C 语言源码。

ARC 仅垄断了压缩软件三年,就有一位高端玩家将源码进行了复制,再用汇编语言重写,搞了一款全新的嵌有自己的姓名首字母的压缩软件,PKARC。

菲利普·卡兹(Philip Katz),这个搞出 PKARC 的男人,毫不犹豫的将 PKARC 分享了出来。

PKARC 不仅与 ARC 完全兼容(废话),而且由于它是用汇编重写的(论底层语言的重要性),在性能上比 ARC 更加强大。

ARC 的市场被 PKARC 迅速占领(白嫖党的胜利),直到 SEA 公司将卡兹告上法庭,才使得 PKARC 被迫停止了发放。

你说尝过肉味的人,谁还会想着回头吃 shi,骄傲的卡兹估计也是这么想的。

卡兹随后使用没有版权专利限制的算法,并与「哈夫曼编码」完美结合,创造出了全新的算法(现在很多压缩软件的默认算法),并配套开发了一款名为 PKZIP 的压缩软件。

压缩包的格式就是现在也大名鼎鼎的「.zip」,勇者并没有成为恶龙,而是免费发放了 PKZIP。

打破垄断的卡兹,或者说他的孩子,ZIP,获得了难以想象的影响力。

哪怕后来 Windows 的出现,WinZIP 也一度保持着以往无人可及的高度,直到现在,如果你留心观察过各大软件商发布新品时所用的格式,往往都是 ZIP。

可这个故事并没有迎来一个 happy ending,卡兹这个开源界的先行者,在全世界电脑中都留下痕迹的天才程序员,2000 年 4 月死于一个普普通通的汽车旅馆,身旁还有空空如也的 6 个酒瓶。

卡兹永远的留在了 37 岁。

因盗版流行的RAR

压缩软件再也没有了垄断,由于卡兹并没有为自己的作品申请专利,直接导致了群雄逐鹿的现状。

国外各大压缩软件争的欢,国内却意外的被 RAR 统治了起来,其实这一切都源于最先应用 RAR 的盗版商们。

大致分成两支,一支是随着盗版 Windows 的预装所流行(小时候自家电脑上就有),另外一支则是起源于专攻盗版游戏的破解组织对 RAR 的专情。

RAR 格式起源于 WinRAR,但和 ZIP 不同,RAR 并没有完全开放,而是只免费发放了解压组件。

这里也存在猫腻,就是别的压缩软件只能解压 RAR,却不能创建。而到了 WinRAR 这里,直接通吃,这个万能的压缩软件一下子力压群雄,盖过了 WinZIP 之类的老牌工具。

其实最开始 WinRAR 也是个收费软件(它也有它自己的优点,压缩率强等等),不过国内在流传过程中大家用的都是破解版,因盗版而流行,也因盗版而没落,成败萧何大概就是这样了。

开源的7Z

7Z,开源软件 7-ZIP 的专属格式。1999 年横空出世,压缩效率一度比以往的 RAR 和 ZIP 更胜一筹。

而且 7-ZIP 打破了 RAR 不能创建的界限,将卡兹的开源精神发挥到了极致。

现在没过多长时间就会蹦出来个压缩软件,大部分就是给 7-ZIP 套了壳,再往里面加加私货(无良广告,收费服务等等),让压缩软件这个小池塘越来越浑了。

其实 7-ZIP 的开源协议中有利用它开发的产品也需开源的要求,可很多厂商(某压等)不仅没有遵守协议,反而各种折腾,吃相实在难看。

总结

故事到这就结束了,其实各个算法的提出还有很多有趣的故事,实在是写长了没人看,我精简了许多。

这里没有推荐任何一款压缩软件,毕竟压缩这个功能在我看来其实并不大众,2020 了都,谁还没个大点的硬盘。

如果有需求的小伙伴,我建议老版本的 Bandizip、新版本的 WinZIP,或者原生的 7-ZIP 都可以使用。

对于国产的某些无良的奸商,我们哪怕为了留卡兹一份情,也该远远躲开。

这一期到这里就结束了,如果小伙伴们喜欢这种讲故事的文章,不妨在留言里支持一下,我会给大家带来更多有趣的内容。

咱周六再见呗。

本文作者@程序员不高兴

教程

做成事的核心是什么?

2020-11-18 16:12:19

教程

这篇推文真差点删了没发

2020-11-18 18:02:27

⚠️
水源智库上的部份代码,资源及教程来源于互联网,仅供网友学习交流,版权归作者所有。所有项目皆为分享思路,仅供参考!
若您的权利被侵害,请联系站长 QQ: 或 点击客服私信反馈,我们将第一时间处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧