?? winzip輸給winrar 壓縮大戰.txt
字號:
winzip輸給winrar 壓縮大戰真相利立德網絡創業聯盟 大眾軟件 gz 2008-3-26 19:21:41 這篇文章對計算機文件壓縮技術做了比較深刻的剖析,對winzip和winrar這兩款著名的主流壓縮軟件的前因后果、矛盾斗爭等進行了詳細的介紹,另外尤其是文字寫得也非常優美,是一個電腦高手必讀的好文章。推薦!
壓縮大戰真相 此文章轉自2004.10的《大眾軟件》,原作者為 廣東 GZ
前言--王者歸來?
等待足足兩年之久,壓縮霸主WinZip終于在萬眾期待下發布了9.0正式版。全世界自然一片沸騰,在世界各大知名下載網站中,WinZip9.0再次帶起下載狂潮。然而此時國內并沒有王者回歸的歡呼,卻一致委婉或直接地表達出失望地情緒,而下載更新的用戶也寥寥無幾,這絕對是一道國內獨特的風景,它不禁讓人想問,為什么?從各種評測報告看,因為不支持RAR格式,所以兼容性更佳的WinRAR3.30全面超越固步自封的WinZip9.0-- 原來這就是國內用戶抵觸WinZip9.0的唯一理由。
蒼天已死,黃天當立。這是國內輿論草率的結論。之所以說草率,是因為甚至都沒有出現反面聲音的媒體,這絕對不是一個成熟正常的氛圍。正是這種一邊倒的跟風導致了大量用戶極端的心態,于是牽強附會、人云亦云和以訛傳訛的聲音充斥其間。這不由得讓人陷入深思,事實上,看似壓縮工具之爭的表面下深藏的是壓縮格式之爭。RAR格式即將或者己經取代了ZIP格式嗎?不能僅僅從兩者的技術表現和統計數據去回答這個問題,計算機數據壓縮格式的發展歷程是非常獨特的,它的王者之選帶有傳奇的歷史烙印,并一直持續產生著決定性的影響。要正確解答這個問題就必須去了解有關數據壓縮的歷史,任何試圖避開歷史環境而做出的結論都是輕率的。因此請不妨先認識數據壓縮的歷史本來,再來決定這些壓縮工具的前程是非。
LZ算法--ZIP與RAR共祖同源
要講壓縮的歷史,就不可不提LZ算法,這是一種有關數據壓縮的算法,何為數據壓縮?從本質上講,數據壓縮的目的就是要消除信息中的冗余。早在LZ算法出現之前,研究員們從理論上探討了壓縮算法的數學基礎及模型基礎,同時也在這些基礎上研究出了一些編碼方法,其中的Shannon-Fano編碼和Huffman編碼非常有影響力。但這些編碼,包括后來發展出的"算術編碼",都無法成為理想的編碼方法--因為它們無法在編碼效率和編碼速度上同時滿足日益增長的壓縮需求。這種情況在LZ算法出現時等到了解決。
Shannon編碼
1948年貝爾實驗室的Shannon發表的論文《通信的數學理論》中指出,任何信息都存在冗余,冗余大小與信息中每個符號的出現概率或者說不確定性有關。Shannon借鑒了熱力學的概念,把信息中排除了冗余后的平均信息量成為信息熵,并給出了計算信息熵的數學表達式。這篇偉大的論文后來被譽為信息論的開山之作,信息熵同時也奠定了所有數據壓縮算法的理論基礎。利用信息熵公式,人們可以計算出信息編碼的極限。不過完備的理論并不等于實用的技術,要將理論變為實踐,編碼方法是極為重要的一步。1948年,Shannon在提出信息熵理論的同時,事實上也給出了一種簡單的編碼方法--Shannon編碼。1952年,麻省理工學院的R.M.Fano又進一步提出了Fano編碼。兩者后來被稱為Shannon-Fano編碼,這種早期的編碼方法揭示了變長的編碼方法揭示了變長編碼的基本規律,也也確實可以取得一定的壓縮效果,但離真正實用的壓縮算法還相去甚遠。
Huffman編碼
Huffman編碼是第一個真正實用的編碼方法,由D.A.Huffman在1952年提出。當時Huffman是麻省理工學院的一名學生,據說為了向老師證明自己可以不參加某門功課的期末考試,他設計了這個看似簡單卻影響深遠的編碼方法。Huffman編碼效率高,運算速度快,實現方式靈活,從20世紀60年代直到現在,在數據壓縮領域得到了廣泛的應用。而20世紀80年代初,Huffman編碼又出現在CP/M和DOS系統中,即使在今天,在許多知名的壓縮工具和壓縮算法里(如WinZip、gzip和JPEG),也都有Huffman編碼的身影。不過,Huffman編碼所得的編碼長度只是對信息熵計算結果的一種近似,并不能真正逼近信息熵的極限。Huffman編碼影響力很深遠,至今還在計算機大專學生必修課程《數據結構》中被提及。
LZ是其發明者J.Ziv和A.Lempel兩個猶太人姓氏的縮寫。此二人于1977年發表題為《順序數據壓縮的一個通用算法》的論文,論文中描述的算法被后人稱為LZ77算法。1978年,二人又發表了該論文的續篇,描述了后來被命名為LZ78的壓縮算法。其實LZ系列的算法并不新鮮,其中既沒有高深的理論背景,也沒有復雜的數學公式。它們只是簡單的延續了千百年來人們對字典的追崇和喜好,并用一種極為巧妙的方式將字典技術運用于通用數據壓縮領域。簡單的說如果你習慣用字典中的頁碼和行號代替文章中的每個單詞的時候,那實際上你已經掌握了LZ系列算法的真諦,因此這類編碼算法被統稱為Dictionary coders。
在1984年,Terry Welch發表論文描述了他在Sperry研究中心(現在Unisys公司的一部分)的研究成果,也就是后來非常有名的LZW算法。它實質上是LZ78算法的一個變種,但被認為是一個獨立的編碼算法。LZW繼承了LZ77和LZ78壓縮效果好、速度快的優點,而且在算法描述上更容易被人們接受,實現也相對簡單。而在其后發展出來的各式各樣的字典編碼算法,基本上都是這三種編碼算法的分支或變體。也就是說LZ77、LZ78和LZW是字典編碼中最基礎的3種編碼算法。今天我們熟悉的PKZIP、WinZip、WinRAR、gzip等壓縮工具都是LZ系列算法的受益者,甚至連PGP這樣的加密文件格式也選擇了LZ系列算法作為其數據壓縮的標準。
字典式編碼不但在壓縮效果上大大超過了Huffman編碼,而且在實現上,壓縮和解壓縮的速度也異常驚人。于是LZ系列算法的優越性很快就在數據壓縮領域里體現出來,使用LZ系列算法的工具軟件數量呈爆炸式增長。UNIX系統上最先出現了使用LZW算法的Compress程序,該程序性能優良,很快成為UNIX世界的壓縮程序標準。緊隨其后的是MS-DOS環境下的ARC程序,還有像PKARC等仿制品。LZ78和LZW一時間幾乎統治了UNIX和DOS兩大平臺。然而隨著時間流逝,事情變得耐人尋味。目前為止占據個人用戶計算機的主流壓縮工具幾乎都采用LZ77變種算法,為什么?
叛逆斗士的勝利--ZIP格式誕生
為什么技術實現上更為優秀的LZ78和LZW沒有成為最主流的算法?LZ77與它們有什么不同?答案是--專利權。
相對于LZ77完全沒有專利限制來說,LZ78在美國稍稍涉及到一些專利禁止區,而LZW正像上文所說的專利權最終歸屬于Unisys公司。因此直接應用LZ78的算法可能會帶來意想不到的麻煩,而所有使用LZW算法(哪怕是他的變體)的人都要獲得Unisys公司的專利許可。這種專利限制是相當廣泛的,例如GIF圖像格式使用了LZW算法,那么所有開發GIF編碼/解碼器的人都必須要有LZW專利使用許可,這意味著繳納大筆的專利費。
在DOS年代由于計算機存儲介質容量的微小,個人用戶對數據壓縮軟件的渴望是現在的用戶無法想象的。例如在1984年,個人計算機的標配不過是容量360kB的5.25寸軟盤而已,如果個人能將數據壓縮數倍后存儲,不啻于節省了一大筆錢。這種渴望在1988年時達到了頂峰,這正是互聯網剛剛形成雛形的年代,網絡數據交換開始出現。當時最流行的是使用電話線撥號登錄別人在家里搭建的服務平臺--BBS系統,當時中國也曾有幾十個這樣的BBS存在,比如水木清華BBS。這種方式不但可以傳遞文本信息,也可由用戶上傳文件到站點的計算機以供其他用戶下載。不過由于電話線的接入速度慢的可憐,那時的接入標準僅僅是14.4kbit/s,通過BBS傳輸稍大一點的文件就叫人萬分痛苦。于是數據壓縮軟件就成為了BBS用戶一項必須的工具還記得上文提到1985年SEA公司開發的MS-DOS環境下第一個應用LZW算法的ARC壓縮軟件嗎?它是當時MS-DOS下統治性的壓縮軟件。從技術角度來說ARC確實不錯,但使用了專利LZW算法的ARC當然是標準的商業軟件,使用這種軟件工作就必須付費。不過當時許多玩家根本買不起ARC軟件,順便說一句題外話,那時大多PC玩家基本都沒什么富裕的錢,事實上個人計算機本身的發展就是被窮玩家精打細算所推動。不過個人計算機從誕生之日起就充滿了叛逆、自由的精神,這也是推動整個個人計算機世界前行的主要動力。此時一個年輕的程序員出現并試圖改變壓縮世界,這個人叫Phillip W.Katz(菲利普·卡茲)。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -