電腦世界的三棵樹

如今電腦已經成普通人家的必備家電了。和其他家電一樣,它的工作原理也並不複雜。實際上,電腦世界的基本組織方式非常有規律,這個看起來漫無邊際的森林王國實際上是由三種不同種類的樹所組成,而電腦這個怪獸以食樹爲生。

第一棵樹:程序<?xml:namespace prefix = o />

電腦是吃“程序”的動物。數量最多的低矮的樹就是叫程序的這種“樹”。其實就是一堆你讓電腦如何幹活的指令。程序程序,“流程和順序”。最初它可不是現在的樹狀,而是象麪條一樣的簡單形狀,只不過這些麪條編好了號碼,按順序一根根送入電腦,直到今天,這種機器的最深處仍舊保持這種原始本性。最初的程序真的象麪條啊,上面打滿小孔的長長紙帶,由程序員託着喂入電腦。後來隨着電腦運行的內容越來越多,邏輯越來越複雜,於是,程序由線狀演變爲樹狀,紙帶變成磁盤。爲了理解這點,我們先了解一下電腦的核心結構。

電腦的“哲學”根源。在電腦還沒發明前,有個叫圖靈的人就這樣描繪了一種邏輯機器:如果一個機器能具備“順序、分支、循環”這三種邏輯控制能力,則它就能實現任意複雜的邏輯判斷,從而響應外面的信息輸入而改變自己狀態,後人稱之爲“圖靈機原理”。(最原始的圖靈機比這更簡單,數據只接收01,邏輯結構只有如果和那麼,這象自然界的單細胞生物)就象中國人愛說“人之初,性本善”一樣,科學家們也愛給他們的發明物找個根源,並在犯迷糊時常回頭唸叨着這句原理。現在的程序員就是用這三種邏輯,才形成了構造“程序”這棵樹的能力。如果說原子的概念使人認識到自身與自然界的統一,那麼,“圖靈機”的概念使人認識到自身的智能與機器智能的統一。

電腦的執行過程。電腦執行一個程序的過程很象動物消化食物的過程。動物消化食物先將亂七八糟的形狀的大塊食物,咀嚼成易於消化的小塊,最後變成小分子的吸收物進入體細胞。源程序就是電腦最初吃的大塊食物,程序員用“編譯器”這個工具把源代碼切碎成更小的碎塊甚至直接成爲小分子的“二進制代碼”,以便放入電腦的胃“內存”或心臟“中央處理器”即CPU,至此,電腦完成了對程序的吸收,可以接受你對它的指派而幹活了。而普通人所用的程序已經被加工成能直接“消化”的形態了,可以象葡萄糖一樣被直接“吸收”而不用編譯。

“程序設計語言”是一種電腦能理解的語言,按複雜程度分爲低級、中級和高級。對於機器來說只懂機器語言,而對於人類來說最容易接受的是那些接近人的語言的“高級語言”,然而這些語言都有一個共同特點即是具有無歧義的“形式語言”,這最先由一個叫喬姆斯基的語言學家所定義,後人稱之爲“喬姆斯基”文法。在幾十年前的反華浪潮中,這位可敬的學者公開表示支持中國人民的正義立場,值得我們懷念。

“編譯器”是比操作系統更基礎的軟件,用它可以生產操作系統。編譯器在程序源代碼中按原先設定好某種語法樹格式,搜索生成一個語義樹,這個樹的結構就表達了程序執行的邏輯。最後,再把這個樹肢解,編號後順序存放爲一條條的機器執行代碼。

電腦指令的DNA結構。電腦裏面的最底層的指令是什麼樣子呢?這和我們下面的日常生活場景一樣:

我到南山書城,買了三本書;

然後去了麥當勞吃了一個漢堡;

之後又去海岸城看了場電影;

最後回家。

基本格式就是語法邏輯中的“主謂賓”。

而實際的執行命令在電腦中的活動過程是這樣地相似:

編號1 對象 動作 數據

這在現在的高級程序設計語言中是最基本的語法格式。

實際上,電腦中每個對象、動作和數據都進行了編號。而本質上,對象與數據是一個樣的,就象“人”與“書”,都有可能充當主語。上面又簡化爲:

編號1 數據

編號2 動作

電腦的結構分類。現實世界中主要存在的兩大類電腦就是按上面劃分:如果數據和動作混在一起編號存放和執行,那就是“馮·諾伊曼”結構,這爲你所見到的大多數大電腦所採用。若把動作即指令與數據分開存放,可輕易實現多個指令同時執行,這就是另一大類—“哈佛”結構,在你所見到的投影儀、交換機等設備的“另類”電腦中大行其道。

電腦中的數據和動作都可以用編碼表示,實際上,電腦中的“複雜動作”被最終分解爲加法以至邏輯操作這種“基本動作”,這些“基本動作”被設計成現成的電路,作爲CPU的一部分被調用。動作和數據最終存儲是“二進制”的,因爲現有的工業技術最方便製造兩個狀態的電路來表示,就象生物界最容易實現四種類型的脫氧核苷酸一樣。但不管對於人是多麼不直觀,但對於機器而言足夠而直觀。

電腦採用二進制也是受中國人傳統學說道家的“八卦”的啓發,這並不是一個傳說。至於陰陽學說,那真是咱們祖先天才的設想和實踐,是人類最早的數字化哲學,只是太超前了,就象愛因斯坦的理論,多年後才被證實。哲學的使命之一就是要超前,因爲人類的所擁有的“證據和事實”這種資源永遠有限,常常需要我們做出有勇氣的設想和創新,才能突破這個資源的侷限。

上面說了這麼多,小結成一句話:程序語言是一種人能理解的樹狀數據,我們通過工具把它分解爲機器能理解的已編號條狀數據。

程序的現狀和趨勢。程序語言是“造樹”的工具,由於現在的程序越來越大,程序語言也越來越厲害。現在江湖上仍活着的有名有姓的語言都有上百種,最基礎、最流行的分別是cJava,還有許多有專長的語言,可視自己的情況而選用。這些流行語言無一不是外國人所創,挺刺激中國人自尊的。

爲了解決語言種類太多所帶來的麻煩,人們發明了一種中間軟件,將語言格式在執行前轉化成一種統一格式,如現在的Java.net兩大派別都是這麼幹的。而爲了解決操作系統種類太多所帶來的麻煩,人們發明了另一種奇妙的基礎軟件,它可以把多個操作系統裝到自己“口袋”中運行。可見,程序世界也存在統一和割據的紛爭。有趣而混亂的是,這兩種軟件目前都稱作“虛擬機”。

近來程序世界發生了件驚天動地的大事,那就是軟件的“免費和開放”,即“開源運動”的興起。開源,開放源代碼的意思,要求所有的程序源代碼能自由交流,免費使用,這才符合軟件的特點。“開源”已逐漸成爲程序世界的新價值觀,和Windows操作系統對着幹的那個免費操作系統Linux創始人經常說,所有收費的軟件都是可恥的,就象收費的性一樣不道德。這場運動由來已久,但到現在終成波瀾壯闊之勢,“開源”已覆蓋軟件世界所有領域,以致於最大的軟件公司微軟哀嘆最大的敵人就是 “開源”。看來共產主義先在軟件世界實現,我們的知識產權體系走到了巨大變革的前沿,形勢迫人去在新的價值觀的壓力下尋找新的經濟模式和法律秩序。

程序“樹”的世界是喧鬧而外露的,而另一種樹則是比它隱蔽而內向多了。

第二棵樹:數據庫

曾有一位老兄說過“萬物皆數據庫”。面對如此絕對的說法,我長久以來尋求它的反例,卻越發覺得它的正確性,宛如萬有引力般地存在於這世界的所有角落。先說說電腦中的數據庫。

模塊化了的數據聚集而成庫。你所能見的文件系統是數據庫;Windows註冊表是數據庫;運行時的內存是數據庫—而這已把電腦中的一切都包括了,我們所用的每一臺電腦其實都是一套數據庫系統。更巧的是這些都是樹狀的數據。數據庫的結構決定了數據的保存,數據庫的保存策略,又決定了它的另外四種操作“增刪改查”。因此,“數據結構”成爲計算機專業學生最重要的一門功課。關於樹狀數據的的處理,有很多方法,甚至有的算法直接用樹作名。如數據傳輸中所用的哈夫曼樹算法,其實是以樹來描述它的壓縮判斷流程,其他行業甚至日常生活中經常會用到類似的處理。而現有的數據庫產品無不以支持B樹的結構存儲爲驕傲。在網絡互聯中,節點設備中的路由表也常用樹狀的數據庫存儲管理。而我們最流行的關係數據庫雖爲二維的表結構,但常用來表示樹狀的數據,當然需要給二維的條狀數據作樹狀化的編碼,這與上一節中程序的編譯過程類似。在目前方興未艾的面向對象編程的軟件技術潮流中,實際上也普遍存在着把初始的二維關係數據轉化爲樹狀的對象數據的過程。

       從上面可見,在數據庫的世界,樹狀結構的血統是多麼興盛。樹是各類基本數據類型複合體、集大成者。更大一些說,從生物界到人類社會,無不是以樹爲組織形態而存在。因此,電腦裏大量使用了樹這種結構的數據就一點不奇怪了。

       值得一提的是與數據庫休慼相關的存儲技術的發展。由於存儲技術的發展,再加上令人生畏的“中國製造”的低成本,硬盤、光盤和內存性能越來越強,價格卻直線下跌,現在都賣成白菜價了。一張DVD刻錄盤才一塊錢,而一個2GU盤不到100塊,真的比紙便宜不知多少倍,看來熱帶雨林有得救了。有人估算,按現在這個進步速度,以後大腦裏的內容都能裝到硬盤裏去。

       在數據庫產品方面的競爭如今只剩下那麼幾家,中國倒是也有自主產品,不象編程語言方面那樣慘,然而仍舊差距巨大。好在如今趕上了好年頭,興起了開源運動,可以直接與最新技術接軌。以我之見,國家應將對開源的支持上升爲國策,將每年幾百萬的大學生的畢業設計都設計成開源方式,一屆屆承接下來,那些以前僅作爲習作的東西必有驚人之作。

       最後一棵大樹:互聯網

       這是迄今爲止我們所能遇到的最偉大的一棵樹,它的葉最茂,枝最多,簡直象極了小鳥天堂中所描述的那棵大榕樹。爲什麼說這個網狀的東西是樹呢?因爲目前的互聯網絡仍不是對等網,網絡中的每個節點的地位是不平等的。全世界的最重要的幾個根目錄服務器都在美國。因此,從側面看它仍是樹。當然,你從高空俯視,它的的確確是一張網。爲了爭得網絡世界的徹底自由,全世界的網民都在罵美國政府獨裁,應把根服務器的控制權交給國際組織,然而這些努力就象呼籲停止伊戰一樣無力。畢竟人家是互聯網的締造者,有着先天的優勢。

       轉機隨着下一代的互聯網逐漸成形而出現。以IPV6爲基礎的下一代高速互聯網不但速度驚人,而且網址更多(有人形容爲可以將地球上的每一塊石頭編個網址放在互聯網上),通訊真正對等,上網者IP象現在的手機號一樣唯一,根本上掃除了安全性痼疾。令人振奮的是,中國在這個決定性的升級中搶位成功,一躍成爲IPV6網絡的領先國家,這一回咱們的後發優勢發揮得淋漓盡致。

       互聯網起源於美國軍方的一個“九頭鳥”式的網絡計劃,目的是戰時能夠使通信網絡在一部分受損的情況下仍能保持聯絡。後來政府決定將其提供給民間使用,就是這一決定開創了人類一個新紀元。這也形成了美國文化中最具征服力的一部分,而反觀那種飛機艦炮硬武力,卻成了美國最失敗的征服工具。

       網絡通信原理。原理性的東西大都很簡單,計算機通信也如此。如果世界發生了核戰,所有的電子通信設備都毀壞了,這時候我們就會看到文明的嘴巴中露出的牙牀,一套最原始最基礎的通信網絡“郵政”系統:你把一封寫有地址的信件交給了郵局,郵局再分發給其它局或者郵遞員,再遞到收信人手中。這一過程中,有幾個要素:發信人,收信人,信件、郵局、投遞。而真正的計算機通信中也離不了這個模式,只是叫法不同。例如,網絡通信中,有發送方和接收方,傳遞的數據信息,叫數據包,並且是化整爲零分批傳遞,所用的打包、拆包和運送包的規定叫“通信協議”。不論現代化的通信如何發達,郵政這種最基礎的通信手段須長久保留。在現代戰爭中,一旦雙方的發生電子戰,所有現代通信手段均不堪用時,最古老的東西則顯示出價值來了,所以,現在部隊又恢復了“號手”這個崗位。例如這次地震救災中,許多情況下都要靠腿去走,靠手去挖。科技受時代所侷限。

       早期的互聯網根本沒想到有今天,因此象網頁這類信息的格式很亂,網絡世界漫天飛舞的頁面,其實內容很難準確定位的,這也造就了象谷歌、百度這樣的英雄。對於搜索引擎,互聯網就是它們的數據庫。現在新的網頁技術已出現,即根據語義定義的頁面。

       空閒之餘,我們常聊,“60”和“70”後一代人的青年娛樂記憶是錄像廳和舞廳;“80”、“90”後一代的娛樂記憶是“迪廳”和“網吧”。隨着3G無線通信的到來,無線互聯網雙將人們從室內拉到世界的每一個角落,又一種全新的生活方式形成在即。這次的美國總統大選,不少國家的網民在調查投票中表示了對奧巴馬的好感,誰能說再過幾十年不會真的通過網絡去選舉一個真實的總統呢。

而對於中國人來說,網絡成爲凝聚民族力量的又一紐帶,它動員民衆的效率越來越強。從某種意義上講,網絡使民衆的整體行動能力驟然增強,使人的羣體特性發生重大變化。對於這新的機變,我們的最高決策層保持着敏感。象不久前廣東省委書記汪洋QQ開聊,到兩天胡錦濤總書記在強國網上與網友交流,正是抓住了這一歷史變化。正象互聯網造就谷歌這樣的新經濟神話,互聯網同時在造就一個政治和人文的新世界,它帶給人的解放,打個比方:

就象深圳突然取消了戶籍;而對於互聯網,則是取消了國籍。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章