第三卷
第六章 太監們
但是Intel的壟斷地位……可能還要早一點。
※※※
「如果連你也搓不出來。」奧爾森說,「那這個計劃只能暫時擱置,估計五六年之內是重新啟動不了了。」
這麼一想,范含有點印象了,原來曾經見過一個文本界面的瀏覽器「Lynx」,差不多就是這個樣子。
如果是正規的顯示器,都應該有保護電路的。一旦監測到不對勁,就會在黑屏正中顯示一行字:「參數超出範圍」。但是范含當年很窮,為了少餓幾頓就買了個便宜貨,這一塊肯定是被廠商省掉了。於是,一次修改之後,連個招呼都沒打,「嗞」的一聲就青煙繚繞了。
既然到如今已經有了比較成熟的C語言環境,像lex和yacc這樣的工具就沒有必要非得在腦子裡面運行了。磨刀不誤砍柴工,第一件事,就是把這兩個程序的代碼敲出來……或者說「移植」……從BROM裏面移植到外面。
「當然是那個『八荒六合唯我獨尊』的新型操作系統了。」奧爾森說,「進度如何,給個准信兒吧。」
怎麼又是它?IBM還真是陰魂不散!
自己一定要抓緊。
「好吧,我先搓搓試試。」范含沒轍,只好先答應下來。
這還是自己專門針對一套模板做出來的網頁寫分析程序,已經痛不欲生。對於專門寫瀏覽器,必須分析所有可能的HTML格式的那些傢伙們,鬱悶到何等地步應該是可以想象的。
這事兒自己怎麼不知道?
「看來你說的『面嚮應用的系統設計』還真有點道理。」奧爾森說。
在互聯網的早期,這種界面是理所當然,只是隨著後來技術的進步,網頁上面有了圖像、表格之類的複雜構件,漸漸的被圖形界面瀏覽器取代了。不過以前看過一本書,裏面有一節,專門講如何設計對Lynx友好的網頁。理由很簡單,在目前這類文本界面瀏覽器還有存在的必要,比如和一個文本朗讀引擎配合起來,使得盲人也可以上網衝浪。
「Unix,怎麼了?」范含也很驚訝。
「那樣的處理器,以及需要實現『虛擬地址擴展』所需要的內存和外存,都不是個小數目。」奧爾森說,「再加上水漲船高的其他配件,成本算下來,一百多萬打不住。」
剩下的就是那台剛送到的「PDP-11」了,既然不用考慮「應該」實現些什麼,那現在就要考慮這台機器「能夠」實現些什麼。
※※※
嚴格地說,真正能夠跨越硬體平台的應用,一個也沒有。
「啊?」奧爾森很驚訝。
不如一上來就直接推出xml吧,然後派生出一個html的子集,這樣以後幹什麼都好說。
「不是用手點的啦!」那mm提醒,然後用方向鍵把游標移動到那行字上面。
可是眼下就是這麼一個尷尬的局面:錢有的是,不知道怎麼花,人也足夠,不知道怎麼用。剛剛動員起來的這個「OS組」沒有任何計劃任務,都在眼巴巴的等著范含的「最高指示」。
頭疼之餘,趕緊去圖書館充電,找幾本操作系統理論方面的書看看。自己對於計算機發展的早期了解得太少了,平時吹牛還可以,一到動真格的時候就不靈了。
「然後呢?」
按照二十一世紀中國男性的平均年齡估算,范含應該可以活著看到那一天。
※※※
意料之中。
※※※
軟體發展已經跟在硬體身後氣喘吁吁了,就沒有什麼挑肥揀瘦的權利。瞄準主流平台,是每個軟體廠商的必然策略。即便如此,還經常忙不過來呢。
世界上第一個實用的超文本系統是美國布朗大學在1967年為研究及教學開發的「超文本編輯系統」(Hypertext Editing System)。之後,布朗大學於1968年又開發了第二個超文本系統「文件檢索編輯系統PRESS」。這兩個早期的系統已經具備了基本的超文本特性:鏈接、跳轉等等,不過用戶界面都是文字式的。
可供自己實現操作系統的機器並不多。IBM System 360算一個,但是這個根本不用考慮,不幹。
不要說現在,就是在二十一世紀,隨便找個操作系統大拿,直截了當地問他:「給一個新的體系寫操作系統,你打算先寫什麼?」多半會張口結舌。不張口結舌的人多半也會反問,「移植現成的Linux代碼不好么?」
正是由於業界看到了Intel最先推出了成功的普及型32位體系,並且今後一直都會保持供貨,隨買隨有,才會放心大胆的瞄準該體系,而很少願意去冒險轉換硬體架構。
「除非什麼?」范含心裏是很想讓VAX提前出世的,畢竟自己的知識結構決定了只有在這樣的32位機型上才能稍稍那麼「有所作為」一點。否則的話,自己比起現如今的程序員,在「古董」計算機上面「摳門」的本事根本排不上號。
地址空間極大擴展?是,一些數據密集型的應用需要64位。
可是……這個xml也不是憑空出現的,而是另一個更大更複雜的SGML的子集。
「啊?」范含大吃一驚,「帶我過去看看?」
范含早就在幻想,如果時光能倒流,自己一定會仔細設計html規範,以便造福無數「後世程序員」。現在真的回來了,自然是打算兌現諾言。
本來C語言就是為了Unix才出世的,其標準有著濃厚的Unix色彩。去年范含和奧爾森討論的時候就特意提到了這一點,率先實現的都是一些平台無關的庫函數,比如字元串操作和數學運算什麼的。所以如今范含才有本錢要求所有開發人員盡量使用這些「偽標準」庫函數。實在沒辦法的情況下可以通融,不過必須要時時刻刻提醒自己,這些通融都是權宜之計,在不久的將來肯定會被重寫。范含可不希望像某些程序那樣,不得不把臨時代碼一直保留到整個軟體被淘汰。
「弄個原型當技術儲備不行么?」范含還不死心,「你看IBM就有許多技術是提前研發的,直到市面上快要出現競爭對手的www•hetubook•com.com時候才拿出來用。」
這種殺手級應用,會把某種硬體體系的用戶牢牢拴住,同時還會吸引其他體系的用戶寧可付出轉換硬體的代價也要立刻部署。這絕對不是范含希望看到的局面。
從一個最終用戶的角度來看,Unix的特點就是一大堆彼此獨立而又能組合起來使用的小工具,這些小工具處於整個系統的最外圍,都是真正用來完成具體任務的代碼。負責調用這些小工具的是「外殼」(Shell),顧名思義,就是包在內核外邊的一層殼,將用戶輸入傳進內核,把內核的輸出反饋給用戶……不負責任地說,一個解釋器罷了。至於最內層的部分,當然就是內核了,這個才是靠范含目前的水平所應付不了的東西。
這個SGML(Standard Generalized Markup Language,標準通用標籤語言),是歷史上的IBM從1969年開始制定的。
「想好了。」范含說,「就叫做『Unix』吧。」
嗯!證實的好!范含想,讓我知道了這個消息,也算沒白來一趟。
「本來我們DEC就是主攻小型機市場,大型機有IBM在,勝算太低。」奧爾森說,「這款VAX機器如果賣這麼貴,售價就已經算是大型機了,當然,其實功能也相當於大型機。」
典型的「雞生蛋,蛋生雞」的問題。
也許現在出32位小型機確實有點兒早,目前的問題是硬體條件跟不上軟體,這和范含那個時代剛好相反。
失策,真是失策。
去了趟圖書館,問題沒解決,反而更鬱悶了。
這不是網頁么?
范含知道,就算是2004年,也沒到迫切需要64位應用的時候。雖然64位處理器早就有了,64位桌面處理器也已經有了,但是微軟的64位WindowsXP還沒正式推出,就算已經出來了,也得需要額外的一兩年時間供各個軟體廠商升級自己的產品。
按照范含的理解,這個「OS組」的最高目標是在VAX上面實現完全的Unix系統,當前目標是在PDP-11上面實現還像回事的操作系統。於是問題變成,只要弄出來的東西比DOS強就算勝利。
到底64位平台有什麼優勢?
以前總覺得採用添加下劃線來表示超文本的方式天經地義,今天親眼目睹了這樣一個早期系統,終於感覺到前輩們決定採用這種方式的無可奈何與理所當然。
「一堆……」范含無話可說,「要求還挺高。」
作為副產品的正則表達式庫,以及lex和yacc,范含也沒糟踐,特意寫了一篇論文向《美國計算機協會通信》雜誌(Communications of the ACM)投稿。編輯部在兩天以後就立刻回信,保證發表在九月號上,甚至不惜撤掉其他文章重新安排版面。
等到范含寫好了Shell的草稿,其他人也完成了那些工具,OS組的所有成員,甚至包括一些硬體工程師,都對於這個系統最終的模樣有了一個八九不離十的概念。
首先,標籤關鍵字不區分大小寫。處理這個就很費勁。
「可別。」奧爾森說,「一大幫人正等得望眼欲穿的時候,你跟我說煩?」
「整理卡片,錄入資料。」那mm回答,「我們的查詢系統要改用計算機了。」
「嗯,能夠支撐起來外圍的東西就夠了。」奧爾森說,「如果開始就憑空寫內核,恐怕確實無從下手。」
不過……HTML由於歷史的原因,設計得太隨意了些。這種隨意曾經讓范含吃盡了苦頭。
從另一個角度想想,如果一切順利的話,自己的「電子生涯」實際上就是摩爾定律那光輝燦爛的一輩子:自己在摩爾定律剛開始發威的時候創業;在摩爾定律的鞭策之下發展壯大;最後,在老得不像話的時候,坐在搖椅之中,腿上蓋著毯子,手裡攥著貓,哆哆嗦嗦的替摩爾定律站好最後一班崗。
既然這個系統不是自己想象中的那個資料庫應用,說明情況還不算太壞。並且這個系統並不是IBM開發的,說明IBM的思想還沒那麼前衛。不過,這個系統已經成功運行在IBM System 360上這件事本身,說明遲早有一天IBM會開始開發類似系統。
以前自己怎麼把他們忽略了?范含很後悔。
雖然沒見著主機,不過遠遠一看終端的形狀就能認出來。現在的范含對業界各個公司的機器還是很熟悉的,這要是擱以後,肯定已經達到了應聘「中關村電子農貿市場」櫃檯人員的基本要求。
本來,既然當前技術條件不成熟,擱幾年就擱幾年,沒必要非得這麼執著。藍藍就總是弄不明白為什麼范含會這麼固執,堅持一定要用最快的速度把32位機器定型不可。
IBM System 360?
「你就別損我了。」范含苦笑,「正為這事兒煩著呢。」
操作系統的名字並不是「Unix」,而是一個同音詞「Eunuchs」,意思是「太監們」。
自己手邊這台機器,不過是「更了名改了姓喚作」PDP-11,其實就是一個8086。真正的PDP-11是在1970年出現,不說架構,僅僅是這兩年的功夫也足夠讓性能提高几倍。地址空間擴展了的8086也還是8086,就像華人染了眼珠漂白臉皮也還是華人一樣。
「確實……」范含相信,真正的VAX是作為小型機推向市場的,現在提前了這麼多年,成本當然下不來。
所謂超文本(Hypertext),就是電子文檔的一種,其中的文字包含有可以鏈接到其他欄位或者文檔的超文本鏈接,允許從當前閱讀位置直接切換到超文本鏈接所指向的文字。「超文本」這個詞在英語詞典上並不存在,是美國人泰得·納爾遜於1965年杜撰的。
接下來的事就簡單了,范含要求「OS組」的所有相關人員都去寫那些「小工具」,不管在什麼機器上面都成,只要是文本界面和-圖-書就可以。
隨著移植的進行,范含越來越能體會到設計一個系統的工作之龐大和複雜。就說這兩個工具,僅僅涉及到字元串操作,不過卻是使用正則表達式。所以,還要首先寫一個正則表達式庫。當然,毫不猶豫的抄襲「PCRE」,地道的Perl標準。
其次,許多標籤可以閉合,也可以不閉合。比如表示段落的「」,可以單獨出現,也可以和結束標籤「」成對出現。處理這個也很費勁。
「所以啊,同事們都跟我說『找那個阿拉丁去搓神燈吧』!」奧爾森笑了,「然後我就給你打電話了。」
就是傳說中能「平台獨立」的Java,靠的是「虛擬機」。說白了,就是捏造了一堆東西冒充硬體而已。C++他爸BjarneStroustrup有句話說得好:「Java不是平台獨立,而是一種平台。」……這句話如此有名,以至於許多C++高手都用它作簽名檔。
「你們這個系統用的資料庫是什麼?」范含問。
這個不好說。
「沒有資料庫。」旁邊有一位「阿姨」回答,「每張卡片就是一個文件。」
殺手級應用?還「一堆」?哪兒那麼容易就搓出來?
不說阿拉伯文沒有大小寫(但是每個字母有四種形式:字頭、字中、字尾、單獨出現,寫法各不相同)。不說東亞的象形文字、也不說泰文、梵文、希臘文、俄文字母。就是採用拉丁字母的語言,除了英語、義大利語這類不採用重音符號的文字之外,都會很煩。
范含扭頭,看到旁邊一台終端前面,那位阿姨正在輸入什麼。
勉強算得上是「不依賴平台」的東西,應該就是各種網路標準了。但是,聯網通信的前提是必須遵守一大堆「協議」,實際上這就是平台。用機器代碼編點不存在的指令,當然運行不起來;同樣,寫幾個不規矩的TCP包發出去,不丟才怪。
……
在BROM裏面,有全部的GnuWin32的程序和源代碼,以前每隔一段時間,范含都會去主頁下載最新的版本。這些都是很有用的東西,只要自己需要在一段時間內用一台Windows計算機干點什麼,首先安裝的就是這堆工具,其次就是ActivePerl。
屏幕上顯示的就是一張「卡片」,每段文本的位置都和真正的卡片上一模一樣。只不過,有的文本下面有一條下劃線。
從此之後,對於驅動程序以及其它硬體相關的部分,范含一向敬而遠之,更別提內核了。所以直到現在也沒有多少「系統開發經驗」,寫過的東西都是「應用程序」。
「他們身處逆境亂世,自然磨鍊成為英雄」。
硬體發展是呈指數飛躍的,只要摩爾定律還在起作用,步子就會越邁越大,功能增強的速度也會越來越快。
本來以為就是HTML那樣的一堆尖括弧,走過去一看,不是。正常文本之間有一堆奇怪的符號和各種控制字元。也對,這時候HTML還沒出現呢。
所以現在的范含頭大如斗。
鬱悶了一上午,傷感了一下午,一天就這麼過去了。
由於幾乎每篇論文後面都會引用一大堆其他論文,如果按照順序一篇一篇地找,確實沒有直接跳轉過去方便。這類系統從誕生之日起,就有它存在的必要。布朗大學的一干人等正是正視了這個需求,才開發了這個系統。
「怎麼樣了?」
FileUtils是一些文件目錄操作的命令,比如ls、cp、rm什麼的,DOS下面也有一些相應的命令,不過功能要弱許多。TextUtils包含的工具很多都是DOS下面沒有的東西,用來處理文本文件,比如sort、uniq、tr等等。
「現在肯定是當不起,這樣才好。」范含說,「我就是要捧他,一定要捧得他有一種如坐針氈的感覺。」
比如大小寫問題,xml是區分的。這個就有它的必然原因……在Unicode裏面處理大小寫,實在是太他媽的煩了!
「我不懂啦!」mm笑著回答,「技術問題我一竅不通。」
個人電腦的出現,只是給了Intel和Microsoft一個機會,IBM領進門,修行在個人。
游標只能在帶下劃線的文本之間移動,移動到哪裡,哪裡的文本就反色,變成白底黑字。
寫腳本的時候就意識到了HTML的不規範所帶來的麻煩。
※※※
在自己的印象里,應該和原來上大學的時候圖書館裏面的系統差不多:UCDOS下面的藍底白字的界面,可以按書名、作者、出版社什麼的分類查詢。
目前的所有計算機都是採用文本界面和用戶交互,只不過還沒有標準輸入和標準輸出的概念,一些命令行參數的形式也和Unix不太一樣。所以首先實現的是一個載入器,用法有點像使用「-e」選項的Perl。這個載入器的作用就是對這些工具的Unix式命令行作一些處理,然後再傳給具體的機器執行。命令行的形式採用GNU標準,單連字元「-」帶單字母,雙連字元「--」帶多字母,等等。
除此之外,32位平台的潛力還遠遠沒有被挖掘殆盡。
「除非這款機器上面能有一堆殺手級應用。」奧爾森說,「不是一個,是一堆。」
這和16位到32位的轉變還不一樣,那時候人人歡欣鼓舞,畢竟16位體系的局限性太大了,無論是開發人員還是最終用戶都有一種縮手縮腳的感覺。
還有其他許多地方需要范含費勁,虱子多了不咬,債多了不愁,至於那些地方到底是哪些地方,現在的范含大人大量……已經忘了。
第一步到底應該先幹什麼,心裏沒譜。乍一看好像哪個都挺重要,再一看好像哪個都有前提條件。Unix/Linux不是微內核結構,幾個主要模塊彼此互相依賴,扭做一團。對於自己這樣的旁觀者而言,僅僅通過BROM裏面那些帶註釋的源代碼就判斷出哪裡是起點,確實有點難。
如果光是談論「開發新型操作系統的重要意義」,或者介紹一下自己www.hetubook.com.com「對於新型操作系統的初步構想」,這個范含不怵。現在的范含有把握侃暈業界所有的「電子工程師」們和「數學家」們。
關鍵就在於「Intel平台」。
「是啊,本來我們就落後,想後來居上就得加倍的努力才對。」奧爾森說,「和IBM打個平手已經算是輸了。」
每本書都有唯一的書號,所以可以存成一個文件,以後再也不用修改,范含想。存儲作者和出版社的文件可能會時常更新,添加內容。這麼一來,這套系統就像是一個網站的布局那樣。
臉兒熟就是好辦事,mm二話沒說,領著范含進了辦公室。
看來歷史在這裡有個小小的轉折,UCLA裏面這些被范含冷落的未來的電子工程師們,面對數學系的同學和FOR合作邊寫論文邊打工,名利雙收的局面,終於不堪平庸,奮發圖強,努力證實自己的價值。
范含最欣賞xml的地方,就是它很「規範」。上面提到的那些html的缺陷,xml一概沒有。
「這個操作系統的名字想好了沒有?」奧爾森問,「眼看勝利在望,應該準備正式的對外文件和廣告了。」
「不是。」那位阿姨回答,「這本來是布朗大學的一個項目,我們學校有人和他們合作。」
按理說,自己不應該一點消息沒有。
有些事情是水到渠成的。
咳……
只能說,32位是道坎,標志著軟體開發力不從心時代的到來。
正如格鬥,無數看客總是津津樂道于比較中國武術和其他功夫的優劣,卻沒想到歸根到底格鬥還是要靠活人去打。也許在「武道」的歷史上確實比人家早了幾千年,但是一個「武者」一輩子也只能練上幾十年而已。耍關刀的「老英雄」打不過職業泰拳的小毛孩子,真是再正常不過。
除非自己也瞎了,否則就意識不到世界上還有盲人;除非盲人也是客戶,否則就不考慮他們的需求。合法、合理,就是不合情。
等到范含看到文件的時候,才明白奧爾森為何驚訝。
軟體則不然,搞這個還是要靠人腦。既然人腦的智力發育沒有呈現「指數型增長」,並且從業人數也沒有呈現「指數型增長」,趕不上趟是必然的。
「是啊,內核雖然最重要,但是最終用戶又看不到。」范含說,「外圍的應用一旦確定,內核的任務也就基本上確定了。」
仔細一打聽,UCLA電子工程專業的一幫人挑頭引進了這套系統。
又是IBM?
當時范含一時好奇,就下載了一個玩玩。結果發現,一些所謂「門戶網站」的主頁,看上去簡直亂得一塌糊塗。只有Google之類的站點很好看,當然,這也是由於那些頁面過於簡單的緣故。倒是一些公益站點、非營利機構、社團的主頁,用IE看也很漂亮,用Lynx看則同樣的美觀。
現在的情況好一些,和硬體交互的代碼完全可以交給底下人來做,自己只要考慮所謂「高端體系」即可。問題是,現成的代碼肯定用不上,憑空寫又找不到著手點。
「人都幹嘛去了?」范含逮著一個mm管理員就問。
是吧?
?
信息產業的二十年,應該相當於傳統行業的幾個世紀了。
那些「後世圖形界面瀏覽器」裏面的文字,都是和其他圖形界面程序一樣,是畫出來的。反正畫什麼也是畫,所以隨便改字體也無所謂。但是對於字元終端而言,每個字元都採用事先燒入ROM裏面的等寬點陣字體,直接拍在屏幕上。在這種情況下,就算是同一種字體族,僅僅採用粗體或斜體,實際上都需要更改點陣,肯定會涉及到字元位置的重新計算。相比之下,字體不變而改換顏色反而更容易一些。但是目前最通用的是單色終端,並且這種系統的設計從一開始就決定了不能依賴顏色。於是,下劃線幾乎是唯一可能的解決方案。每打出一個字元,在下面多一條線,還是可以輕鬆辦到的。
我日你先人的板板!范含暗罵,這是住四年宿舍學會的少數幾句方言之一,都是自己不恥下問,跟四川的同學們請教而來的。
「那就拜託了。」范含輕輕巧巧的把任務推給DEC,「寫完了咱們再合起來調試。」
正是由於業界很快看到了32位體系超長的壽命,才會放心大胆的投資,不用擔心短期內被64位體系取代。正是由於業界了解32位體系巨大的潛力,才會放心大胆的開發新應用,移植舊應用,畢竟幹不了的事不算太多。
想當年的PC/AT,也就能玩玩DOS,還是1.0版。要實現「多用戶多任務」那是瞎掰。
需要第一批實現的工具目錄,是范含從「GnuWin32」項目(gnuwin32.sourceforge.net)裏面抄下來的,主要就是「FileUtils」和「TextUtils」兩個軟體包。
沒辦法,范含只好空想出一個32位機器,然後考慮這台機器上的Unix實現。
「是么……」
「嗯。」奧爾森說,「你說的那個『VAX』,我們內部評估了一下,不划算。」
補救措施不是沒有,第二天范含就備齊茶葉,請了一幫技術人員聊天,談談PDP-11的特性。
「所以我才納悶,你這個馬屁拍得也太明顯了吧?」藍藍說,「這個『mpson』好像還當不起。」
微軟是從1995年,Windows95推出之後才在業界佔據了明顯的上風,等到Windows98出品,其軟體霸主地位就已經不可動搖了。
對於這樣做的動機,范含是可以理解的。畢竟辛辛苦苦做成網頁,不希望其他競爭站點原封不動拿走就用。但是對於這種手段,范含是不支持的。畢竟這些古籍的著作權屬於死人,版權不屬於任何活人。要麼您就別貼出來,要麼您就貼圖,像現在這麼干,只會給一些查找資料的人製造困難。
比如德文,大寫字母29個,小寫字母30個。多出來的那個小寫字母,形狀類似希臘文的Beta,實際上是「ss」的合寫。這個字母不會出https://www.hetubook.com.com現在字頭,也就沒有大寫形式,一旦需要大寫……比如文章標題全部字母大寫的情況……就必須用「SS」兩個字母代替(當然,這隻是德國德語,瑞士和奧地利的正字法裏面就沒有這個小寫字母)。
開發過程中還出現一個問題:目前的C語言並沒有標準庫,這給開發工作帶來一些不小的困難。
范含知道,摩爾定律應該在二十一世紀之初就會失效,因為電路元件再小也小不過幾個原子,這是物理法則的壁壘,令人無可奈何。這個時候也就是傳統「電子計算機」的歷史走到了盡頭的時候。
這些事實都在提醒范含,儘快設計HTML,規範化超文本的表現形式,利人利己。
本來,自打IBM System 360研製成功,計算機才算是有了「真正的操作系統」;自打Unix開始,「真正的操作系統理論」才算出現。現在當然不會有什麼人寫這個方面的書。
「是不是出什麼事兒了?」范含聽這口氣不對勁。
所謂「跨平台」裏面的「平台」,指的是軟體平台,更確切地說,應該是「操作系統平台」。說句不好聽的,那些「跨平台」的東西,不過是每種「平台」都重新實現一遍而已。
從1985年386的推出,直到預計到2005年還會賣的奔騰四,這個平台延續了二十年。
就在范含挨家生悶氣的時候,奧爾森來了個電話。
我日你先人的板板!
※※※
總之,對於xml這種主要是讓程序來閱讀的文件,語法規則越簡單越規範越好。其實html不也是讓瀏覽器用的么?理論上最終用戶沒有必要非得閱讀網頁的源代碼呀!那為什麼當初要設計成這樣?
「一般情況下,你的員工只要能搞出一個,估計就能拿著獎金度假去了。」范含說,「一下子弄一堆出來……好像有點難。」
我們不喜歡Windows,還有Linux、FreeBSD,甚至曾經的BeOS可以選擇。但是不喜歡「Intel平台」,有什麼辦法么?
「什麼怎麼樣了?」范含裝傻。
范含的這篇論文從形式上講,是六月號Ken·Thompson那篇文章的回應,調門相當的低。整篇文章中,自己的名字(甚至包括第一人稱代詞「I」)一共出現了十幾次,可是「Mr.Thompson」卻出現了幾十次。通篇到處都在說「受到了Thompson先生天才構思的啟發」,字裡行間透出一種執弟子禮的架勢。措辭之肉麻,讓負責潤色文筆的藍藍都為之臉紅。
所以有一點可以肯定,傳統電子計算機主流平台將會鎖定在64位,也許這個主流地位將一直保持到二十二世紀,直到電子計算機被淘汰的時候為止。
所以到了後來,xhtml標準出現,范含幾乎是舉雙手雙腳贊成,巴不得全天下的頁面都是如此規範。
像DOS那樣簡單的字元界面系統,並不能給微軟帶來多少優勢意識,畢竟同一時期類似的操作系統有許多。就是微軟自己,也曾經推出過一款類Unix操作系統:Xenix。至少這說明,當年的微軟對於自己壟斷Intel平台並沒有多少必勝的信念。
這才是Intel牛逼哄哄的本錢。
由於潛意識裡面總是忘不掉真正的歷史,往往會和現在自己參与的這個歷史進程混淆起來,加上一直以來滿足於「硬體外行」(偶爾還會引以為榮)的角色,經常把細節問題留給底下的開發人員考慮,所以類似提出這樣的不切實際的「高瞻遠矚」的情況也不是第一回了。
「恐怕不行。」奧爾森說,「我們和IBM可不一樣,手頭沒有那種閑錢。」
現在的范含還差的遠。
字長翻番?是,一些計算密集型的應用需要64位。
UCLA的校圖書館和自己一點關係沒有,他們願意幹什麼就幹什麼,沒有非得通知自己的義務。不過從另一個角度講,這樣一個系統的研製成功,在當前的技術條件下,應該算是軟體行業一個了不起的突破。況且UCLA已經決定部署了,館方應該是對其極為滿意才是。
轉了一圈,沒找到。
「然後在惶恐、慚愧之中,肯定會主動要求和我會面。」范含奸笑,「呵呵呵……嘿嘿嘿……」
況且,像圖書館管理系統這樣的軟體,其需求都是固定的,沒有什麼改進的餘地。這個系統的成功,至少可以證明,IBM的資料庫應用已經相當成熟。一旦有了一個成功的範例,就可以在很大程度上影響其他公司的採購決策。作為後來者,想要後來居上,功能和穩定性必須得強大的多,做到這一點殊為不易。
「行。」奧爾森說,「還有件事。」
像Intel那樣一旦領先就一直領先,才是范含強烈要求儘快搞定VAX的根本原因。對於在這種「大號386」上面實現一個地道的Unix,有BROM在,自己還是比較有信心的。不過,目前還沒有硬體,那就只能在其他機器上面先儘可能的實現,以後再移植過去。
「哦?」范含很驚訝,「不至於吧……」
但是……不甘心,范含一直就在UCLA校圖書館裏面轉來轉去。對於這類專業書籍,如果洛杉磯市圖書館裏面有,那麼校圖書館當然也會有,而且肯定數量更多質量更高;如果連大學的圖書館都沒有的話,市圖書館恐怕更不會有……所以范含根本就沒去。
「應該可以,我們以前為了自己的機器也寫過好幾個操作系統呢。」奧爾森說,「再說,你們的整個開發過程不就是在用其他機器操作系統的內核支持這些外圍應用么?」
「這個……」范含伸手去點,這是網蟲的毛病,一看見下劃線就犯。
※※※
人力物力也不是問題。自己就是實權人物,可以調動FOR的全體員工以及通過奧爾森調動DEC相關產品線上的大部分人;最近的FEEE在Kervin機上面也是獲利頗豐,手裡攥著大把的現金。
Linus最初寫Linux的時候就不是「憑空」開發,參考了當時大和*圖*書學裏面流行的「Minix」代碼,一個為了教學目的開發出來的微內核體系。而這個Minix,又是參考了Unix的設計方案,去掉那些所謂「臃腫」的部分。至於「Unix」,現在的Bell實驗室的那個Ken還沒寫出來呢。
扯遠了,扯太遠了,怎麼開始替摩爾定律準備後事了?
可的確沒誰迫不及待。
移植是一碼事,憑空寫是另一碼事。動手之初就能把所有錯綜複雜的關係弄清楚,這是很難得的本事。對於「Architect」的工資比「Coder」高很多這一事實,只有小白才會不服。
就架構而言,Intel的386並不是最優秀的。MIPS、SPARC、PowerPC的設計都要強一些,但是這些架構並沒有動搖Intel的主流地位。原因就在於Intel佔了先機。
再次,標籤屬性值的引號可用可不用。比如「color=『red』」,也可以寫成「color=red」。處理這個最費勁。
情況還不算太壞,畢竟這個架構是經過了DEC工程師「四大金剛」的頭腦風暴(其實是「意淫風暴」)之後才定型的,比起原始的8086還是要強上那麼一點,在一定程度上實現單用戶的「協作式多任務」還是可以辦到的。
「我就能搓出一堆來?」范含說,「還真看得起我。」
以前陪著老頭子來過無數次了,早就混了個臉兒熟,碰上管理員都是打個招呼,然後直接進去查卡片。其實普通的校外人士一般不讓這麼隨便的,這還和市圖書館不一樣。
今天有點不一樣,樓道裏面溜達的管理員有點少,想找個人問問還得走挺遠。
這時候范含已經有了預感,恐怕今後自己的整個一部創業史,就是一部和IBM的鬥爭史。面對強權,不屈不撓,屢敗屢戰,最終殺出一條血路,開創了屬於自己的一片新天地。
稍微一想,范含就恍然大悟。
對於Unix的前景,范含是很清楚的,只不過,光想想確實挺美,真幹起來就不一樣了,開始的時候,簡直不知道從何下手。
但這個好像不是。
外行領導內行是業界大忌。
白髮蒼顏吾老矣,只此地,是生涯。
「嗯,沒必要和IBM硬碰硬。」奧爾森說,「更何況是以己之短,攻彼之長。除非……」
「你說得很對,我就是在拍馬屁。」范含回答,「不謙虛地說,我的這個實現相當完美,今後幾十年都不會有太大的變化。並且我還率先開發出一個完美的應用,就是這個應用本身在編譯技術發展歷史上也是濃重的一筆。」
「既然已經有了目標。」范含說,「我想你的人隨隨便便也能把這個內核寫出來吧?」
范含留給自己的任務就是寫「Shell」。
※※※
維護這些文件和維護資料庫,哪個更煩?對於這些管理員來說,維護文件應該和原來維護卡片有點像,恐怕更容易接受一點。這樣一來,還可以省下購買資料庫系統的大筆經費。在當前資料庫系統還十分昂貴的情況下,這麼干也還說得過去。
可是不搓也不行,不甘心。
況且這類手段別說難不住「競爭站點」,甚至難不住范含這廝。范含把所有網頁下載完畢之後,專門用Perl寫了個腳本,讀入網頁,輸出文本,順便除掉中間的這些垃圾。
「其他人覺得把握不大是不是?」范含明白了。
以前范含搜集資料的時候,遇到了一個「國學網」,裏面都是各種國學古籍。曾經興高采烈的從網頁上面複製文字,存成文本。但是打開一看,每行後面都多了一個字。基本上就是「知」、「古」、「齋」、「主」四個字輪換使用。仔細分析網頁源代碼,發現這個多餘的字的確是原來就有,只不過顏色設置和背景色相同,在瀏覽器中看不出來而已。
范含最早寫的Linux程序是個顯示器驅動,在那之前都是用Shell,寫點兒命令行程序。直到第一回敲入「startx」,打算進入圖形界面的時候,覺得解析度和刷新率太低,不爽。X的配置怎麼都達到不了Windows下面的效果。看來根本原因是由於系統識別不出自己的那個雜牌顯示器,當時Linux下面的驅動程序還遠遠不如Windows豐富。沒辦法,自己動手,豐衣足食。先找了個最接近的驅動當模板,然後慢慢改。
所謂「xhtml」,其實就是用xml語法規範化的html,每個xhtml文件都是一個標準的xml文件。處理這樣的文件當然會很輕鬆。
走近點一看,好像和自己想象得不太一樣。
「沒什麼……」奧爾森說,「你的性格確實有如傳說中那樣古怪。」
回家路上,范含拚命搜索BROM,關鍵字是「布朗大學」。
「什麼?」
「你這不是在拍馬屁么?」藍藍問,「雖然說是他率先提出了理論,不過你可是率先實現了啊!並且許多地方已經很大的擴展了他原來的設想啊!」
由於MS項目的原因,一直以來,自己在UCLA都是只和數學系打交道,和這些真正能造計算機的人反而沒有來往。當然的,他們干點什麼也沒必要非得通知自己一聲。
圖書館的查詢系統,是很典型的「管理信息系統」,在自己的那個時代,無數教材和技術書籍都拿這個當例子,應該已經被無數人使用無數語言和開發工具實現過無數遍了。
「這個系統是從IBM那裡買的?」范含又問,這個問題才重要。
只要一提到「超文本」,范含立刻就會聯想到「超文本鏈接語言」(HyperText Markup Language,HTML)。這種語言幾乎是欽定的描述「超文本」的工具。最明顯的特徵就是那個「下劃線」。
一個Unix系統又不是只有內核,既然這個幹不了,那就先干點別的。和Ken的順序相反,范含決定從外到內,逐步開發。為了掩蓋自己不學無術的醜惡嘴臉和在那些內行員工面前保持高大形象,還煞有其事的美其名曰「面嚮應用的系統設計」。