Jeśli kiedykolwiek musiałeś wysłać pocztą elektroniczną, przesłać lub pobrać kilka dużych plików lub programów, najprawdopodobniej zetknąłeś się z plikami ZIP. Pliki ZIP, znane również jako pliki skompresowane lub zarchiwizowane, kompresują wiele plików do pojedynczej lokalizacji z rozszerzeniem .zip lub .ZIP, zmniejszając ich ogólny rozmiar i ułatwiając ich przesyłanie.
Phillip Katz wynalazł plik ZIP w 1986 r. i został on po raz pierwszy wdrożony w programie PKZip dla firmy Katza, PKWare, Inc. Ostatecznie, metoda kompresji Katza stała się powszechnie używana w popularnych systemach operacyjnych. Systemy Microsoft Windows i Mac OS firmy Apple zawierają wbudowane narzędzia do kompresji i rozpakowywania plików, a programy takie jak WinRAR, WinZip i StuffIt mogą je rozszerzać.
Ale jak to wszystko działa? Jaki rodzaj technologicznej magii jest w grze, która sprawia, że twoje pliki są mniejsze, zachowując wszystkie informacje na później?
Ta “magia” jest w rzeczywistości dość prostym algorytmem, który bierze zbędne aspekty pliku i rozbija go na mniejsze części.
Aby ułatwić zrozumienie, weźmy zdanie: “Mashable może pomóc uczynić czytelników mądrzejszymi; czytelnicy mogą pomóc uczynić Mashable mądrzejszym” i udawajmy, że jest to plik.
Każde słowo w przykładowym zdaniu pojawia się dwa razy. Gdyby każdy znak i spacja w tym zdaniu składały się na jedną jednostkę pamięci, całość miałaby rozmiar pliku 78 jednostek. Gdybyśmy stworzyli numerowany kod – lub “słownik” – dla tego zdania, mógłby on wyglądać następująco:
1. Mashable
2. can
3. help
4. make
5. readers
6. smarter
To nowe zdanie ma tylko 24 jednostki. Dlatego skompresowany plik miałby tylko 24 jednostki pamięci oprócz innego pliku, który wymienia nasz numerowany kod, tak aby program kompresujący wiedział, jak zastosować każdą jednostkę informacji. Nazywa się to “kompresją bezstratną”; wszystkie oryginalne informacje zostają zachowane.
Sposób działania rzeczywistego programu kompresującego jest nieco bardziej skomplikowany niż w poprzednim przykładzie – rozpoznawałby on wzorce. Przykładem jest litera “e” i spacja po “Mashable” i “make”. Ale ponieważ nie ma wielu przypadków, w których ten konkretny wzór występuje, program najprawdopodobniej nadpisałby go bardziej oczywistym wzorem. Rzeczywisty program jest w stanie znaleźć znacznie bardziej wydajny słownik i skompresowany plik niż my.
Według edukacyjnej i instruktażowej strony internetowej HowStuffWorks, powszechne jest, że języki mają nadmiarowe wzory, dlatego pliki tekstowe są łatwo kompresowane. Ale współczynnik redukcji pliku zależy od kilku czynników, w tym od typu i rozmiaru pliku oraz od tego, jak program zdecyduje się go skompresować.
W przeciwieństwie do tego, obrazy i pliki MP3 zawierają więcej unikalnych informacji bez wielu wzorców. To jest, gdzie “stratna kompresja” przychodzi w – programy kompresji pozbywają się tego, co uważają za niepotrzebne informacje. Jeśli miałbyś zeskanowany obraz, na przykład, z niebieskim niebem, program kompresji mógłby wybrać jeden kolor niebieskiego dla każdego piksela. Jeśli schemat kompresji działa dobrze, zmiana nie byłaby bardzo zauważalna, ale rozmiar pliku byłby znacznie mniejszy.
Problem z kompresją stratną polega jednak na tym, że nie można uzyskać oryginalnego pliku z pliku skompresowanego, co sprawia, że jest ona mniej idealna niż kompresja bezstratna, gdy trzeba zachować wszystkie oryginalne informacje, na przykład podczas pobierania baz danych i niektórych aplikacji.
Mashable composite image courtesy of , tose, Auris.
.