"); //-->
作者 | ithuangqing
来源 | 编码之外(ID:ithuangqing)
ZIP压缩文件居然是靠抄袭发展而来,作者还酗酒英年早逝!
你不知道的ZIP:
1、什么,ZIP是靠抄袭发展起来的?
2、什么,ZIP的作者三十多岁就去世了?
3、什么,ZIP的作者竟然是穷困潦倒的?
4、……真是长知识了,没想到一个ZIP还那么多有趣的事情
我们日常都会使用到解压缩,如果让你脱口而出一种压缩文件的格式,会不会大多数人的回答都是ZIP呢?
实际上,ZIP在一定程度上已然成为了压缩文件的标准格式,但是对于ZIP文件格式的背后,确实一个充满传奇的故事……
你知道ARC嘛?你知道什么是PKARC吗?你知道什么是PKZIP吗?程序员的第一直觉,PKZIP肯定和ZIP有着密不可分的关系,当然,它是它的前身!
ZIP目前作为最为人熟知的主流压缩文件格式,那你知道它的发明者是谁吗?
一个计算机编程天才 -- 菲尔卡茨,却在37岁的时候因为饮酒过量去世了……
1、什么是ZIP通常情况下,我们所说的ZIP是一种文件格式,什么文件呢?压缩文件,就是这样子的:
那除了ZIP格式之外,你还熟知哪些常见的压缩文件格式呢?一般还有RAR和7z这两种格式,可能对于7z大家接触的比较少一点,比如我就是,最常使用以及见到的就是ZIP和RAR了,不过我以后决定压缩文件的时候优先选择7z的格式了,据说其压缩效率更高(主要跟压缩算法有关,以后的文章会讲)
ZIP问世相对较早,RAR和7z其实是其竞争者,而且实际使用来说,RAR和7z的效率都要比ZIP高,但是为什么ZIP几乎成了事实上的标准呢?
不知道你有没有发现,在Windows上即使你没有安装相应的ZIP解压缩软件,你同样可以查看ZIP文件,这个特性在苹果和Linux上也得到了相应的支持,而其他压缩格式则不是这样!
ZIP到底有何神奇之处呢?
2、ZIP的发明者 - 菲尔·卡茨谈及ZIP,那就必定绕不开其发明者菲尔·卡茨,其实菲尔·卡茨是一个比较悲惨的人物,最起码在我看来,不该在三十多岁的年纪离开人世,它本开将ZIP创造的更好,它本该创造出更多优质的作品,它本该为计算机界留下更多的贡献……
可是它千不该万不该在37岁的年纪因为饮酒过量导致英年早逝……
我觉得这是悲伤的……
菲尔·卡茨是正儿八经的科班出身,在其大学毕业之后,他就开始从事计算机编程工作,他是个非常有想法的人,喜欢用用编程,用代码技术去创造一些有用的东西,他对技术是无比热爱的,他是大胆的,有想法的……
当然市面上比较流行的压缩软件叫做ARC,这款压缩软件在当时是主流地位,当时是一家叫做SEA的小公司开发的,是一款基于MS-DOS平台下的商业软件,啥是商业软件,就是收费的,你要用,你就得给钱,但是当时的付费政策跟现在是有区别的。
正式因为这个区别,才给了菲尔·卡茨创造ZIP的机会……
3、菲尔·卡茨的“抄袭”之路ARC的流行让菲尔·卡茨看到了机会,当时的软件付费政策不像现在这样,放到现在,如果你要购买一款软件,比如你要在App Store上购买一款软件,那你付费完成之后,你就拥有了该软件的全部功能使用权,对是使用它的权利,关于这个软件的背后,可能你就一无所知了……
但是当时不是这样的,对于ARC这款商业压缩软件,如果你购买的话,它不仅会把这款软件的安装包发给你使用,同时还会把软件的源代码发给你,哈哈,真不知道当时这是咋想的,可能是我既然付费买了,那么你所有的东西都是我的了,当然也包含源代码了……
想必你也知道了,既然源码都有了,那我不是可以为所欲为了嘛?复制一份不也是轻轻松松的事情嘛?
所以啊,菲尔·卡茨就萌生了这样的念头,说干就干,菲尔·卡茨开启了二次创作之旅……
都说活学活用,学到的知识要用到实际当中,我们这些计算机专业的经常抱怨在大学学到的知识没有什么实际用处,但是看看人家菲尔·卡茨,真的是普通人就是普通人啊……
当时ARC这款商业压缩软件是基于C语言编写的,我们都知道,C语言是一门面向过程语言,在抽象程度上是低于Java等这种面向对象语言的,也就是C语言更加接近于底层,那对于用起开发的程序而言,相比较之下,肯定是更接近底层的性能越高了。
那比C语言性能更高的是啥呢?思考一下我们可以想到汇编,汇编语言是比C语言更佳接近机器语言指令的,所以相对来说,汇编创造的程序会比C语言生产的产品性能更强,尤其体现在速度上。
看到了这点,当时菲尔·卡茨并没有直接购买ARC软件,而是从网上下载了一份ARC的C语言源代码(看来,付费资源外放是避免免不了的啊),好家伙,菲尔·卡茨毕竟是科班出身啊,而且技术很强,汇编对他来说,小菜一碟,于是菲尔·卡茨就一顿操作猛如虎,将ARC使用汇编语言全部重写了一遍(大佬就是大佬啊)
这样操作下来,一个新的使用汇编编写的ARC就诞生了,菲尔·卡茨将其命名为“PKARC”,哈哈,看到这个名字,你有什么想法呢?是不是有种菲尔·卡茨要挑战ARC的感觉,看我,直接汇编给你搞出来一个,和你正版的ARC来个终极PK……
当然,汇编版本的ARC在性能上是完全碾压C语言版本的ARC的,不过菲尔·卡茨可没有PK的意思,那为什么叫做“PKARC”呢?
哈哈,那是因为菲尔·卡茨的英文名称叫做“Phillip Katz”
知道怎么回事了吧!
4、菲尔·卡茨被告熟悉点法律的都知道,其实菲尔·卡茨的行为是构成侵权的了,这不是明摆着抄袭人家嘛,所以很快,菲尔·卡茨就被ARC的公司SEA给告了。
“嘿,小伙子菲尔·卡茨,你挺牛X啊,竟然看着我们的C语言源码用汇编自己重写了一份,技术可以啊,不过,你这是侵权啊,小心我告你,要不,你把PKARC卖给我们,让它成为我们公司旗下的一款产品吧,一下如何啊,小伙子”
“滚犊子……”
就这样,菲尔·卡茨把SEA的人给痛快的拒绝了,这真的是那句话,说最狠的话,挨最毒的打,因为后面SEA把菲尔·卡茨给告了,而菲尔·卡茨最终败诉,导致赔款以及停用PKARC,甚至导致后续PKARC的一些续作也被叫停,逼得菲尔·卡茨不得不重改所有代码……
这次一搞,导致菲尔·卡茨没有从PKARC赚到一毛钱,最后搞得还是非常的穷……
5、PKZIP问世经过这次的官司,菲尔·卡茨决心搞自己的压缩软件,其实还是在原有基础之上,懂得都懂哈,于是官司没过多久,菲尔·卡茨这猛男就又创造出一款新的产品“PKZIP”,而且这款产品也是全面碾压ARC的。
对了,你们知道“ZIP”是什么含义吗?其实就是速度的意思,说白了,就是我必须得比你ARC快,比你各个方面都要快,事实也确实如此。
其实在PKARC阶段的时候,菲尔·卡茨创建了一家公司叫做“PKWARE”,后续是在研究出PKPAK的基础上又研发出新一代产品PKZIP的,这种压缩工具压缩出来的文件格式就是ZIP了,后续菲尔·卡茨也把这种ZIP格式的各个详细技术参数公布于世,这也使得菲尔·卡茨成了最有名的共享软件发明者之一
6、ZIP的助推剂 -- winzip后续ZIP的发展离不开后来出现的一个解压缩软件winzip,当时还都是dos时代,黑乎乎的命令窗口,在1995年的时候,微软发布了Windows 95,那个时候图形界面深受大众喜爱,基于此,很多人就开始渴求图形化界面下的优良软件,那作为图形界面下的解压缩软件winzip就拥有了绝佳的先天条件,其实吧,说白了,winzip就是PKZIP图形界面的前台程序。
由于winzip的大火,同时带动了ZIP的发展,另外winzip这款软件已经****十年了,当时还是很火的,不过再后来由于Windows内嵌了支持ZIP格式文件的功能,一定程度上减少了winzip的销售。
直到现在,winzip依然坚挺,不过,真的有人会去用它吗?
7、PKZIP使用的压缩算法到了现在,需要搞清楚一个问题,不论PKZIP还是winzip,这个是压缩软件,就是可以把文件压缩成一个压缩包,这个压缩包的文件格式是ZIP格式,通常都是后缀.zip,这个需要清楚!
那作为菲尔·卡茨创造的PKZIP使用到的是什么压缩算法呢?
DEFLATE,对这个算法就叫做DEFLATE,是由菲尔·卡茨发明创造出来的一种无损数据压缩算法,他还申请了专利,大佬就是大佬啊。
这种压缩算法有什么独到之处呢?
DEFLATE这种无损数据压缩算法其实是结合了LZ77算法和哈夫曼编码,主要就是应用于菲尔·卡茨的PKZIP。
就会看到文件的开头就是以PK开头的……
那什么又是LZ77算法和哈夫曼编码呢?这其实就是关于压缩技术的一些知识点了。
8、一句话解释压缩技术那什么是压缩技术呢?简单来说,压缩技术就是使得原本的文件变得更小,以节省空间,那如何使得文件变小,就需要各种各样的压缩算法。
那各种各样的压缩算法大体都是如何操作的呢?我这里举一个简单的例子,比如我这里有一串数字“111100000”,那么我们可以想一下,如何将这串数字变小,以减少空间呢?
我们就可以采取这样的策略,就是把“相同数据用数字标识”的方法,比上述就可以表示成“1405”,也就是有4个1和5个0,基于此策略,也可以快速还原成“111100000”,如此一来,就达到了减少其体积占用的效果。
这其实就是一种叫做RLE的压缩算法的压缩策略,关于这个,后续会写文章详细解释。
9、ZIP与菲尔·卡茨ZIP文件是我们每个程序员都会使用到的文件,但是又有多少人会记得菲尔·卡茨呢?
本该继续活着创造出更多伟大艺术品,却因过量饮酒导致不幸去世,当听到菲尔·卡茨因过量饮酒导致急性脾出血在一间汽车旅馆去世的消息,这是让人多么的惋惜啊格式的发明者Philip Katz英年早逝,37岁就因为酗酒去世了。
可惜,可叹……
菲尔·卡茨虽然走了,但是ZIP会一直存在,我希望每个人在使用ZIP的时候都能自人而然的想到一个名字 -- “菲尔·卡茨”!
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。