posts - 82, comments - 269, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          壓縮大戰(zhàn)真相

          Posted on 2006-12-05 09:15 itspy 閱讀(1027) 評(píng)論(3)  編輯  收藏

          此文章轉(zhuǎn)載自2004.10的《大眾軟件》,原作者為 廣東 GZ


          前言--王者歸來?
          等待足足兩年之久,壓縮霸主WinZip終于在萬眾期待下發(fā)布了9.0正式版。全世界自然一片沸騰,在世界各大知名下載網(wǎng)站中,WinZip9.0再次帶起下載狂潮。然而此時(shí)國內(nèi)并沒有王者回歸的歡呼,卻一致委婉或直接地表達(dá)出失望地情緒,而下載更新的用戶也寥寥無幾,這絕對(duì)是一道國內(nèi)獨(dú)特的風(fēng)景,它不禁讓人想問,為什么?從各種評(píng)測報(bào)告看,因?yàn)椴恢С諶AR格式,所以兼容性更佳的WinRAR3.30全面超越固步自封的WinZip9.0-- 原來這就是國內(nèi)用戶抵觸WinZip9.0的唯一理由。

          蒼天已死,黃天當(dāng)立。這是國內(nèi)輿論草率的結(jié)論。之所以說草率,是因?yàn)樯踔炼紱]有出現(xiàn)反面聲音的媒體,這絕對(duì)不是一個(gè)成熟正常的氛圍。正是這種一邊倒的跟風(fēng)導(dǎo)致了大量用戶極端的心態(tài),于是牽強(qiáng)附會(huì)、人云亦云和以訛傳訛的聲音充斥其間。這不由得讓人陷入深思,事實(shí)上,看似壓縮工具之爭的表面下深藏的是壓縮格式之爭。RAR格式即將或者己經(jīng)取代了ZIP格式嗎?不能僅僅從兩者的技術(shù)表現(xiàn)和統(tǒng)計(jì)數(shù)據(jù)去回答這個(gè)問題,計(jì)算機(jī)數(shù)據(jù)壓縮格式的發(fā)展歷程是非常獨(dú)特的,它的王者之選帶有傳奇的歷史烙印,并一直持續(xù)產(chǎn)生著決定性的影響。要正確解答這個(gè)問題就必須去了解有關(guān)數(shù)據(jù)壓縮的歷史,任何試圖避開歷史環(huán)境而做出的結(jié)論都是輕率的。因此請(qǐng)不妨先認(rèn)識(shí)數(shù)據(jù)壓縮的歷史本來,再來決定這些壓縮工具的前程是非。

          LZ算法--ZIP與RAR共祖同源
          要講壓縮的歷史,就不可不提LZ算法,這是一種有關(guān)數(shù)據(jù)壓縮的算法,何為數(shù)據(jù)壓縮?從本質(zhì)上講,數(shù)據(jù)壓縮的目的就是要消除信息中的冗余。早在LZ算法出現(xiàn)之前,研究員們從理論上探討了壓縮算法的數(shù)學(xué)基礎(chǔ)及模型基礎(chǔ),同時(shí)也在這些基礎(chǔ)上研究出了一些編碼方法,其中的Shannon-Fano編碼和Huffman編碼非常有影響力。但這些編碼,包括后來發(fā)展出的"算術(shù)編碼",都無法成為理想的編碼方法--因?yàn)樗鼈儫o法在編碼效率和編碼速度上同時(shí)滿足日益增長的壓縮需求。這種情況在LZ算法出現(xiàn)時(shí)等到了解決。

          Shannon編碼
          1948年貝爾實(shí)驗(yàn)室的Shannon發(fā)表的論文《通信的數(shù)學(xué)理論》中指出,任何信息都存在冗余,冗余大小與信息中每個(gè)符號(hào)的出現(xiàn)概率或者說不確定性有關(guān)。Shannon借鑒了熱力學(xué)的概念,把信息中排除了冗余后的平均信息量成為信息熵,并給出了計(jì)算信息熵的數(shù)學(xué)表達(dá)式。這篇偉大的論文后來被譽(yù)為信息論的開山之作,信息熵同時(shí)也奠定了所有數(shù)據(jù)壓縮算法的理論基礎(chǔ)。利用信息熵公式,人們可以計(jì)算出信息編碼的極限。不過完備的理論并不等于實(shí)用的技術(shù),要將理論變?yōu)閷?shí)踐,編碼方法是極為重要的一步。1948年,Shannon在提出信息熵理論的同時(shí),事實(shí)上也給出了一種簡單的編碼方法--Shannon編碼。1952年,麻省理工學(xué)院的R.M.Fano又進(jìn)一步提出了Fano編碼。兩者后來被稱為Shannon-Fano編碼,這種早期的編碼方法揭示了變長的編碼方法揭示了變長編碼的基本規(guī)律,也也確實(shí)可以取得一定的壓縮效果,但離真正實(shí)用的壓縮算法還相去甚遠(yuǎn)。

          Huffman編碼
          Huffman編碼是第一個(gè)真正實(shí)用的編碼方法,由D.A.Huffman在1952年提出。當(dāng)時(shí)Huffman是麻省理工學(xué)院的一名學(xué)生,據(jù)說為了向老師證明自己可以不參加某門功課的期末考試,他設(shè)計(jì)了這個(gè)看似簡單卻影響深遠(yuǎn)的編碼方法。Huffman編碼效率高,運(yùn)算速度快,實(shí)現(xiàn)方式靈活,從20世紀(jì)60年代直到現(xiàn)在,在數(shù)據(jù)壓縮領(lǐng)域得到了廣泛的應(yīng)用。而20世紀(jì)80年代初,Huffman編碼又出現(xiàn)在CP/M和DOS系統(tǒng)中,即使在今天,在許多知名的壓縮工具和壓縮算法里(如WinZip、gzip和JPEG),也都有Huffman編碼的身影。不過,Huffman編碼所得的編碼長度只是對(duì)信息熵計(jì)算結(jié)果的一種近似,并不能真正逼近信息熵的極限。Huffman編碼影響力很深遠(yuǎn),至今還在計(jì)算機(jī)大專學(xué)生必修課程《數(shù)據(jù)結(jié)構(gòu)》中被提及。

          LZ是其發(fā)明者J.Ziv和A.Lempel兩個(gè)猶太人姓氏的縮寫。此二人于1977年發(fā)表題為《順序數(shù)據(jù)壓縮的一個(gè)通用算法》的論文,論文中描述的算法被后人稱為LZ77算法。1978年,二人又發(fā)表了該論文的續(xù)篇,描述了后來被命名為LZ78的壓縮算法。其實(shí)LZ系列的算法并不新鮮,其中既沒有高深的理論背景,也沒有復(fù)雜的數(shù)學(xué)公式。它們只是簡單的延續(xù)了千百年來人們對(duì)字典的追崇和喜好,并用一種極為巧妙的方式將字典技術(shù)運(yùn)用于通用數(shù)據(jù)壓縮領(lǐng)域。簡單的說如果你習(xí)慣用字典中的頁碼和行號(hào)代替文章中的每個(gè)單詞的時(shí)候,那實(shí)際上你已經(jīng)掌握了LZ系列算法的真諦,因此這類編碼算法被統(tǒng)稱為Dictionary coders。

          在1984年,Terry Welch發(fā)表論文描述了他在Sperry研究中心(現(xiàn)在Unisys公司的一部分)的研究成果,也就是后來非常有名的LZW算法。它實(shí)質(zhì)上是LZ78算法的一個(gè)變種,但被認(rèn)為是一個(gè)獨(dú)立的編碼算法。LZW繼承了LZ77和LZ78壓縮效果好、速度快的優(yōu)點(diǎn),而且在算法描述上更容易被人們接受,實(shí)現(xiàn)也相對(duì)簡單。而在其后發(fā)展出來的各式各樣的字典編碼算法,基本上都是這三種編碼算法的分支或變體。也就是說LZ77、LZ78和LZW是字典編碼中最基礎(chǔ)的3種編碼算法。今天我們熟悉的PKZIP、WinZip、WinRAR、gzip等壓縮工具都是LZ系列算法的受益者,甚至連PGP這樣的加密文件格式也選擇了LZ系列算法作為其數(shù)據(jù)壓縮的標(biāo)準(zhǔn)。

          字典式編碼不但在壓縮效果上大大超過了Huffman編碼,而且在實(shí)現(xiàn)上,壓縮和解壓縮的速度也異常驚人。于是LZ系列算法的優(yōu)越性很快就在數(shù)據(jù)壓縮領(lǐng)域里體現(xiàn)出來,使用LZ系列算法的工具軟件數(shù)量呈爆炸式增長。UNIX系統(tǒng)上最先出現(xiàn)了使用LZW算法的Compress程序,該程序性能優(yōu)良,很快成為UNIX世界的壓縮程序標(biāo)準(zhǔn)。緊隨其后的是MS-DOS環(huán)境下的ARC程序,還有像PKARC等仿制品。LZ78和LZW一時(shí)間幾乎統(tǒng)治了UNIX和DOS兩大平臺(tái)。然而隨著時(shí)間流逝,事情變得耐人尋味。目前為止占據(jù)個(gè)人用戶計(jì)算機(jī)的主流壓縮工具幾乎都采用LZ77變種算法,為什么?

          叛逆斗士的勝利--ZIP格式誕生
          為什么技術(shù)實(shí)現(xiàn)上更為優(yōu)秀的LZ78和LZW沒有成為最主流的算法?LZ77與它們有什么不同?答案是--專利權(quán)。

          相對(duì)于LZ77完全沒有專利限制來說,LZ78在美國稍稍涉及到一些專利禁止區(qū),而LZW正像上文所說的專利權(quán)最終歸屬于Unisys公司。因此直接應(yīng)用LZ78的算法可能會(huì)帶來意想不到的麻煩,而所有使用LZW算法(哪怕是他的變體)的人都要獲得Unisys公司的專利許可。這種專利限制是相當(dāng)廣泛的,例如GIF圖像格式使用了LZW算法,那么所有開發(fā)GIF編碼/解碼器的人都必須要有LZW專利使用許可,這意味著繳納大筆的專利費(fèi)。

          在DOS年代由于計(jì)算機(jī)存儲(chǔ)介質(zhì)容量的微小,個(gè)人用戶對(duì)數(shù)據(jù)壓縮軟件的渴望是現(xiàn)在的用戶無法想象的。例如在1984年,個(gè)人計(jì)算機(jī)的標(biāo)配不過是容量360kB的5.25寸軟盤而已,如果個(gè)人能將數(shù)據(jù)壓縮數(shù)倍后存儲(chǔ),不啻于節(jié)省了一大筆錢。這種渴望在1988年時(shí)達(dá)到了頂峰,這正是互聯(lián)網(wǎng)剛剛形成雛形的年代,網(wǎng)絡(luò)數(shù)據(jù)交換開始出現(xiàn)。當(dāng)時(shí)最流行的是使用電話線撥號(hào)登錄別人在家里搭建的服務(wù)平臺(tái)--BBS系統(tǒng),當(dāng)時(shí)中國也曾有幾十個(gè)這樣的BBS存在,比如水木清華BBS。這種方式不但可以傳遞文本信息,也可由用戶上傳文件到站點(diǎn)的計(jì)算機(jī)以供其他用戶下載。不過由于電話線的接入速度慢的可憐,那時(shí)的接入標(biāo)準(zhǔn)僅僅是14.4kbit/s,通過BBS傳輸稍大一點(diǎn)的文件就叫人萬分痛苦。于是數(shù)據(jù)壓縮軟件就成為了BBS用戶一項(xiàng)必須的工具還記得上文提到1985年SEA公司開發(fā)的MS-DOS環(huán)境下第一個(gè)應(yīng)用LZW算法的ARC壓縮軟件嗎?它是當(dāng)時(shí)MS-DOS下統(tǒng)治性的壓縮軟件。從技術(shù)角度來說ARC確實(shí)不錯(cuò),但使用了專利LZW算法的ARC當(dāng)然是標(biāo)準(zhǔn)的商業(yè)軟件,使用這種軟件工作就必須付費(fèi)。不過當(dāng)時(shí)許多玩家根本買不起ARC軟件,順便說一句題外話,那時(shí)大多PC玩家基本都沒什么富裕的錢,事實(shí)上個(gè)人計(jì)算機(jī)本身的發(fā)展就是被窮玩家精打細(xì)算所推動(dòng)。不過個(gè)人計(jì)算機(jī)從誕生之日起就充滿了叛逆、自由的精神,這也是推動(dòng)整個(gè)個(gè)人計(jì)算機(jī)世界前行的主要?jiǎng)恿Α4藭r(shí)一個(gè)年輕的程序員出現(xiàn)并試圖改變壓縮世界,這個(gè)人叫Phillip W.Katz(菲利普·卡茲)。

          20世紀(jì)七八十年代出售軟件的方式和現(xiàn)在截然不同,以ARC軟件來說,它不僅包括了一份EXE可執(zhí)行文件,還包括它的C語言源代碼。經(jīng)常混跡于BBS上的菲利普·卡茲同樣買不起ARC,于是他自己將ARC的C語言源代碼進(jìn)行復(fù)制并用匯編語言重寫,并將這個(gè)壓縮工具稱作PKARC,這個(gè)程序自然與ARC完全兼容,而且由于使用匯編使得速度較ARC更快.在當(dāng)時(shí)的計(jì)算機(jī)世界里這是一種很普遍的現(xiàn)象,并沒有程序員認(rèn)為這種行為不對(duì),甚至只要不與自己沖突, 被改寫者通常也不在乎.不過這次不太一樣,菲利普·卡茲不僅僅是自己和朋友用,而是將這個(gè)軟件以非強(qiáng)迫性注冊(cè)的共享軟件形式向他人發(fā)放,但即使是不注冊(cè),一樣可以毫無限制地使用下去,大批ARC用戶自然也就轉(zhuǎn)而使用菲利普·卡茲的軟件.SEA其實(shí)不是什么大企業(yè),它只是個(gè)3人起家的小公司,當(dāng)然無法接受這種毀滅性打擊.以現(xiàn)在的眼光看來,最初SEA的方式是溫和的,它接洽菲利普·卡茲并希望通過授權(quán)的方式將PKARC納入旗下,然而并不認(rèn)為自己有什么過錯(cuò)的菲利普·卡茲一口拒絕,他不想讓PKARC成為商業(yè)軟件, 他制作這個(gè)工具的初衷并不是為了賺錢.最終菲利普·卡茲被SEA以侵犯ARC壓縮格式編碼算法的罪名告上了法庭,并輸?shù)袅斯偎?叛逆倔強(qiáng)的卡茲在敗訴后依然拒絕將PKARC授權(quán)給SEA公司,而選擇了支付法律費(fèi)用和停止發(fā)放PKARC。

          這場官司對(duì)菲利普·卡茲的人生觀和信念影響巨大,追求自由平等的精神并不意味著盲目和法律對(duì)抗,試圖劫富濟(jì)貧的少年俠客行為只能逞一時(shí)快意,實(shí)質(zhì)上幫助不了任何人。在官司的進(jìn)行中,菲利普·卡茲一直在持續(xù)開發(fā)PKARC的后續(xù)產(chǎn)品PKPRC,敗訴后菲利普·卡茲決定將PKPRC完全重寫。很顯然,這次再也不能去觸犯任何編碼算法的專利權(quán)了,從3個(gè)基本編碼算法來衍生自己的算法是必然的,于是去掉有專利權(quán)的LZW和LZ78,剩下的就只有LZ77。也許是被激怒后帶來了驚人的動(dòng)力,只用了幾周的時(shí)間菲利普·卡茲就創(chuàng)造出一個(gè)全新的壓縮編碼算法,該算法完美地結(jié)合LZ77和Huffman編碼,也就是后來大名鼎鼎的DEFLATE算法了。新壓縮軟件被命名為PKZIP,而其文件格式擴(kuò)展名叫作".zip"。PKZIP可將多個(gè)文件壓縮到一個(gè)文件中,無論壓縮比、壓縮速度都全面超過了商業(yè)軟件ARC。菲利普·卡茲將PKZIP作為自由軟件免費(fèi)發(fā)放,使其如野火般在全美各大BBS上蔓延開來,用戶以幾何級(jí)數(shù)增長,遭受毀滅性打擊的SEA公司半年內(nèi)就無聲無息。這段故事最后演變?yōu)橛米杂绍浖驍∩虡I(yè)軟件的傳奇,菲利普·卡茲更是成為充滿幻想的年輕程序員心中十步殺一人的偶像。

          然而事情如果僅僅到此為止,那么這也不過是菲利普·卡茲為私人恩怨而快意恩仇的行為,未必能得到后人的真正尊重。不過他做出了一個(gè)讓所有計(jì)算機(jī)用戶都收益無窮的舉動(dòng),那就是宣布開放ZIP格式,任何人都可以自由使用ZIP編碼算法而不需要繳納任何專利費(fèi)用。這個(gè)決定最終改變了壓縮的世界,使得通用數(shù)據(jù)無損壓縮領(lǐng)域再無法出現(xiàn)壟斷的商業(yè)巨鱷,真正意義上幫助了每個(gè)需要壓縮的計(jì)算機(jī)用戶。憑借這個(gè)無私的行為,菲利普·卡茲真正成為他想成為的英雄。

          群雄逐鹿的結(jié)局--WinZip加冕王者
          在DOS時(shí)代,ZIP格式和它的工具PKZIP并沒有成為壓縮世界的王者。雖然ZIP格式源于其開放性而在BBS上逐漸成為主流,不過當(dāng)時(shí)的BBS網(wǎng)絡(luò)環(huán)境仍然只屬于少數(shù)PC玩家。由于CPU運(yùn)行速度與存儲(chǔ)硬件容量的有限,當(dāng)時(shí)個(gè)人計(jì)算機(jī)總是歡迎錙銖必計(jì)的壓縮軟件,因此程序員們也在不懈追求,開發(fā)出更快更好的編碼算法與壓縮工具。1988年到1995年堪稱壓縮世界的黃金時(shí)代,壓縮世界處于群雄逐鹿的亂戰(zhàn)之中,與PKZIP具有相同影響力的還有LHA(壓縮格式為LZH、LHA)和ARJ(壓縮格式為ARJ)。

          歷史遺留格式:LHA
          1988年除PKZIP外,另一個(gè)重要的壓縮工具LHA也誕生了。它的原始名字叫LHArc,由Haruyasu Yoshizaki所開發(fā),同樣是免費(fèi)軟件。較之PKZIP,LHA的優(yōu)勢(shì)在于壓縮率更高,而且跨平臺(tái)性支持更好,因此成為日本最流行的壓縮軟件。不過在西方它也同樣很受歡迎,大名鼎鼎的id Software就是使用LHA來壓縮他們?cè)缙谟螒虻陌惭b文件,也就是DOOM。即使現(xiàn)在LHA已經(jīng)不再流行,但LHA壓縮格式文件仍有不少應(yīng)用,例如我們經(jīng)常升級(jí)的BIOS文件,AWARD公司使用的就是LHA壓縮,而在日本的網(wǎng)站更是隨處可見。

          歷史遺留格式:ARJ
          1990年,Robert K.Jung開發(fā)出一個(gè)新的壓縮工具,并將其命名為ARJ(Archiver Robert Jung)。這是一個(gè)模仿PKZIP之作,與PKZIP極為相似。不過ARJ確實(shí)非常優(yōu)秀,不僅壓縮率高人一等,在功能應(yīng)用上也明顯勝出同類產(chǎn)品一籌。例如它是第一個(gè)實(shí)現(xiàn)分卷壓縮的壓縮工具,這對(duì)于當(dāng)時(shí)以軟盤為主要存儲(chǔ)方式的PC來說簡直就是雪中送炭。ARJ很快憑借著自己的實(shí)力占據(jù)一席之地,并逐漸成為DOS下最受歡迎的壓縮工具之一。

          如果計(jì)算機(jī)的操作系統(tǒng)一直是DOS,那么壓縮工具有可能會(huì)三分天下。然而在1995年,改變個(gè)人計(jì)算機(jī)世界的事情出現(xiàn)了,那就是Win95的誕生。沒有了DOS系統(tǒng)的艱澀難懂后,人們發(fā)現(xiàn)個(gè)人計(jì)算機(jī)并不神秘,它的使用原來可以這么簡單。隨即PC真正開始普及,普通人成為了主要用戶。然而另一方面,大多數(shù)從DOS年代過來的程序員高傲地拒絕著Win95,從他們的級(jí)數(shù)眼光來看,這個(gè)動(dòng)輒崩潰的平臺(tái)由于底層過于封鎖,完全限制了編程的發(fā)揮,執(zhí)行效率與DOS相比也是一塌糊涂。因此Win95發(fā)布的最初幾年里,并沒有出現(xiàn)太多應(yīng)用軟件,程序員們?nèi)匀辉趫?jiān)持為DOS編寫軟件。此時(shí)隨著計(jì)算機(jī)硬件的發(fā)展,圖形網(wǎng)站逐漸代替了文字BBS,普通人不用怎么學(xué)習(xí)也能輕松上網(wǎng),大量用戶涌入了這個(gè)虛擬世界。矛盾自然而然就產(chǎn)生了:大量沒有受過訓(xùn)練的Win95用戶拿著DOS下的壓縮工具不知所措,而程序員們卻沒有開發(fā)Windows平臺(tái)壓縮工具的想法。于是一個(gè)原來默默無名壓縮軟件開始聲名鵲起,它就是WinZip。

          早在1991年微軟發(fā)布Win3.0不久,共享軟件WinZip1.0就誕生了。雖然它號(hào)稱是Windows ZIP,但實(shí)際上跟Win3.0的本質(zhì)一樣,仍是個(gè)外殼程序,它不過是在調(diào)用DOS下的工具軟件而已。很難了解當(dāng)時(shí)WinZip軟件作者的想法,也許只能歸于遠(yuǎn)見卓識(shí),在大多數(shù)程序員都在開發(fā)自己的壓縮編碼算法的時(shí)候,他選擇了使用免費(fèi)的ZIP編碼算法然后做了一個(gè)壓縮工具外殼。當(dāng)時(shí)DOS才不過發(fā)展到5.0版本,放棄一個(gè)主要的平臺(tái)而去做一個(gè)附屬平臺(tái)的壓縮工具,最主要還是沒有自己的編碼算法,其前途顯然是黯淡的。然而到了1995年,這種做法得到了回報(bào),在Win95發(fā)布后它馬上就推出了相應(yīng)版本,是當(dāng)時(shí)為數(shù)不多的Windows應(yīng)用工具。實(shí)質(zhì)上此時(shí)WinZip仍然是個(gè)外殼工具,它還是通過調(diào)用DOS程序來解決問題,不過由于前幾年積累下的Windows開發(fā)經(jīng)驗(yàn),使其圖形界面在當(dāng)時(shí)做得近乎完美。甚至后來微軟在業(yè)界的開發(fā)會(huì)上宣稱,Windows應(yīng)用程序應(yīng)該怎么做--很簡單,像WinZip那樣就行。用戶發(fā)現(xiàn)WinZip界面是如此精美,操作時(shí)如此的親切友好,完全不用去記什么命令參數(shù),只需要鼠標(biāo)點(diǎn)幾下即可,神秘的壓縮原來如此簡單,更有趣的是它居然沒有一個(gè)競爭者,此時(shí)的同行還不屑與其競爭。夸張的說,WinZip只用了眨眼的功夫就占據(jù)了所有的PC,等到其他壓縮工具醒悟過來紛紛開發(fā)Windows版本或Windows外殼時(shí),由于缺乏開發(fā)經(jīng)驗(yàn)已經(jīng)遠(yuǎn)遠(yuǎn)落后。等到WinZip推出其真正的Windows應(yīng)用程序6.x版本時(shí),已塵埃落定,沒有自己編碼算法的WinZip加冕壓縮工具的王者。以后的大多數(shù)用戶都是通過WinZip認(rèn)識(shí)到ZIP格式,以至于不了解歷史的用戶甚至以為ZIP就等于winZip,是WinZip的成功導(dǎo)致了ZIP格式的流行,事實(shí)上恰好相反。

          它來自于江湖--RAR離奇崛起
          不妨先來思考一個(gè)問題,為什么輿論不指責(zé)WinZip9.0不支持WinACE的ACE格式,不指責(zé)它不支持WinIMP的IMP格式 ......唯獨(dú)不支持WinRAR的RAR格式就橫加指責(zé)呢?答案只能是WinZip不得不支持RAR格式。為什么不得不支持RAR格式呢?答案只能是RAR格式已經(jīng)成為主流,不支持意味著消亡。這真是一個(gè)有趣的推論,2002年時(shí)中國的IT媒體還將WinRAR歸為非主流壓縮軟件,而不到兩年的時(shí)間RAR格式就變成了主流格式,簡直就是個(gè)奇跡!然而這真的是事實(shí)嗎?

          我們知道ZIP格式成為最主流的原因并不是因?yàn)閃inZip的出現(xiàn),而是因?yàn)閆IP格式的開放性。ZIP與WinZip之間不過是機(jī)緣聚會(huì),即使沒有WinZip也必將另外出現(xiàn)類似的"xxZIP"共享軟件。ZIP格式的開放從根本上避免了數(shù)據(jù)壓縮世界形成壟斷,任何一個(gè)消費(fèi)者總會(huì)優(yōu)先選擇免費(fèi)自由格式的壓縮工具,更何況這個(gè)免費(fèi)格式是如此優(yōu)秀,這使得WinZip之后的任何壓縮工具只能先支持ZIP格式站住腳,然后再去推廣它不開放編碼算法的自有壓縮格式。因此最后的結(jié)論是不開放的商業(yè)壓縮格式不可能取代免費(fèi)ZIP格式成為主流,而RAR同ACE、IMP等一樣都是不開放的格式,它也不可能成為主流。這個(gè)結(jié)論顯然會(huì)刺激某些人的神經(jīng),一定有人會(huì)指出事實(shí)勝于雄辯,讓筆者上網(wǎng)去看看到處的RAR壓縮文件。筆者并不否認(rèn)這是某種事實(shí),不過仍然會(huì)堅(jiān)持RAR不是主流。

          在任何一個(gè)國外知名的下載王者,如download.com等,都不可能找到RAR壓縮文件,或者去國外任何一家知名商業(yè)網(wǎng)站,其下載資源提供的也只有ZIP壓縮包。是的,甚至再國外比較規(guī)范的個(gè)人網(wǎng)站上,都只提供ZIP打包的文件下載,而不會(huì)有其他類型的壓縮文件。國內(nèi)情況會(huì)不一樣嗎?那么去新浪、搜狐、驅(qū)動(dòng)之家這些大的門戶網(wǎng)站或正規(guī)的商業(yè)網(wǎng)站搜索,同樣全部是提供ZIP壓縮文件的下載,卻根本沒有RAR文件。并不是這些網(wǎng)站刻意偏愛ZIP,根本原因還是在于免費(fèi)。發(fā)布ZIP壓縮文件并不用繳納任何費(fèi)用,而如果發(fā)布其他商業(yè)壓縮格式文件,網(wǎng)站就要向其格式擁有者繳納專利費(fèi)用,這種企業(yè)所需繳納的費(fèi)用不是個(gè)人注冊(cè)費(fèi)用可以相提并論的。由此帶來的疑惑是,在中國確實(shí)有許多網(wǎng)站只提供RAR壓縮文件的下載,那么他們都甘心交錢替WinRAR宣傳嗎?同樣時(shí)不開放算法的商業(yè)格式,他們?yōu)槭裁床贿x擇壓縮率更高功能更加全面的ACE、IMP等格式呢?

          首先筆者不排除這種情況,即可能有特別熱愛RAR格式,依法繳費(fèi)然后再幫著推廣的網(wǎng)站,不過可以肯定即使有也為數(shù)不多。大多數(shù)這樣的網(wǎng)站非法發(fā)布RAR格式文件,區(qū)別僅僅在于自己知道或不知道,不過WinRAR公司難道就坐視不管嗎?其實(shí)道理很明顯,沒有比推廣壓縮格式更容易占據(jù)壓縮工具市場份額的手段了。2002年WinRAR尚未有中國區(qū)代理,不過積極開拓海外市場的WinRAR已經(jīng)意識(shí)到,許多中國網(wǎng)站上也流行著RAR壓縮文件,于是一時(shí)間突然有許多網(wǎng)站聲明,下載資源將由RAR壓縮包全部改用ZIP包發(fā)布,但在WinRAR中國區(qū)代理上任后,短短的幾個(gè)月這些網(wǎng)站又都恢復(fù)發(fā)布RAR壓縮文件,而且使用RAR格式發(fā)布資源的網(wǎng)站日益增多。事實(shí)已經(jīng)清楚,非正規(guī)網(wǎng)站提供下載資源的確實(shí)都是RAR壓縮文件,不過為什么它們都選擇RAR而不是其他格式,答案說出來熟悉的朋友馬上就會(huì)明白--ODAY。

          2001到2002年中國的寬帶網(wǎng)建設(shè)一躍成為世界前列,寬帶網(wǎng)的發(fā)展使得資源的獲取變得極其簡單。幾乎國內(nèi)有名的資源站點(diǎn)和論壇都出現(xiàn)在此期間,它們無一例外提供的都是RAR格式資源。那么它們的資源又來自哪里?基本都來自于ODAY,所有宣稱RAR格式占據(jù)網(wǎng)絡(luò)主流的人都或刻意或無意地回避了這個(gè)事實(shí)。ODAY是個(gè)完全無影無形的破解組織,但他們發(fā)布的資源都有同一個(gè)特點(diǎn),就是統(tǒng)一使用RAR格式打包,如此一來發(fā)布這些資源的網(wǎng)站要提供ZIP包下載則必須先解開RAR包,然后再將資源重新壓縮為ZIP包,最終選擇當(dāng)然是直接提供RAR壓縮包下載了,這就是RAR格式開始流行的根本原因。于是奇怪的事情出現(xiàn)了:免費(fèi)開放的壓縮格式得到所有正規(guī)商業(yè)公司的支持,而收費(fèi)非開放的壓縮格式卻崛起于自有破解的地下組織。一個(gè)微妙的形勢(shì)擺在WinRAR面前,它再流行也始終不會(huì)去控告違法發(fā)布者,那其實(shí)是它生存的根源。一個(gè)尖銳的問題也擺在用戶面前,在合法的前提下你會(huì)選擇哪種壓縮格式?其實(shí)是根本就沒有選擇。

          因此不能否認(rèn)RAR壓縮文件在網(wǎng)絡(luò)上確實(shí)到處可見,但既然它來自于江湖,就注定無法真正成為主流壓縮格式。

          ZIP的真正危機(jī)--AES加密
          WinZip9.0究竟帶來了什么?根本的變化其實(shí)只有一個(gè),那就是支持AES 128位和256位高級(jí)加密,事實(shí)上這也是WinZip9.0遲到兩年的主要原因,而這個(gè)特性也許會(huì)成為WinZip所面臨的最大危機(jī)。

          上文已經(jīng)交待,WinZip并沒有自己的編碼算法,ZIP格式是屬于PKZIP的(實(shí)屬PKWare公司)。一直以來WinZip技術(shù)上的發(fā)展都緊跟著PKWare亦步亦趨,從而就沒有也不可能主動(dòng)去修改ZIP的編碼算法。 WinZip9.0中新加入的Enhanced Deflate算法實(shí)際仍屬于PKWare公司,并且是開放免費(fèi)的。不過使用WinZip9.0壓縮的ZIP文件,其他支持ZIP格式的壓縮工具都能正確解壓嗎?答案讓人遺憾,如果你使用了WinZip9.0的AES加密,那么你只能使用WinZip9.0才能解壓。

          與成熟的商業(yè)壓縮格式相比,ZIP格式有一個(gè)致命缺陷就是缺乏加解密算法,僅憑其可憐的口令密碼保護(hù)功能根本無法保障文件的安全。為ZIP格式增加加密算法成為必然之路,然而此時(shí)PKWare與WinZip的矛盾終于凸現(xiàn)。2002年,PKWare首先開發(fā)了基于證書的安全措施和256位AES加密算法的PKZIP5.0,但隨后2003年出現(xiàn)的WinZip9 Beta中采用的256位AES加密算法(但沒有證書)卻證明無法與之兼容。WinZip9向媒體說明由于PKWare向WinZip保留了算法的技術(shù)細(xì)節(jié)而不能與之兼容,并且表示他們一直期待能夠完全兼容,但PKWare并不給予合作而最終導(dǎo)致兩者不兼容。PKWare首席技術(shù)官Jim Peterson則辯稱,基于證書的加密技術(shù)目前還正在研制,之所以沒有公布是因?yàn)檫€要在其中增加很多功能。WinZip對(duì)上述解釋表示懷疑,因?yàn)槌思用芗?xì)節(jié)沒有公布,連證書的細(xì)節(jié)也不得而知,而事實(shí)上在PKZIP5.0 for Windows中這項(xiàng)技術(shù)已經(jīng)使用了一年,PKWare無非是要吃獨(dú)食,他們違背了自己宣稱的ZIP標(biāo)準(zhǔn)開放性。不管事情的真相到底是什么,WinZip為此付出了兩年的時(shí)間,最終結(jié)局仍是兩者分道揚(yáng)鑣,各自開發(fā)自己的加密算法,而ZIP格式從誕生以來也首次走到了十字路口。

          因此AES加密將是一柄雙刃劍,也許能為WinZip打開一片商業(yè)的天空,也許帶來潛伏的危機(jī)。這取決于最終應(yīng)用環(huán)境是支持它還是PKWare,抑或是這紛爭中崛起的第三者,這是壓縮王者的最大危機(jī)。

          壓縮工具之選--合適才是最好的
          了解了足夠的壓縮世界的歷史,再回到壓縮工具本身來吧。現(xiàn)在的事實(shí)是網(wǎng)絡(luò)上確實(shí)存在許多RAR壓縮文件,當(dāng)然使用WinRAR去解壓是第一選擇,不過是否因?yàn)閃inRAR也支持ZIP格式就可完全拋棄WinZip?筆者的答案是WinRAR不能完全替代WinZip。即使拋開歷史完全從技術(shù)上分析,RAR實(shí)際上仍處于劣勢(shì)。

          首先來看兩者的性能,壓縮工具的性能決定于它們的算法。事實(shí)上WinZip和WinRAR使用的都是LZ77算法的變體,因此兩者基本上不可能出現(xiàn)根本性的性能差距,它們的比較就是看誰在壓縮率和工作效率之間取得更佳的平衡性。眾所周知RAR的壓縮率要略高于ZIP,但這是以犧牲工作效率換取的,這種犧牲值不值得呢?筆者隨意做了一個(gè)測試,由于太小的文件根本無法察覺,因此測試對(duì)象是一個(gè)615.6MB的ISO文件,機(jī)器配置位P4 1.6A,512MB RAM。結(jié)果WinRAR3.30在一般壓縮下,使用了30分20秒將文件壓縮為607.6MB的RAR文件,而WinZip9.0在一般壓縮下,使用了2分40秒將文件壓縮為609.2MB的ZIP文件。解壓的結(jié)果與壓縮類似,千分之二的壓縮率差距卻使用了數(shù)十倍的時(shí)間,顯然ZIP算法的壓縮率與工作效率之間的平衡性處理得更好,也就是說性能更優(yōu)。其實(shí)RAR算法在壓縮率與工作效率之間的處理也是非常聰明明的,其壓縮小文件時(shí)損失不易察覺的幾秒鐘換來總是比ZIP略高一點(diǎn)的壓縮率,這給用戶留下了極好的印象。

          雖然我們證明了ZIP算法的性能更優(yōu),不過WinZip不能支持RAR,而WinRAR卻能支持ZIP,為什么不保留兼容性更佳的WinRAR?既然RAR是非開放的格式,別人沒有它的算法,那么支持解壓RAR是如何做到的呢?任何支持RAR格式的壓縮工具都帶有一個(gè)UNRAR.dll文件,這個(gè)文件是WinRAR提供的解壓庫,也就是說其實(shí)仍然是WinRAR自己在解壓。像這樣通過外部調(diào)用來支持的格式在WinZip中只有3種,就是上文提到過的ARC、ARJ、LHA,全部是歷史遺留。但WinZip顯然不會(huì)這樣去支持RAR格式,在它眼里RAR和ACE、IMP等非公開格式并沒有根本上的區(qū)別。所以并不是WinZip高傲自大,也不是它固步自封,除非RAR開放算法,否則WinZip是不會(huì)調(diào)用支持RAR的,替別人推廣壓縮格式不如將命運(yùn)掌握在自己手上。再回到兼容性上,實(shí)際上查看一下就會(huì)發(fā)現(xiàn),WinZip支持超過22種格式,遠(yuǎn)超過WinRAR支持的12種,就算勉強(qiáng)算上WinZip不支持RAR格式,也只能說兩者在這方面不分上下。

          由于ZIP格式的開放性所帶來的優(yōu)勢(shì)也必須考慮。例如微軟操作系統(tǒng)從WinMe開始內(nèi)置支持ZIP格式,ZIP文件被當(dāng)作一個(gè)文件夾操作,別的壓縮格式就必須安裝壓縮工具解壓。又如GBA游戲機(jī)的模擬器VBA內(nèi)置支持ZIP,所以壓縮為ZIP格式的ROM文件它可以直接讀取,別的壓縮格式就必須解壓回ROM文件。越來越多應(yīng)用程序都開始內(nèi)置支持ZIP,此時(shí)的ZIP壓縮文件相當(dāng)于透明的源文件。由于ZIP格式的開放性,ZIP文件在網(wǎng)絡(luò)傳輸上也具有一些優(yōu)勢(shì),如某些內(nèi)置ZIP算法的下載工具可分析要下載的ZIP包,可以只下載包內(nèi)某些文件,這都要?dú)w結(jié)于ZIP格式的開放性。

          以上所有一切都只為說明一件事:ZIP格式仍然是適合個(gè)人使用的最佳壓縮格式,而RAR是適應(yīng)現(xiàn)實(shí)環(huán)境的第二選擇壓縮格式。因此壓縮工作也許會(huì)演變?yōu)檫@樣的形勢(shì):更多的壓縮是ZIP文件,而經(jīng)常解壓的是RAR文件。盡管WinRAR也支持ZIP的制作,但程度優(yōu)先,例如其不支持64位擴(kuò)展,單個(gè)文件都4GB的限制,不支持增強(qiáng)真空算法的壓縮,不支持ZIP文件的壓縮分卷......制作ZIP文件的最好工具依然是WinZip,這就是為什么WinRAR不能完全替代WinZip。是的,壓縮工具的選擇應(yīng)該這樣,為了適應(yīng)環(huán)境安裝使用WinRAR,為了高效壓縮安裝使用WinZip。個(gè)人建議是,如果壓縮工具對(duì)你而言主要是解壓,極少壓縮的話,那么WinRAR確實(shí)已夠用了:如果要嘗試壓縮,那么就不要放棄WinZip。

          盡管筆者一再表明WinZip不可替代,但實(shí)際上對(duì)WinRAR也充滿好感。這個(gè)緊隨著WinZip的壓縮工具確實(shí)是所有模仿者中做得最為出色的,針對(duì)于WinZip的弱點(diǎn)作出的技術(shù)細(xì)節(jié)修改也極為有效。如WinZip必須壓縮后分卷而WinRAR可以直接分卷壓縮,又如WinZip無法管理壓縮包內(nèi)的子目錄而WinRAR可以直接顯示目錄層次......所以即使RAR格式?jīng)]有那么流行,WinRAR也仍然是最值得推薦安裝的壓縮工具。文章的最終目的并不是為WinZip與WinRAR打擂臺(tái),只是將一些事實(shí)的本來面目呈現(xiàn)給人們,而將其后的事情交給他們自己去判斷。這本應(yīng)該是大多數(shù)媒體應(yīng)該做的事情,講述客觀的事實(shí)而不是引領(lǐng)讀者的情緒,然而國內(nèi)媒體的浮躁卻再次讓人失望。

          后記
          2000年4月14日,年僅37歲的菲利普·卡茲被人發(fā)現(xiàn)倒斃在美國威斯康星州密爾沃基的一家汽車旅館里,據(jù)說死因是慢性酒精中毒引起的并發(fā)癥。被人發(fā)現(xiàn)時(shí)卡茲的手中仍握著一個(gè)烈性酒的酒瓶,在同一個(gè)房間里還發(fā)現(xiàn)了另外5個(gè)空酒瓶。這位天才程序員從未在ZIP身上得到半點(diǎn)好處,堅(jiān)持信念的結(jié)果是潦倒的生活。他為世界貢獻(xiàn)了一個(gè)偉大的免費(fèi)軟件,更為重要的是他締造了一種大眾化的壓縮格式,然而卻過早的離開了這個(gè)世界。僅僅兩年后,PKWare和WinZip為了商業(yè)利益開始分道揚(yáng)鑣。用ULTRAEDIT打開任意一個(gè)ZIP文件,都可以看到嵌有菲利普·卡茲姓名字頭縮寫字母PK,每個(gè)ZIP文件都將永遠(yuǎn)記載著菲利普·卡茲,因此菲利普·卡茲和他的ZIP壓縮格式也必將得到永生。不知為什么對(duì)于菲利普·卡茲的記憶,在筆者腦海中浮現(xiàn)出的是華萊士的那聲吶喊:"Free!"

          謹(jǐn)以此文向那些無私的天才程序員們致敬。


          評(píng)論

          # re: 壓縮大戰(zhàn)真相  回復(fù)  更多評(píng)論   

          2006-12-05 09:59 by 心內(nèi)求法
          好文!

          # re: 壓縮大戰(zhàn)真相  回復(fù)  更多評(píng)論   

          2007-10-16 12:09 by 衛(wèi)斯理
          太好了!!!

          # re: 壓縮大戰(zhàn)真相  回復(fù)  更多評(píng)論   

          2007-11-13 16:31 by rat
          好文,
          嘆!
          贊!

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 时尚| 宁乡县| 湘潭县| 合水县| 江陵县| 百色市| 襄樊市| 巩留县| 叶城县| 崇明县| 尚志市| 枞阳县| 兴隆县| 陈巴尔虎旗| 普兰店市| 南昌市| 英山县| 金山区| 东乡| 峨眉山市| 巫山县| 兴国县| 出国| 东兴市| 繁昌县| 新源县| 多伦县| 綦江县| 扎兰屯市| 六枝特区| 修武县| 雷波县| 马公市| 静宁县| 涞源县| 彩票| 承德县| 木里| 富蕴县| 昂仁县| 琼海市|