自从我进入计算机科学并开始注意到计算机在压缩文件方面的能力以来,我一直想知道它们背后的算法。 这本书将带您回到过去,解释一切工作原理。

这本书比我老,并且显示出来。 您开始阅读介绍性章节并阅读了很多有关可移植C代码的警告,以选择是否要针对16或32位计算机(是的,没有错字),并且在其中某些地方提到了一些内存复杂性认为有效(65KB),应该避免这种做法,以免占用太多内存的自适应解决方案。
我在具有超线程功能的64位四核处理器上键入此内容,晃动了16GB的RAM,我将其中的每一位都视为理所当然。 我这一代被宠坏了
我知道你在想什么 真。 这本书确实比沙发上那堆薯条还陈旧。
- 现代穆斯林:苏丹回忆录
- 书评:自杀:为什么我们要自杀
- Tomi Adeyemi给了尼日利亚人他们应得的幻想YA书
- 书评:太空飞船残破,拉塞尔·诺海蒂
- 仅仅希望:犬儒主义时代的生活-杰森·杜因斯(Jason Duesing)
我喜欢历史,我告诉你,这本书很多。
通常,从历史的角度阅读特定主题可以使您更好地理解事物发展的方式。 如果那时您还没有读到65KB的RAM有多重要,那么您会认为该领域的每个研究人员都是其中的微型优化专家之一。 事实证明,仅由于内存限制而考虑了自适应技术。 我发现这很有趣,但并不那么明显,因为据我所记得,我系统上的磁盘和RAM始终处于千兆字节的顺序。
这是一个完全不同的计算机科学领域。
毫不奇怪,在那本书之后,我可能还会读其他10–20本书。 但这是一个介绍性的标题,您可以很好地了解事物的工作方式,直到使用用于表示压缩数据的数据结构。
如果您还没有接触过该主题,那么在读这样的书之前,有些事情您根本不会考虑。 例如,压缩结果始终取决于模式。 在任何压缩算法中输入随机噪声,您可能会获得相同大小甚至更大文件的输出。 这是有道理的:压缩是指对事物进行汇总并消除冗余。 如果没有冗余或要删除的模式,则没有可能的压缩。
事实证明,有损压缩也不是那么可怕:它基本上是对符号频率的静态分析(产生分布),您可以使分布平滑。 平滑的部分是损失,如果算法需要任何体面的用户块,则可以并且应该将其参数化。
我只是想了解它的要点,但是那里有很多有趣的阅读材料-以及代码示例。 在C语言中,当目标是设计压缩算法时,即使在今天,听起来仍然是合理的语言选择。
这些代码示例不过……
我读本书的时间大多是在晚上,那时大脑的解析和编译C代码的能力大大降低了(便宜的借口,对吧?)。 所包含的代码中没有缺少注释,但是编程风格似乎并不像现代C编程那样。 我没有看到任何巫术,但是肯定不容易阅读! 无论如何,只要您离开代码区域进入另一个算法规范,一切都会平静下来。
总结(TL; DR)
本书包含了出色的历史课程,并对数据压缩的工作原理,如何测量其有效性进行了很好的解释,并介绍了一些将要研究的算法。
我唯一的问题是它的结构。 这是一种自上而下的方法,因此整本书中都有“新算法实现”代码的某种重复模式。 所有算法本身都是不同的,并且具有不同的用途,例如压缩文本,音频或图像文件,以及一些深奥的和意外的章节,例如分形压缩技术。 从这个意义上讲,我宁愿看到有关所有算法的理论介绍,而且它们仅将代码作为感兴趣的书呆子们单独保留。 我不得不浏览许多代码清单,因为它们实际上是先前解释的算法的C版本。 当然,“直到到达文件末尾的过程流”足够模糊,足以证明示例实现是正确的,但是对我来说,作为入门读者,它只是在妨碍我。