概述Plan-9是一個(gè)很棒的、很先進(jìn)的,而且完全是全新實(shí)現(xiàn)的Unix系統(tǒng),它的目的就是要最終解決Unix最初的諾言:一切皆為文件。你聽(tīng)說(shuō)過(guò)這套系統(tǒng)嗎?沒(méi)有?那好,下面就是為什么。 我十分確信你不知道Plan-9是什么東西,并且很有可能你還是第一次聽(tīng)說(shuō)這個(gè)名字。 Plan-9是一款神奇的新版Unix,幾乎是由70年代當(dāng)初開(kāi)發(fā)Unix系統(tǒng)的同一個(gè)團(tuán)隊(duì)開(kāi)發(fā)的。它的確是一款非??岬牟僮飨到y(tǒng)。它跟Unix非常相似,但它不是Unix,它糾正了Unix系統(tǒng)里很多不一致的、古怪的、至今仍然存在的特性。 Unix在當(dāng)初立項(xiàng)時(shí)有個(gè)這樣的許諾:系統(tǒng)里任何的東西都是‘文件’——根據(jù)某些文件的定義。例如,sockets,也許稱(chēng)作網(wǎng)絡(luò)連接更合適,它們就不是文件,進(jìn)程也不是文件。 在Plan-9中,所有的這些問(wèn)題都解決了!先進(jìn)的9P虛擬文件系統(tǒng)協(xié)議最終讓所有東西都成為了文件。目錄變成了“命名空間”,資源被映射成了文件。多么神奇!現(xiàn)在,你可以通過(guò)對(duì)/proc目錄(現(xiàn)在應(yīng)該成其為一個(gè)命名空間)里的一個(gè)文件使用“cat”命令來(lái)查看進(jìn)程的情況。同樣,打開(kāi)一個(gè)網(wǎng)絡(luò)連接的方式變成了打開(kāi)/net/tcp目錄里的一個(gè)文件,這就是它。”iotcl”系統(tǒng)調(diào)用在這個(gè)系統(tǒng)里完全被根除了,因?yàn)榛诓僮飨到y(tǒng)上的現(xiàn)代文件形式中的這種怪胎已經(jīng)不再需要了。 那么,為什么你從來(lái)沒(méi)有聽(tīng)說(shuō)過(guò)這樣一款神奇的操作系統(tǒng)呢?你從來(lái)沒(méi)有聽(tīng)說(shuō)過(guò)它的原因是,它并不是一款成功的操作系統(tǒng)。這怎么可能呢?是這樣的,是因?yàn)镻lan-9實(shí)際上沒(méi)有解決任何問(wèn)題。在Unix世界里,從來(lái)沒(méi)有人抱怨說(shuō)Unix沒(méi)有兌現(xiàn)當(dāng)初關(guān)于文件抽象的諾言。 在隨后的日子里,Plan-9里的/proc文件系統(tǒng)概念被人移植到到了Solaris等很多其他商業(yè)版Unix系統(tǒng)里(Linux也采用了它)。 Plan-9里另外一個(gè)非常著名的首創(chuàng)——UTF-8——被迅速的被眾多其它操作系統(tǒng)采用,不僅僅是Unix家族。在所有的操作系統(tǒng)里,即使存在一些由于各種原因沒(méi)有采用UTF-8的,它們也開(kāi)發(fā)出來(lái)將UTF-8和本地編碼轉(zhuǎn)換的程序庫(kù)。 Plan-9的對(duì)于網(wǎng)絡(luò)通信的特殊的處理方式需要在這里特別的說(shuō)明一下。雖然用基于命名空間/文件系統(tǒng)的方式來(lái)代替專(zhuān)用API來(lái)處理網(wǎng)絡(luò)操作,聽(tīng)起來(lái)很吸引人,但是整個(gè)Unix世界,不僅所有人都已經(jīng)接受了使用伯克利Socket API做為標(biāo)準(zhǔn)方式來(lái)進(jìn)行網(wǎng)絡(luò)編程,甚至Windows平臺(tái)也實(shí)現(xiàn)了幾乎相同的API里簡(jiǎn)化各種網(wǎng)絡(luò)應(yīng)用向Windows上移植——雖然存在一些小問(wèn)題。 更重要的是,Plan-9發(fā)明的這種與眾不同的網(wǎng)絡(luò)編程編程方式在誕生之日就注定了毫無(wú)用處。因?yàn)樵诋?dāng)時(shí),大部分做網(wǎng)絡(luò)編程的人都已經(jīng)轉(zhuǎn)向了更高的網(wǎng)絡(luò)抽象層。RPC和Corba已經(jīng)誕生,所有的需要跟遠(yuǎn)程服務(wù)器通信的應(yīng)用全都轉(zhuǎn)向了它們。程序員為了跟遠(yuǎn)程服務(wù)通信時(shí)需要打開(kāi)sockets的機(jī)會(huì)越來(lái)越少,所有的他們都已經(jīng)習(xí)慣了使用Berkeley API。(旁注:曾經(jīng)有一個(gè)POSIX模擬層,叫做APE“ANSI/POSIX Environment”,試圖將Plan-9上的某些功能映射到POSIX對(duì)應(yīng)的功能上。這個(gè)模擬層一直都沒(méi)實(shí)現(xiàn),因?yàn)橐恍?yīng)用——例如X11——的遷移過(guò)于復(fù)雜,不可能完成?!熬S持它正確運(yùn)行的工作量太過(guò)巨大”——維基百科。) Plan-9的一個(gè)最主要的問(wèn)題出在AT&T和Unix幕后的這群人身上,盡管他們都是才華橫溢的科學(xué)家和程序員,但他們不懂得如何去開(kāi)發(fā)商業(yè)軟件,而AT&T也從來(lái)沒(méi)打算進(jìn)入軟件業(yè)。這些,我承認(rèn)聽(tīng)起來(lái)有些大不敬,但事實(shí)就是這樣。他們使用軟件,他們喜歡開(kāi)發(fā)內(nèi)部軟件來(lái)運(yùn)行他們的高端網(wǎng)絡(luò)設(shè)備,但是他們卻從來(lái)不去開(kāi)發(fā)要賣(mài)給別人的軟件,而且跟Sun,IBM,微軟等商業(yè)公司不一樣,這從來(lái)不是他們的資金的主要來(lái)源。這就意味著他們不需要有外部世界需要什么樣的軟件的意識(shí)。舉個(gè)例子,Sun公司就需要這樣的意識(shí),所以他們開(kāi)發(fā)出了RPC。他們認(rèn)識(shí)到人們?cè)谶M(jìn)行網(wǎng)絡(luò)編程時(shí)很痛苦,他們看到了創(chuàng)建一個(gè)網(wǎng)絡(luò)抽象層的商業(yè)機(jī)會(huì):“嗨,大伙們,SunOS有一個(gè)很酷的東西,讓我們能夠不直接跟sockets打交道就可以開(kāi)發(fā)出網(wǎng)絡(luò)應(yīng)用!你絕對(duì)應(yīng)該使用SunOS”。 還有,在Plan-9中,很多“好的老的東西”被刪除了,大量的跟其它Unix不兼容的東西被加入了系統(tǒng)。這幾乎打消了眾多公司試圖將他們的應(yīng)用遷移到Plan-9的念頭。如果你不知道這樣一個(gè)新系統(tǒng)是否能夠獲得成功,那為什么要耗費(fèi)了大量的工作把自己的應(yīng)用遷移到這個(gè)新平臺(tái)上呢?這就是典型的雞生蛋蛋生雞問(wèn)題:一個(gè)操作系統(tǒng)的價(jià)值就在于上面有大量應(yīng)用可運(yùn)行,無(wú)它。如果一個(gè)系統(tǒng)很新,你要做的是必須發(fā)展一個(gè)能夠支持各種應(yīng)用的生態(tài)系統(tǒng),通過(guò)它們讓這個(gè)系統(tǒng)變得有價(jià)值。只有兩條路能做到這樣。第一個(gè)就是讓這個(gè)系統(tǒng)跟目前現(xiàn)存的系統(tǒng)保持最大的兼容,也就是Unix, POSIX 和 Motif 這些系統(tǒng)。第二個(gè)就是創(chuàng)建自己的生態(tài)系統(tǒng),以此來(lái)提升新系統(tǒng)的價(jià)值,微軟Windows和Office辦公系統(tǒng)軟件就是典型例子。 我們應(yīng)該從Plan-9的歷史教訓(xùn)中總結(jié)出一些經(jīng)驗(yàn)嗎?當(dāng)然,我們至少可以獲得下面這些:
這些看起來(lái)都是一些非常高層的東西,并不是特別跟程序員的日常開(kāi)發(fā)相關(guān)??雌饋?lái)是這樣,但事實(shí)遠(yuǎn)非如此?,F(xiàn)如今,你可以很容易的開(kāi)創(chuàng)自己的事業(yè),開(kāi)始向用戶提供某種的服務(wù)。然而,你的服務(wù)是一個(gè)有價(jià)值的產(chǎn)品?還是變成了另外一個(gè)Plan-9傳奇?這并不是很容易判斷的事。例如,你的打算開(kāi)發(fā)一個(gè)報(bào)表系統(tǒng),來(lái)展現(xiàn)監(jiān)控?cái)?shù)據(jù)或其它任何可視的狀態(tài),如果你沒(méi)有提供用它將這些報(bào)表導(dǎo)入到Excel的功能,那你在寫(xiě)第一行代碼前就輸了。如果你打算開(kāi)發(fā)一個(gè)新的Web社交應(yīng)用,而你沒(méi)有提供使用Fackbook、Twitter或LinkedIn登錄的方式,那你在搭建WEB服務(wù)器前就輸了。如果你web服務(wù)中信息的導(dǎo)出方式?jīng)]有采用RSS或ATOM,而是采用了一種全新的格式,猜會(huì)怎么樣?你在吸引到第一個(gè)用戶前就輸了。但是,比著一切更重要的是:你的產(chǎn)品真正的解決了一個(gè)現(xiàn)實(shí)存在的問(wèn)題嗎? [英文原文:The Plan-9 Effect or why you should not fix it if it ain't broken ] 原譯文標(biāo)題:Plan-9效應(yīng):為什么東西不壞就不要去修它 via : http://www.aqee.net/the-plan-9-effect-or-why-you-should-not-fix-it-if-it-aint-broken/ |
聯(lián)系客服