Ваше местоположение в сети:
Рубрика:

Сжатие данных

Разделы сайта:

В сегодняшней статье я хочу поговорить про такие программы как архиваторы. На самом деле, я уже один раз писал про бесплатный архиватор 7zip, но тогда акцент ставился на том, как установить эту конкретную программу. Сейчас же я хочу поговорить об архиваторах вообще, об их истории и принципах работы.

Идея архиваторов

data compression

Архиватор - это программа, которая сжимает данные. Так, что они становятся меньшего размера. Зачем это нужно? Раньше это было нужно очень часто, особенно, когда данные передавались на дискетах размера 1.44MB. Сейчас, конечно, места на диске становится все больше и больше, но слишком много его не бывает никогда. А если вы посылаете документы по электронной почте, то и сейчас часто можете сталкиваться с ограничениями, накладываемыми на размер пересылаемых файлов. Так что, прежде чем посылать документ, возможно, стоит его сжать.

У вас не возникает странного ощущения? Все файлы под действием сжимаются. А потом их можно снова распаковать. Такого же не может быть! Ведь более длинных файлов больше, и если все файлы уменьшаются в размере, то найдутся отличающиеся друг от друга файлы, совпадающие после сжатия! И как тогда их распаковывать? Получается, что операция неоднозначна, сжали один файл, а при распаковке можем получить совсем другой.

На самом деле, никаких противоречий нет. Идея арзиваторов очень проста. Просто архиватор сжимает не все файлы, он сжимает все "нормальные" файлы. А большинство файлов при применении к ним архиватора, наоборот, немного увеличиваются в размере. Но просто, скорей всего, вам никогда не будут попадаться такие файлы.

Логика архиваторов

Почему так происходит? А потому что все, создаваемое человеком, имеет какую-то логику. И именно эту логику и ищут архиваторы. Могут быть варианты:

  • В этом тексте часто встречается слово "архиватор". Если текст хочется сжать, можно где-нибудь определить сокращения, и дальше обозначать архиватор черех "арх". Или вообще через какой-нибудь специальный символ. Текст от этого сократится.
  • Вообще текст для компьютера слабо насыщен информацией. Мы используем порядка 60 символов (маленькие, большие буквы). Давайте сейчас для упрощения скажем, что используется не больше 64 различных символов. 64 - это 2 в шестой степени. А для хранения символа используется байт, принимающий различные 256 значений - 2 в восьмой степени. Тем самым, в случае текста 2 бита из 8 "простаивают". Если учесть это в алгоритмах сжатия данных, то сразу можно начать использовать 6 байтов на 8 символов, сокращая размер файла на четверть.
  • Аналогично, на рисунках могут быть однотонные зоны. Тогда эффективней не хранить цвета "попиксельно", а как-то описать границы зон, имеющих одинаковый цвет.

Это были лишь простые идеи, естественно, что современные архиваторы используют намного более сложные алгоритмы.

Типы архиваторов

Сначала их было очень много. Ведь программистам хотелось придумывать свои архиваторы, а стандартов не было. ZIP, ARJ, LZH, RAR, UC2, CAB, ACE, это лишь малая часть из встречавшихся архиваторов. И пользователи часто имели на своих компьютерах кучу программ для архивации - ведь никогда не было известно, в каком еще формате можно получить файл.

Потом более продвинутые разработчики стали вставлять в свои архиваторы возможность открывать архивы других типов. Тем самым необходимость иметь кучу программ пропала. А заодно некоторые типы архиваторов стали более популярными. На сегодняшний день активно используется лишь малое количество типов:

  • zip: поддержка zip встроена в windows уже достаточно давно. Пользователь может, в принципе, и не знать, что он пользуется архиватором - объект может называться как "сжатая папка", работа с ней может особо не отличаться от работы с папками обычными.
  • gzip: архиватор, используемый чаще всего под Линуксом Также, как и под Windows, современные графические оболочки работают с архивами практически как с обычными папками.
  • rar: независимый и до сих пор достаточно распространенный архиватор. Особенностью rar является то, что это - коммерческий алгоритм. Публичным является только алгоритм распаковки, а вот для сжатия данных может использоваться только официальная платная программа winrar. Поэтому в windows отсутствует поддержка rar, требуется установка чего-либо. Некоторое время я уже писал о бесплатном архиваторе 7zip, умеющем открывать rar. А под Линуксом проще всего установить пакет unrar; например, под Ubuntu это делается выполнением команды sudo apt-get install unrar.

Есть и другие типы, но я не буду на них останавливаться.

Эффект от архиваторов

Разные файлы сжимаются по-разному, так что и эффект от архифаторов может быть разный. Тексты - отлично, а вот, например, картинки большинства форматов - очень плохо, поскольку в них уже используется свое собственное сжатие, я уже писал об этом в статье про форматы изображений.

Я хотел в этой статье добраться и до использования архивов с паролями для защиты секретных данных, но статья получилась уже достаточно длинной, так что об этом - в другой раз!

← Объектив для фотоаппаратаПараметры съемки →
comments powered by Disqus