青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 505  文章 - 1034  trackbacks - 0
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567


子曾經(jīng)曰過:編程無他,唯手熟爾!

常用鏈接

留言簿(94)

隨筆分類(649)

隨筆檔案(505)

相冊

BCB

Crytek

  • crymod
  • Crytek's Offical Modding Portal

Game Industry

OGRE

other

Programmers

Qt

WOW Stuff

搜索

  •  

積分與排名

  • 積分 - 923082
  • 排名 - 14

最新隨筆

最新評論

閱讀排行榜

評論排行榜

第二章 一種操作系統(tǒng)的誕生

1、

有些人記憶時間的方法是通過他們曾經(jīng)駕駛過什么樣的車子,干過什么樣的工作,或在什么地方住過,以及追求過什么樣的情人。而我的生涯卻是由電腦來劃分的。

我成長期間只有過三臺電腦。上面提到過的VIC-20,是我外祖父留給我的遺產(chǎn)。它是“家用”電腦中的一種,是當(dāng)今PC機(jī)的前身。般長64電腦后來成了VIC-20的老大哥,接踵而至的是Amiga,這種機(jī)器在歐洲特別受歡迎。這些電腦從來未像PC機(jī)甚至蘋果II那樣流行過,我在玩VIC的時候,蘋果II已經(jīng)很流行了。

在那個年代,PC機(jī)普及之前,家用電腦的多數(shù)程序使用的都是匯編語言。它們都有自身的操作系統(tǒng),等同于PC機(jī)里的DOS。由于機(jī)器不同,操作系統(tǒng)很可能是一種簡單的格式,或是增強(qiáng)的格式。那時沒有什么技術(shù)標(biāo)準(zhǔn),許多公司都想控制市場。最有名的公司之一就是Amiga。我現(xiàn)在句子的開頭都要用上“在那個年代……”,真是不可思議。

等我對VIC-20玩得已經(jīng)很精通后,我便開始攢錢想買一臺下一代的電腦。這在我生活中是一件大事。前面我已經(jīng)提到過,我對我的家人在某個特定的時間住在什么地方,以及其他許多事情都記不清了,但我購買第二臺電腦的過程卻很難忘記。

我攢了一些圣誕節(jié)和生日的壓歲錢(我生于

在芬蘭,給學(xué)校捐款是很普遍的事情,連公立小學(xué)也有人贊助。所以從小學(xué)四年級開始學(xué)生就能得錢,發(fā)放的方式完全由建立基金的人決定。我記得有一種捐款是獎給班里最受人愛戴的學(xué)生的。當(dāng)時我們六年級,全班還真的舉手投票表決,看誰能得到那筆錢。順便說一下,我當(dāng)時未被選中。獎金僅有兩百芬蘭馬克,當(dāng)時只值四十美元,但對一個最受歡迎的六年級學(xué)生來說似乎已不是個小數(shù)目了。

通常情況下,在某一個學(xué)科或體育項(xiàng)目中有突出表現(xiàn)的學(xué)生都能得到獎學(xué)金。許多獎項(xiàng)都是由具體的學(xué)校發(fā)放或由州政府贊助的。有些獎學(xué)金隨著時間的推移數(shù)目越來越少。我記得有一種獎項(xiàng)最后只值一毛錢。發(fā)生這種情況時,學(xué)校也會出些錢補(bǔ)進(jìn)去,但是盡管如此數(shù)目仍然不多。這樣做的目的僅僅是在每年當(dāng)中把發(fā)放獎學(xué)金的傳統(tǒng)繼續(xù)下去。芬蘭對學(xué)術(shù)傳統(tǒng)非常認(rèn)真,這當(dāng)然不失為一件好事。

于是我作為優(yōu)秀的數(shù)學(xué)學(xué)生,每年都能得到獎學(xué)金。上高中后,獎金的數(shù)目越來越大,最多的時候可以達(dá)到五百美元左右。因此我買第二臺電腦的錢基本上是這么來的,我每月的生活費(fèi)肯定付不起電腦錢。此外我還從我爸爸那里借了一些錢。

當(dāng)時是1986或1987年。我十六或十七歲。那個時候我已不再打藍(lán)球。決定買何種電腦之前,我花了大量時間進(jìn)行了一番調(diào)查。當(dāng)時的PC質(zhì)量還不太好,我便決定不買PC機(jī)。

我選擇的是Sinclair QL,你們當(dāng)中的許多人大概太年輕,對這種機(jī)子沒有記憶。

下面是QL的簡單歷史:當(dāng)時,Sinclair是市場上32比特的機(jī)器之一,主要用于家庭。那家公司的創(chuàng)始人克里夫·辛克萊爾(Clive Sinclair)在英國等同于史蒂夫·沃斯尼亞克(Steve Wosniak)。他制作出這些電腦的配套元件,然后以Timex的品牌在美國銷售。沒錯,一家制造鐘表的公司進(jìn)口Sinclair的元件,然后再打著Times品牌在這里賣出。早期銷售的也是配套元件,他后來開始銷售組裝好的機(jī)器。

Sinclair的操作系統(tǒng)叫做Q-DOS。這種操作系統(tǒng)是專門為那種電腦寫的。按照當(dāng)時的情況,它的BASIC語言非常先進(jìn),而且有著不錯的圖形顯示。那種操作系統(tǒng)最令我興奮的一個特點(diǎn)是它能進(jìn)行多重任務(wù)處理。你可以同時操作多個程序。然而其BASIC部分卻不是多重任務(wù)處理,所以同一時間之內(nèi)你不能操作超過一個以上的BASIC程序。但如果你用匯編語言編寫自己的程序,就能讓操作系統(tǒng)列出時間表,把時間分隔開來,這樣你就可以在同一時間操作多個程序。

這種電腦有一個8兆赫的68008芯片,它是摩托羅拉68000芯片的第二代,是個更加便宜的版本。在內(nèi)部,第一代68000芯片是32比特,但在外部,卻以16比特與CPU之外的設(shè)備進(jìn)行連接,例如存儲器和硬件附加裝置。由于它只能在一個時間內(nèi)從存儲器上載16比特,因此16比特的操作常常比32比特的操作要快。這種結(jié)構(gòu)非常受歡迎,今天在許多嵌入裝置和轎車?yán)锶匀挥腥耸褂谩km然芯片已經(jīng)不同,但卻是基于相同的結(jié)構(gòu)生產(chǎn)的。

我的電腦中的68000芯片在與CPU之外的設(shè)備連接時使用的是8比特,而不是16比特。但雖然它與外部設(shè)備互動的是8比特,其內(nèi)部卻是32比特的。這就使它在編程方面顯得非常不錯。

它的內(nèi)存是128千字節(jié),不是兆字節(jié),這在當(dāng)時對家用電腦來說已經(jīng)非常大了,而被它所取代的VIC-20僅僅有3.5千字節(jié)的內(nèi)存。因?yàn)樗且慌_32比特的機(jī)器,所以能毫無困難地讀取所有的內(nèi)存,這在當(dāng)時是前所未聞的。我之所以要買這種電腦便是出于這個原因。它的技術(shù)非常有意思,我喜歡它的CPU。

我的一位朋友認(rèn)識一家商店的老板,于是我希望能在他那里打折買這種電腦。但等貨的時間太長,于是我便前往赫爾辛基一家最大的書店,因?yàn)槟抢镉幸粋€電腦柜臺。我的電腦就是在那里購買的。

那臺電腦花費(fèi)了我差不多兩千美元。當(dāng)時的情況是,低檔電腦的價格總是在兩千美元上下。只是在最近兩年這種情況才有所變化,現(xiàn)在你只需花五百美元就能買一臺PC機(jī)。這種情況和造汽車一樣,沒有人愿意生產(chǎn)低于一萬美元的汽車。在某一段時間,低于一萬美元就不值得制造。不錯,公司完全可以造出銷售價格為七千美元的汽車,但汽車制造商們認(rèn)為,凡是能出得起七千美元的人,如果能買到附加的標(biāo)準(zhǔn)設(shè)備,比如空調(diào),花上一萬美元他們也高興。假如你把今年出產(chǎn)的低檔轎車同十五年前的同類轎車相比較,就會發(fā)現(xiàn),它們的價格大體一致。其實(shí),將通貨膨脹的因素去除,它們的價格或許稍微便宜一點(diǎn),然而質(zhì)量卻好得多。

過去的電腦就是這樣。當(dāng)電腦還不是人人都買的商品時,你就只能忍受兩千美元的昂貴價格。假如一臺成本很低的電腦價格非常昂貴,公司就無法大量地進(jìn)行銷售。但生產(chǎn)商制造電腦的成本并非很低,所以公司若是賣得很便宜就不合算。人們總是希望多花二百美元買臺更好的機(jī)器。

最近兩年,制造電腦的成本已經(jīng)大幅度降價。甚至低檔的電腦質(zhì)量也非常好。公司已經(jīng)失去了許多愿意多付二百美元買一臺稍好一點(diǎn)機(jī)器的客戶,它們就只好依賴價格進(jìn)行推銷了。

我得承認(rèn),QL的賣點(diǎn)之一就是它的樣子非常酷。

整個機(jī)身是無光澤的黑色,帶著一個黑色鍵盤。整個樣子有棱有角,而不是那種圓圓的漂亮的機(jī)型。它的造型有點(diǎn)走極端。鍵盤有

于是我花兩千美元買了一臺Sinclair QL。我用它所做的就是不斷地編寫程序。我總是在尋找有意思的事情做。我有一個Forth語言解釋程序和編譯程序,純粹是為了用著玩。Forth是一種很怪的語言,現(xiàn)在已經(jīng)沒有人使用。它是一種挺好玩而且在市場上有利可圖的語言,因?yàn)榭梢宰鲈S多事情而在八十年代被廣泛運(yùn)用,但從來沒有特別普及過。它對不懂技術(shù)的人來說非常難于掌握。其實(shí)這種語言也沒有什么太大用處。

我開始自己編寫工具性程序。我最初為這臺機(jī)器買的東西之一是一個攜帶EEPROM(電子可讀及可編程序只讀存儲)卡的擴(kuò)展底座。這是利用特殊模件自己編寫的內(nèi)存,關(guān)機(jī)后它仍存在。這樣一來,需要時我就能隨時獲得那些工具,沒必要將它們寫入內(nèi)存,于是就能占用珍貴的內(nèi)存進(jìn)行編程了。

使我對系統(tǒng)感興趣的是,我買了一個軟盤控制器,因?yàn)橐巡槐卦偈褂梦⑿万?qū)動器了。但軟盤驅(qū)動器上的驅(qū)動程序不好使,于是我自己又寫了一個。在編寫過程中,我在操作系統(tǒng)里發(fā)現(xiàn)了一些病毒。我之所以能發(fā)現(xiàn)病毒,是因?yàn)槲揖帉懙囊恍〇|西無法操作。

我的編碼總是很完美的。所以我知道肯定是別的地方出了差錯。

于是我把整個操作系統(tǒng)都卸掉了。

你可以列出一推關(guān)于操作系統(tǒng)的書籍,這些書能幫上忙。你還需要一個反匯編程序,這種工具能把機(jī)器語言變成匯編語言。這一點(diǎn)非常重要,因?yàn)槟阋侵挥袡C(jī)器語言的版本,執(zhí)行指令時就非常困難。你會發(fā)現(xiàn)一個指令跳到一個數(shù)字的地址,讀起來非常困難。一個好的反匯編程序可以為數(shù)字起名字,也可以讓你起名字。你還可以使用它幫助你尋找特殊的相關(guān)指令。我自己有一個反匯編程序,可以用它創(chuàng)立相當(dāng)不錯的目錄。一旦出現(xiàn)差錯,我就可以進(jìn)入反匯編程序,讓它從特殊的地點(diǎn)找出目錄,而且我還能看到操作系統(tǒng)將要執(zhí)行的任何任務(wù)。

有時我使用反匯編程序并非是因?yàn)槌隽斯收希窍肱靼姿降啄茏鲂┦裁础?/p>

QL令我討厭的一個地方是,它只有一個只讀操作系統(tǒng),對于一切都無法改變。它在某些地方的確有HOOKS(是一種消息處理機(jī)制,它使程序員可以使用子過程來監(jiān)視系統(tǒng)消息,并在消息達(dá)到目標(biāo)過程前得到處理--譯注)。HOOKS就是你能切入你自己的編碼接管某些功能的地方。但HOOKS只出現(xiàn)在某些特定的地方。要是能完全替換你的操作系統(tǒng)就會好得多。在只讀存儲器中運(yùn)行一個操作系統(tǒng)是一種非常糟糕的想法。

雖然我說過,芬蘭是一個非常樂于接受新技術(shù)的國家,但Sinclair QL在這個歐洲第七大國卻沒有站住腳跟。由于QL在芬蘭的市場非常之小,每當(dāng)你想為反傳統(tǒng)的尖端機(jī)器購買升級設(shè)備時,只能通過郵寄的方式從英國購買。你必須翻閱許多產(chǎn)品目錄,直到找到一家銷售你所需要的設(shè)備的廠家為止。然后你還得準(zhǔn)備好保付支票,再等上幾個星期的送貨時間。那個時候還沒有網(wǎng)上購物和在網(wǎng)上使用信用卡。在我很希望把我的內(nèi)存從128千字節(jié)擴(kuò)展到640千字節(jié)時,我只能通過郵購的方式獲得。我買了一個新的匯編程序,將匯編語言轉(zhuǎn)換成機(jī)器碼(數(shù)字1和0),又買了一個編輯器,后者主要是為編程使用的文字處理程序。

新的匯編程序和編輯器都不錯,但是它們是在微型驅(qū)動器上,無法放入EEPROM。于是我自己編寫了匯編程序和編輯器,應(yīng)用于我所有的編程之中。編輯器和匯編程序都是用匯編語言寫的,按照今天的標(biāo)準(zhǔn)看上去非常愚笨。這種語言又復(fù)雜又費(fèi)時,我想用匯編語言解決一個問題要比用C語言解決一個問題多出一百倍的時間,而當(dāng)時C語言已經(jīng)存在了。

我給我的機(jī)器帶著的基本處理程序增加了好幾個指令,所以只要我想編輯任何東西,機(jī)器就會自動操作我的編輯器,它立刻就會顯現(xiàn)出來。我的編輯器比機(jī)器本身帶的編輯器速度要快。我可以在顯示器上以極快的速度書寫文字,我為此而感到驕傲。通常用這樣的機(jī)器,在顯示器上寫滿字需要很長的時間,你可以看到屏幕在慢慢地滾動。但是用我的編輯器在書寫時速度非常之快,屏幕滾動能給人造成一種模糊的感覺,這讓我很得意。這一點(diǎn)對我非常重要。它使我的機(jī)器顯得性能驚人,而且我知道為了讓我的操作更迅速,自己已做了大量的工作。

那時,在我所認(rèn)識的人當(dāng)中,像我那樣沉迷于計(jì)算機(jī)的人微乎其微。學(xué)校里有一個電腦俱樂部,但我?guī)缀醪辉趺慈ァD莻€俱樂部主要是為那些想了解電腦的孩子們創(chuàng)立的。我們的高中只有二進(jìn)五十名學(xué)生,但我想他們在十歲以后就再沒有一個人玩電腦了。

通常我用我的Sinclair QL電腦做的事情是復(fù)制游戲。我曾用VIC-20電腦為我喜歡的游戲作過翻版。有時我還讓游戲升級。但多數(shù)情況下它們都得不到改進(jìn)。機(jī)器更高級了,但概念并無改進(jìn)。我最喜歡的游戲大概是“小行星”,但我怎么也不能很好地將其復(fù)制下來。原因是那個時期所有游戲機(jī)中心的“小行星”游戲都是用真正的矢量圖形顯示進(jìn)行的。那些游戲的圖形不是靠小粒(即像素)顯示的,而實(shí)際與陰極射線管的原理相同:電子是從陰極射線管的后面通過電子槍發(fā)射出來,然后用磁鐵進(jìn)行轉(zhuǎn)向,這樣便可以高清晰度地顯示圖像,但如想復(fù)制過來就不那么容易了。你當(dāng)然可以復(fù)制,但假如你的電腦沒有特殊的圖形顯示能力,復(fù)制出來的東西便與原本的“小行星”相去甚遠(yuǎn)。

我記得曾經(jīng)采用匯編語言對“穿靴人”做過翻版。第一個步驟是,你必須記住穿靴人里的人物是什么樣子。然后你把它們畫在一張16*16平方厘米的坐標(biāo)紙上,再涂上顏色。你若有藝術(shù)細(xì)胞,就可以畫得很逼真。然而若像我似的完全不懂藝術(shù),畫出來的人物就會像是穿靴人的生了病的小表弟。

所以這個復(fù)制做得并不理想。然而我卻為此感到自豪。做出來的那個游戲是可以玩的,于是我把它寄給了一家發(fā)表電腦編碼的雜志。我曾經(jīng)把其他的程序寄給一些雜志,所以我以為我這次被他們接納應(yīng)是理所當(dāng)然的事。

事實(shí)卻恰恰相反。

其中的一個問題是,無論你在什么地方出現(xiàn)一個極為微小的錯誤,它就會運(yùn)轉(zhuǎn)不靈。

我自己也寫過一些游戲。然而創(chuàng)作需要某種心態(tài)。由于游戲需要大量的表演,就需要你對電腦的硬件十分精通。這我做得到。但我卻不具備玩游戲的感覺。一個出色的游戲通常并不是它的速度有多快,也不是它的圖形顯示得多么漂亮。它必須能讓你感到玩得起來--能吸引人。游戲和電影頗為相似。特殊效果是一回事,然而你還是需要情節(jié)。我所有的游戲從來都沒有情節(jié)。游戲還需要有發(fā)展,有想法。發(fā)展常常就是讓游戲速度越來越快。穿靴人就是這種模式。進(jìn)展時也產(chǎn)生變化,或是讓你能夠更緊密地跟蹤里面的怪物。

我對“穿靴人”感興趣的另一個原因是,它能夠解決圖形顯示閃爍不定的問題。這在老式的電腦游戲中是一個比較普遍的問題,因?yàn)闆]有特殊的硬件,你的人物就會閃爍不定。你采用的辦法就是去掉老拷貝,重寫一個新拷貝。假如你的時間恰巧處理得不好,人們就能看到?jīng)]有拷貝時的狀況,于是就更會出現(xiàn)閃爍的情況。解決這一難題有許多種方式。你可以先畫一個新人物,然后再把以前的人物去掉來避免這一問題。但你必須小心謹(jǐn)慎,不要把老人物被新人物覆蓋住的那部分也給去掉。這樣你就能獲得一個良好的效果,不會再看到煩人的閃爍現(xiàn)象。這一解決方案的問題是創(chuàng)作時相對昂貴,而且特別費(fèi)時間。

游戲?yàn)楹慰偸翘幱诩夹g(shù)領(lǐng)先的地位,而且編制人員為什么總是先制作游戲程序,其中是有原因的。一方面是關(guān)在房間里玩電腦的聰明的程序編制人員都是十五歲左右的孩子(我十五年前就這么認(rèn)為,至今對此仍深信不疑)。游戲之所以總處于領(lǐng)先地位還有另一個原因:它總能推動硬件的發(fā)展。

你若是看一下今天的電腦,就會發(fā)現(xiàn)它們速度快得可以做任何事情。但考驗(yàn)硬件極限的往往是動作感過強(qiáng)的游戲,如現(xiàn)在很流行的一些三維游戲。從根本上說,通過電腦上的游戲,你可以看出硬件是不是過關(guān)。進(jìn)行文字處理時,速度慢上一二秒鐘也不會在意,但玩游戲時,出現(xiàn)十分之一秒的誤差也非常明顯,游戲過去都比較簡單,時至今日,編程只是任何游戲的一小部分,此外還有音樂和情節(jié)。假如你把制作游戲比做拍電影,編程者在一定程度上就等同于攝影師。

就這樣,我使用了Sinclair QL電腦三年:從高中到赫爾辛基大學(xué),再到芬蘭部隊(duì)服役。這個電腦不錯,但我們肯定會分手。在最后的一兩年里,我發(fā)現(xiàn)了它和短處。68008是個不錯的CPU,但我在書上了解到了下一代的68020,得知了諸如內(nèi)存管理和分頁等種種功能,在使用低檔電腦進(jìn)行工作時,這種新的電腦可以完成非常重要的任務(wù)。

Sinclair QL令我討厭的地方是,它的操作系統(tǒng)雖說能進(jìn)行多重任務(wù)處理,但在任何時候都會出現(xiàn)死機(jī),因?yàn)樗鼪]有保存措施。只要一個任務(wù)出現(xiàn)差錯,就能讓整個機(jī)子死機(jī)。Sinclair QL是克里夫·辛克萊爾爵士最后一次設(shè)計(jì)和制造的電腦,原因之一是這種電腦在商業(yè)上并不成功。它的技術(shù)非常有意思,但公司卻存在著生產(chǎn)問題和質(zhì)量保證問題,而且最終宣傳上也很失敗。此外,市場競爭也開始變得越來越激烈。

到了八十年代末期,你便開始想象,或許有那么一天,大街上的每一個人都可能擁有一臺電腦,哪怕只是進(jìn)行簡單的文字處理。而且種種跡象表明,發(fā)展方向是PC機(jī)。不錯,IBM最早制造的PC機(jī)盡管有許許多多的技術(shù)問題,但卻開始擺滿了商店的貨架,銷售得極為成功。PC機(jī)的另一個吸引人的地方是:外圍設(shè)備非常標(biāo)準(zhǔn),而且很容易就能搞到。

所有關(guān)于這種較新的CPU的文章我都閱讀,它可以完成我想完成的任何任務(wù)。顯而易見,看上去非常有意思的68020發(fā)展前景不佳。我完全可以為QL買一個升級的CPU。在那個年代,這便意味著重新組裝一臺機(jī)器。盡管如此,操作系統(tǒng)還是沒有內(nèi)內(nèi)存管理,所以我不得不自己編寫。于是我想:這將是很費(fèi)力的一步,而且獲得一個CPU過于昂貴。

此外,令我越發(fā)感到頭疼的是:為電腦購買設(shè)備的問題依舊存在。Sinclair QL電腦的產(chǎn)品目錄似乎根本就沒有過,所以你不可能簡單地抄起電話,像定購西爾斯百貨商店的郵購商品那樣定購內(nèi)存設(shè)備。再說,通過郵局從英國訂貨的做法已經(jīng)過時了。當(dāng)時還沒有用收縮封套包裝的軟件盤,這我倒不在乎,因?yàn)槲叶寄茏约壕帉憽?/p>

這個頭疼的問題卻給我?guī)砹艘粋€好處。在我琢磨著把我的機(jī)器處理掉時,也決定把我的附加設(shè)備賣掉。我指的是我買的硬盤驅(qū)動器,因?yàn)橐獢U(kuò)展內(nèi)存,我一分鐘也不能忍受了。當(dāng)時沒有人在大街上到處找這種東西,所以我只能在電腦雜志上登廣告,然后就祈禱等待著。就這樣,我認(rèn)識了我的好朋友喬科·維亞魯馬奇(Jouko Vierumaki)。在整個芬蘭,他大概是第二個擁有Sinclair QL電腦的人。他對我的廣告做出了回應(yīng),騎著自行車來到我家,買走了我的一些外圍設(shè)備。后來,他也讓我學(xué)著打斯諾克臺球。

 

2、上大學(xué)

我在上大學(xué)的第一年,住在彼得蓋坦街,我的宿舍在一層,靠窗戶的一張桌子上就擺著Sinclair QL電腦。但我沒有編寫多少程序,原因之一是我必須集中精力讀書,原因之二是我也找不到什么項(xiàng)目去做。沒有項(xiàng)目可做就會缺乏熱情。你總是在尋找能夠讓你鼓起勁去做的事情。

當(dāng)時似乎是參軍的好時光,而且我也知道那是早晚的事。我當(dāng)時十九歲,正因?yàn)樽约旱碾娔X毛病太多而心情沮喪。而且,當(dāng)時也沒有任何有意思的電腦項(xiàng)目,于是我就搭上了一輛開往拉普蘭的火車。

前面我已經(jīng)說過,關(guān)于軍隊(duì)在體力方面會對我們做出什么樣的要求我是一無所知的。所以在那里手執(zhí)武器上了一個月的“體育課”之后,我便覺得在我有生之年完全有資格從此一動不動,享受平靜的生活了。惟一可做的事情就是把編碼打入鍵盤,或者手里端著一瓶比爾森啤酒(說真的,在我復(fù)員整整十年后,才第一次參加一次劇烈的活動。當(dāng)時大衛(wèi)硬拉著我去沖浪。舊金山半月灣的強(qiáng)大海浪差點(diǎn)沒把我淹死,我的腿一連酸了好幾天)。

部隊(duì)服役結(jié)束于

剛一離開部隊(duì)就想弄只貓。

復(fù)員的幾個星期前,我一個朋友的貓下了一窩崽,于是我把他剩下的唯一一只小貓買了下來。那是只白色的公貓,長得很漂亮。它生下來的頭幾個禮拜就在室外跑來跑去,所以在我媽媽公寓的室內(nèi)和室外養(yǎng)活起來都很容易。我給它起了個名字,叫蘭迪。它現(xiàn)在已經(jīng)十歲了,和它的主人一樣完全適應(yīng)了加利福尼亞的生活方式。

那年整個夏天我沒有干什么正事。我大學(xué)二年級的課程直到秋天才開始。我的電腦狀態(tài)也很不佳。于是我就穿著一件破舊的睡衣,逗蘭迪玩,偶爾和朋友們聯(lián)歡會,讓他們笑話我的保齡球和臺球的拙劣技術(shù)。當(dāng)然,我對我的下一部電腦也做了一些設(shè)想。

我面臨的是一個電腦迷的困境。

我同其他隨著68008芯片一起長大的電腦迷一樣,特別討厭PC機(jī)。但在1986年386芯片出臺后,PC突然看上去有了魅力,凡是68020能做的事情它們都能做。到了1990年,大規(guī)模的生產(chǎn)使這種機(jī)器的價格急劇下跌。我對錢很在乎,因?yàn)槲沂洲讚?jù)。于是我就希望擁有一臺這樣的電腦。正因?yàn)镻C非常紅火,升級材料和裝置很容易就能弄到。在硬件方面,我特別希望有一臺標(biāo)準(zhǔn)的機(jī)器。

我決定來個大跳躍,超越界限,而且弄一個新的CPU這事的確讓人興奮。于是我便開始把我的Sinclair QL的零件一點(diǎn)點(diǎn)地賣掉。

每個人都會一本改變其一生的書籍,比如《圣經(jīng)》、《資本論》、《星期二和莫瑞在一起》、《我想知道我在幼兒園里學(xué)到的一切》等等(我真誠地希望,在你讀過了本書序言和我的關(guān)于生命意義的理論之后,這本書也能對你產(chǎn)生影響)。把我推向生命高峰的是安德魯·S·塔南鮑姆(Andrew S. Tanenbaum)寫的《操作系統(tǒng):設(shè)計(jì)和執(zhí)行》。

我已經(jīng)選好我的秋季課程,其中最讓我期待的是C程序語言和UNIX操作系統(tǒng)。在等待著上課期間,我還買了一本上面提到的教科書,希望能先讀一下。在這本書中,住在阿姆斯特丹的大學(xué)教授安德魯·塔南鮑姆討論了MINIX,那是他為UNIX撰寫的教學(xué)輔助軟件。MINIX也是UNIX的小型翻版。一旦讀完了介紹,了解到UNIX背后的理念以及那個強(qiáng)大、利索、漂亮的操作系統(tǒng)所能做到的事情后,我便決定弄一臺機(jī)器來操作UNIX。我將操作MINIX,那是我所能找到的惟一版本。

通過閱讀和對UNIX的了解愈來愈深,我的熱情高漲起來。

說實(shí)施,我的熱情從來沒有低落過(我希望你在做某件事時也能說出同樣的話)。

 

3、從UNIX開始

赫爾辛基大學(xué)第一次擁有UNIX是在1990年秋季開學(xué)的時候。

那個強(qiáng)大的操作系統(tǒng)是美國電話電報公司的貝爾實(shí)驗(yàn)室于六十年代發(fā)明的,然而它的開發(fā)卻是在別的地方。前一年,也就是我上大學(xué)的第一年,我們有一臺操作VMS的VAX。這個操作系統(tǒng)糟糕透頂,你決不會說出:“嘿,我在農(nóng)時也想裝一個VAM”這樣的話,它只能讓你說:“你怎么會使用這個破玩意?”它用起來極不方便,沒有多少工具,也不適合輕松容易地進(jìn)入因特網(wǎng),而因特網(wǎng)是在UNIX上面操作的。你甚至都無法輕易地估算出文件到底有多大。坦白地說,VAM可能很適合某些操作,比如數(shù)據(jù)庫。但這種操作系統(tǒng)無法讓你為之感到興奮。

赫爾辛基大學(xué)當(dāng)時意識到應(yīng)該淘汰諸如VMS類的軟件。學(xué)術(shù)界已經(jīng)對UNIX產(chǎn)生了越來越大的興趣,于是我所在的大學(xué)購買了一臺操作Ultrix的微型VAX,Ultrix是DEC公司生產(chǎn)的一種UNIX版本。

我特別渴望操作UNIX,將我從安德魯·塔南鮑姆書上所學(xué)到的東西進(jìn)行試驗(yàn)。要是我有一臺386,它肯定會對我能進(jìn)行的一切探索感到興奮不已。但是,我無法湊齊一萬八千芬蘭馬克買一臺386。我知道一旦秋季學(xué)期開始后,我就能使用我的Sinclair QL進(jìn)入大學(xué)新的UNIX電腦,直到我自己湊齊了錢買一臺PC機(jī),再在上面操作UNIX。

因此,那年夏天我做了兩件事。第一件是什么都沒做。第二件事是讀完了七百一十九頁的《操作系統(tǒng):設(shè)計(jì)和執(zhí)行》。那本紅色的簡裝本教科書差不多等于睡在了我的床上。

赫爾辛基大學(xué)為微型VAX電腦購買了十六個客戶執(zhí)照。這意味著“C語言和UNIX”課程的選修學(xué)生人數(shù)被控制在了三十二名--我想學(xué)校的想法是十六個學(xué)生白天使用機(jī)器,另外十六個學(xué)生晚上使用。教師和我們一樣,對UNIX也不太熟悉。他對此公開承認(rèn),因此也沒構(gòu)成什么問題。但他每次都比學(xué)生先讀一個章節(jié)。有時學(xué)生也會提前跳讀三個章節(jié),因而上課成了一種游戲,學(xué)生們問的問題都是在三個章節(jié)之后才能學(xué)到的,目的是為了難住教師,看他是否已經(jīng)讀了那么多。

我們在UNIX的大世界中都是嬰兒,一邊學(xué)習(xí)一邊完善這門課程。然而關(guān)于這門課最明顯的是,在UNIX背后有一個非常獨(dú)特的理念。你在這門課的第一個小時就抓住了這一點(diǎn),剩下來就是解釋細(xì)節(jié)了。

UNIX的獨(dú)到之處在于它所追求的基本理想。它是一個干凈利索、非常漂亮的操作系統(tǒng)。UNIX具有程序的觀點(diǎn),凡是做任何事情都是一個過程。這里有一個簡單的例子。shell command是為進(jìn)入操作系統(tǒng)而鍵入的一種指令,在UNIX中,它并不像在DOS中似的被裝在操作系統(tǒng)里。它只是一個任務(wù),同其他的任務(wù)相同。這個任務(wù)是從你的鍵盤中讀出的,然后再寫回到顯示器。任何能做的事情的東西在UNIX里面都是一個程序,此外還有文件。

吸引我的就是這個簡單的設(shè)計(jì),它也吸引著大多數(shù)對UNIX感興趣的人(至少對我們電腦迷們頗有吸引力)。你在UNIX上完成的大部分任務(wù)都是通過六個基本操作完成的,它們被稱作“系統(tǒng)呼叫”(system call),因?yàn)樗鼈兪悄銓Σ僮飨到y(tǒng)的呼叫,你便讓它為你完成任務(wù)。通過這六個基本的系統(tǒng)呼叫,任何事情你都可以完成。

此外還有“創(chuàng)建子進(jìn)程”(fork)的概念,它是UNIX的基本操作之一。當(dāng)一個程序創(chuàng)建子進(jìn)程時,它便把自身完全復(fù)制出來。這樣你就有了兩個相同的拷貝。復(fù)制拷貝多數(shù)情況下再去執(zhí)行另一個程序--用一個新項(xiàng)目替換自己。這便是第二個基本操作。其他四個基本系統(tǒng)呼叫--打開、關(guān)閉、讀和寫--都是為了訪問文件的。這六個系統(tǒng)呼叫便組成了UNIX的簡單操作。

當(dāng)然,從細(xì)節(jié)方面講,還有數(shù)不清的其他系統(tǒng)呼叫。然而一旦你明白了這六個基本系統(tǒng)呼叫,你就了UNIX。UNIX的好處之一是,你并不需要擁有復(fù)雜的連接去創(chuàng)立復(fù)雜的事物。你可以通過簡單事情的互動來建立任何程度的復(fù)雜任務(wù)。你只需在簡單的程序之間創(chuàng)造出交流渠道,在UNIX中叫做“管道”(pipes),就能解決復(fù)雜的問題。

一個差勁的系統(tǒng)在做任何你想做的事情時都需要有特殊的連接。UNIX則恰相反。它提供給你執(zhí)行任務(wù)的材料,這些材料足以讓你完成任何事情。這就是所謂的干凈利索的設(shè)計(jì)。

語言其實(shí)也是如此。英語有二十六個字母,你可以用這些字母創(chuàng)造出任何單字。另一種語言是漢語。在漢語中,你所想到的任何一件事都由一個字來代替。你一開始用的就是復(fù)雜的形態(tài),然后在有限的方式中將復(fù)雜的形態(tài)組合起來。VMS的大體上也是這種思路,Windows的方法也是如此。

而UNIX的理念是越小越漂亮。一小堆簡單基本的建筑材料,結(jié)合起來就能創(chuàng)造出無限的復(fù)雜表述。

物理的規(guī)則亦是如此。你努力找出基本的規(guī)則,而這些規(guī)則都是相對簡單的。從那些簡單的規(guī)則中,通過相互作用產(chǎn)生令人不可思議的復(fù)雜性。

那種簡單的設(shè)計(jì)并非是自然產(chǎn)生的。UNIX是美國電報電話公司貝爾實(shí)驗(yàn)室的丹尼斯·里奇(Dennis Richie)和肯·湯普森(Ken Thompson)花了很大力氣設(shè)計(jì)完成的。你也不能認(rèn)為簡單就是容易。簡單需要特別的設(shè)計(jì)和很高的品味。

讓我們再回到人類語言的例子上。像圖畫似的中國象形文字是最先產(chǎn)生的,然后再追求“簡化”。而建筑材料似的做法則需要更多的抽象思維。同樣,你不能將UNIX的簡潔同上不了檔次混淆起來--事情正好相反。

但這并不是說,創(chuàng)造UNIX的最初原因有多么復(fù)雜。它和計(jì)算機(jī)的許多其他事情一樣,都是以游戲開始的。最初有人想在等離子顯示器上玩電腦游戲,那就是UNIX發(fā)展起來的原因。正因?yàn)楫?dāng)時人們覺得這個操作系統(tǒng)不是一個嚴(yán)肅的項(xiàng)目,美國電話電報公司才認(rèn)為它并非是商業(yè)上的冒險嘗試。事實(shí)上,美國電話電報公司的壟斷受到制約,對其限制之一是不能推銷電子計(jì)算機(jī)。所以創(chuàng)造UNIX的人有很大的,尤其在為大學(xué)服務(wù)方面沒遇到什么阻礙。

于是乎,UNIX在學(xué)術(shù)界就演變成了一個大項(xiàng)目。到1984年美國電報電話公司分家后,它已被允許進(jìn)入電腦業(yè),那時大學(xué)里的計(jì)算機(jī)專家們--尤其是加州大學(xué)伯克利分校的專家們--已經(jīng)在比爾·喬(Bill Joy)和馬歇爾·克拉克·邁克庫塞克(Marshall Kirk McKusid)的指導(dǎo)下,把開發(fā)和改進(jìn)UNIX的工作進(jìn)行了許多年了。

但到了1996年初,UNIX已經(jīng)成為所有超級計(jì)算機(jī)和服務(wù)器的頭號操作系統(tǒng)。它的市場非常大。但當(dāng)時的問題之一是,已經(jīng)出現(xiàn)了數(shù)不清的操作系統(tǒng)的競爭版本。有一些是從控制得比較嚴(yán)密的美國電報電話公司代碼庫里創(chuàng)造出來的(即所謂的“V系統(tǒng)”),另一些人則是從加州大學(xué)伯克利分校的代碼庫衍生而來(即BSD--伯克利軟件分布),還有的則是這兩者的結(jié)合體。

其中一個BSD的衍生版本特別值得一提。那是386BSD項(xiàng)目,是比爾·喬利茲(Bill Jolitz)在代碼庫的基礎(chǔ)上做成的,分布在因特網(wǎng)上。后來它又進(jìn)一步分裂,成為人人都可以獲得的BSD--Net BSD,F(xiàn)ree BSD和Open BSD,在使用UNIX的群體中引起廣泛的注意。

于是美國電報電話公司突然覺醒了,將加州大學(xué)伯克利分校告上了法庭。最初的代碼是電報電話公司的,但絕大多數(shù)后期工作都是在伯克利完成的。加州大學(xué)的校務(wù)委員們聲稱他們有權(quán)傳播和銷售他們的UNIX版本,而且還可收取象征性的費(fèi)用。而且他們還向人證明,他們已為此做了大量工作,基本上把電報電話公司的軟件進(jìn)行了重寫。官司的結(jié)果是,Novell公司從電話電報公司買斷了UNIX,一部分體系不得不從電報電話公司中分離出去。

同時,那場無休止的官司卻讓一個兒童贏得了一些時間,使自己成熟和發(fā)展起來。具體地說,linux獲得了時間去占領(lǐng)市場。我自己走在了我的前面。

坦白地講,在使用UNIX的人當(dāng)中,有許多是幾乎發(fā)瘋的人。他們不是集郵瘋子,不是把鄰居的狗毒死的瘋子,而是一些生活方式很另類的人。

別忘了,UNIX最初的主要發(fā)展是在六十年代和七十年代,我當(dāng)時正在祖父公寓里的一個洗衣筐子里睡覺。當(dāng)時正是美國嬉皮士的時代,而那些人也都懂技術(shù)。有關(guān)UNIX應(yīng)共享的理念和當(dāng)時的社會環(huán)境有關(guān),而并不應(yīng)簡單地歸功于其開放源代碼的系統(tǒng)本身。那是一個了各種理想的時代。革命、解放、自由愛情(自由愛情我可沒趕上,即使趕上也不知該怎么做)……于是UNIX的相對開放性對這類人就特別有吸引力,盡管在當(dāng)時它還缺乏商業(yè)上的價值。

我第一次了解到UNIX可開發(fā)性的一面大概是1991年前后,當(dāng)時拉爾斯·沃茲尼亞斯(Lars Wizenius)拉著我去赫爾辛基理工大學(xué)參加一個集會。人人都知道,這所大學(xué)根本不在赫爾辛基,而是在城市邊界線以外的艾斯普。學(xué)校的人想和豪華的赫爾辛基聯(lián)系起來,哪怕只是在名義上。當(dāng)時的演講者是理查德·斯多曼(Richard Stallman)。

此人是自由軟件的鼓吹者。

1983年,他開始研究UNIX的一個替代物,將其稱作GNU系統(tǒng),其含義是“GUN不是UNIX”(GUN是“GUN is Not UNIX”的字首縮略語--譯注)。這些只有在電腦界內(nèi)部開的玩笑,常人是很難聽懂的。電腦迷之間流傳的文學(xué)游戲?qū)嵲谑菙?shù)都數(shù)不清。

更重要的是,RMS(理查德·斯多曼希望別人這樣稱呼他)還撰寫了《自由軟件宣言》和自由軟件產(chǎn)權(quán)證書,即GPL。他首先提出的關(guān)于開放源代碼的概念完全是有意的,而并非出于偶然,和UNIX最初的開放發(fā)展理念是相吻合的。

我得承認(rèn),我對社會政治方面的問題了解得不多,而這些問題過去和現(xiàn)在對RMS都非常重要。我對他所創(chuàng)立的開放軟件基金會的宗旨也知之甚少。事實(shí)是,我對1991年人們談?wù)摰脑掝}也沒有多少記憶,這說明當(dāng)時它對我的生活并沒有產(chǎn)生多大的影響。我當(dāng)時所關(guān)心的是技術(shù),而不是政治--我們家里的政治已經(jīng)夠多的了。但拉爾斯是個思想理論家,于是我便跟在他身后去聽聽。

我在生活中第一次見到了典型的留著長發(fā)、蓄著長胡子的黑客形象,其代表就是理查德。這樣的人在赫爾辛基為數(shù)不多。

我當(dāng)時可能沒有看到眼前的光芒,但我猜他說的一些話也多少給了我一些鍰。畢竟,我后來為linux使用的就是GPL。就這樣,我再一次走在了自己的前面。

 

4、第一臺386和終端仿真

在我的日歷上,圣誕節(jié)和我的二十一歲生日是兩個最重要的能讓我得到金錢的日子,而這一天是這兩個日子之后商店開門的第一天。

我手里攥著在圣誕節(jié)和生日得到的錢,做出了一個重大的財政決定:準(zhǔn)備買一臺價格一萬八千芬蘭馬克的計(jì)算機(jī)。這差不多等于三千五百美元。我沒有這么多錢,所以打算首付三分之一,剩下的用賒賬方式來付。其實(shí)那種電腦的價格是一萬五千芬蘭馬克,其余的三千馬克稅款可在三年之內(nèi)付清。

我去的是一家小店,也就是那種夫妻店,只是我去的這家只有丈夫,沒有妻子。我對生產(chǎn)廠商不太在乎,所以決定買一臺雜牌的,裝在一個白色大箱子里的電腦。老板把一張價格表遞給你,上面有你想要的CPU、價格以及硬盤的大小。我想要大功率的。我希望內(nèi)存是4兆,而不是2兆。我希望我的CPU是33兆赫的,當(dāng)然,要是16兆赫也能湊合。不,我要買就買最好的。

我把自己希望的規(guī)格告訴他們,他們就給你組裝好。如今在因特網(wǎng)和快遞的年代,這聽起來似乎很怪。三天以后你去提貨,但那三天就像過了一個禮拜。

這臺電腦不僅是雜牌,而且其貌不揚(yáng)。它的顏色灰蒙蒙的。我買這臺電腦并不是因?yàn)樗瓷先ズ芸帷K臉幼訕O不好看,有一個

這臺電腦有一個DOS操作系統(tǒng)。我想使用UNIX的變體MINIX,所以我訂了貨,然而這個操作系統(tǒng)需要等一個多月的時間才能到達(dá)芬蘭。當(dāng)然,你也可以在一家電腦商店買一本關(guān)于MINIX的書,但人們對這種操作系統(tǒng)的需求非常之少,所以你必須事先向書店訂購。操作系統(tǒng)的價格是一百六十九美元,再加上稅,還有別的什么費(fèi)用。當(dāng)時我覺得這簡直太不可思議了。坦白地說,我今天仍舊這樣認(rèn)為。當(dāng)時那一個月讓我覺得就像度過了六年。在我等待買我的PC機(jī)時,也沒有經(jīng)受過那樣大的煩躁不安。

當(dāng)時正值隆冬。你若從寢室里出來,就可能會遇到被老太太們撞倒在雪地上的危險。這些老太太們實(shí)在應(yīng)該呆在家里為她們的家人煮煮白菜湯,或一邊織毛衣一邊在電視上看冰球,而不是應(yīng)該出來趔趔趄趄地瞎溜達(dá)。

那個月里,我基本上是在用新電腦玩“普魯士王子”游戲。不玩時就看書,以便弄明白我買的電腦的功能。

MINIX軟件終于在一個星期五的下午到了,當(dāng)天晚上我便將其裝了上去。你得用十六張軟盤才能把這個軟件裝入計(jì)算機(jī)。然后整個周末就都花在了熟悉這個新系統(tǒng)上。我學(xué)會了這個操作系統(tǒng)的好的一面,但更重要的是,也了解到了我不喜歡的一面。我從大學(xué)的電腦上把我熟悉的程序下載下來,來彌補(bǔ)它的不足之處。總之,我用了將近一個月左右的時間,才使這個系統(tǒng)完全變成了我自己需要的系統(tǒng)。

住在阿姆斯特丹的、撰寫MINIX的安德魯·塔南鮑姆想把這個操作系統(tǒng)作為教學(xué)工具,于是在一些不利的方面它都被故意損壞了。MINIX也得到了一些改進(jìn),最出名的一個改進(jìn)是一個叫布魯斯·伊文斯(Bruce Evans)的澳大利亞人進(jìn)行的,他使用的是MINIX386。他的改進(jìn)使MINIX在386上運(yùn)行起來更方便。在我購買這臺電腦之前,我就一直在網(wǎng)上跟蹤MINIX的消息,所以從一開始我就想使用它的升級版。但是,你不得不買MINIX的正版,然后再做大量的工作,引入伊文斯的改進(jìn)--這是工作的主要任務(wù)之一。

MINIX有一些性能令我很不滿意,其中最大的失望是終端仿真(terminal emulation)。仿真很重要,因?yàn)槲抑荒芤蕾囘@個程序,才能讓我家里的電腦模仿大學(xué)的電腦。每當(dāng)我撥電話接通大學(xué)的電腦,使用強(qiáng)大的UNIX工作或僅僅是上網(wǎng)時,都使用終端仿真程序。

于是我開始做一個項(xiàng)目,制作自己的終端仿真程序。我不想在MINIX底下做這個項(xiàng)目,而是想在硬件水平上完成它。這個終端仿真項(xiàng)目也是一個很好的機(jī)會,可以讓我了解386硬件的工作性能。我前面已經(jīng)說過,這時正值赫爾辛基的冬天。我的電腦又笨又大。這個項(xiàng)目最重要的部分就是悟出這臺機(jī)器都能做些什么,并從中獲得樂趣。

我不得不從BIOS開始,BIOS是計(jì)算機(jī)啟動的早期ROM編碼。它可讀軟盤和硬盤。所以這次我在軟盤上操作。它讀出軟盤的一個扇區(qū)并跳到那里。這是我的第一臺PC,我不得不學(xué)著如何進(jìn)行這種操作。386是以“常規(guī)模式”啟動的。但為了充分利用全部的CPU和進(jìn)入32比特模式,你只得進(jìn)入“保護(hù)模式”。在此之前,你得進(jìn)行大量的復(fù)雜的測試。

為了制作仿真程序,你需要了解CPU是怎樣工作的。其實(shí),我用匯編語言收發(fā)室的部分原因就是為了了解CPU。其他你還需要了解的事情包括:怎樣寫入顯示器,怎樣讀鍵盤輸入,怎樣讀寫調(diào)制解調(diào)器--但愿我的這些文字不會把非電腦迷們嚇跑。

我想出兩條獨(dú)立的線程。一條線程從調(diào)制解調(diào)器讀出,然后在顯示器上顯示。另一條線程從鍵盤上讀出,然后寫入調(diào)制解調(diào)器,這樣就會在兩條線程上運(yùn)行著兩條管道。這叫做任務(wù)轉(zhuǎn)換,386有支持這一程度的硬件。

我寫的最早的試驗(yàn)程序是使用一個線程將字母A寫到顯示器上。另一個線程寫B(tài)。我知道,這聽起來沒有什么奇怪的。我把此編入程序,讓其在一秒鐘之內(nèi)出現(xiàn)若干次。在定時器的幫助下,我使這個程序這樣運(yùn)轉(zhuǎn):顯示器上先出現(xiàn)一連串的字母A,然后突然之間,轉(zhuǎn)變成一連串的字母B。從實(shí)際的角度看,這是一個完全沒有任何用處的練習(xí)。但卻是一個很好的方式,顯示出我的任務(wù)轉(zhuǎn)換是可行的。做到這一點(diǎn)大約花了我一個月左右的時間,因?yàn)槲冶仨氁贿呑鲆贿厡W(xué)習(xí)。

于是,最終我便能改變由一連串A和一連串B組成的兩個線程,從而使數(shù)據(jù)一個讀自調(diào)制解調(diào)器,再寫入顯示器,另一個讀自鍵盤,再寫入調(diào)制解調(diào)器。我有了自己的終端仿真程序。

每當(dāng)我想讀新聞,我就運(yùn)行自己的程序。我把自己的軟盤插進(jìn),重新啟動機(jī)器,就能從大學(xué)的計(jì)算機(jī)里讀新聞了。倘若我想改進(jìn)終端仿真組合程序,我就啟動MINIX,用它進(jìn)行編程。

對此我感到非常驕傲。

對于我的了不起的個人成就,薩拉是了解的。我顯示給她看,她盯著顯示器看了大約五秒鐘,看著上面是一串A和一串B,說了聲“很好”,便沒什么感覺地走開了。我意識到我的成績看上去并不輝煌。它雖然看上去平平,背后卻包含了大量的工作,猶如你指給人看你鋪設(shè)了一條長長的柏油馬路,但想向別人解釋這條馬路的意義是完全不可能的。另一個目睹我成績的人大概是拉爾斯--另一個講瑞典的學(xué)生,他和我同一年主修的計(jì)算機(jī)專業(yè)。

當(dāng)時是三月,也可能是四月,就算彼得蓋坦街上的白雪已經(jīng)化成了雪泥我也不知道。不過我也并不關(guān)心。大部分時間我都穿著睡衣,趴在我相貌平平的計(jì)算機(jī)前。窗戶上的窗簾遮得嚴(yán)嚴(yán)密密,把我和陽光--更不用說外部世界--隔離開來。我每月都要為新電腦付款,預(yù)計(jì)在三年之內(nèi)付清。當(dāng)時我不知道的是,我的款項(xiàng)在第二年的就不用再付了。那時我已經(jīng)寫出了linux,它將被許多人見到,而不僅僅只是薩拉和拉爾斯。當(dāng)時,現(xiàn)在跟我一起在Transmeta公司工作的彼德·安文(Peter Anvin),為了幫我償付我的電腦錢,開始在因特網(wǎng)上為我募捐。

錢就這樣來了。別人都知道linux并沒有讓我獲利,于是人們便覺得,讓我們大家湊點(diǎn)錢,替李納斯把電腦錢還清。

這實(shí)在太好了。

我實(shí)在是沒有錢。我一向認(rèn)為不應(yīng)該向別人要錢或乞求錢,這一點(diǎn)非常重要,但事實(shí)上我卻得到了錢,所以……讓我激動得無話可說。

linux操作系統(tǒng)就是這樣開始的。

我的實(shí)驗(yàn)程序變成了終端仿真組合程序。

 

《熏鯡》雜志將我派往芬蘭,去采寫報道奧盧的文章。奧盧是一個新崛起的高科技中心,雖然它的位置十分可怕:離北極圈開車只有幾個小時的距離,里面卻有一百四十一家新成立的公司。這是一次極好的機(jī)會,我可以在赫爾辛基見到李納斯的父母和他的妹妹薩拉。

李納斯父親尼爾斯的綽號叫尼基,他在赫爾辛基火車站廣場對面一家飯店的大堂里見到我,飯店的名字叫瓦庫那。他身材瘦長,戴著厚厚的眼鏡,留著列寧式的胡子。他剛剛結(jié)束了芬蘭新聞社派他在莫斯科長達(dá)十年的工作,目前正在寫一本關(guān)于俄國的書,并正在考慮是否去華盛頓任職。他覺得那個地方?jīng)]有什么意思。幾個月前,他榮獲了著名的全國新聞獎,他的前妻安娜后來說那個獎項(xiàng)“使他變得溫和了許多”。

黃昏時分,他開著他的沃爾沃S70轎車,拉著我去看被白雪覆蓋的、李納斯成長的地方。他指給我看一幢結(jié)實(shí)的建筑物,說那是父子倆都曾就讀過的小學(xué)。然后我們又驅(qū)車路過了李納斯生下來后度過的最初三個月的他祖父母的公寓,接著又來到了那棟俯瞰花園的樓房,他們?nèi)以谀抢镞^了七年。其中的一年尼基曾前往莫斯科,成為一名共產(chǎn)主義者。當(dāng)時李納斯五歲。而后他又指給我看那座黃色的建筑物,尼基與安娜離婚后,李納斯和他妹妹就住在那里。李納斯年輕時的電子商店已經(jīng)不存在,在街頭原來的地方現(xiàn)在是一座成人錄影帶小鋪。最后我們驅(qū)車路過了最重要的一幢物,即五層樓高的李納斯外祖父母居住的公寓,也就是linux系統(tǒng)的誕生地。安娜至今仍住在那里。它看上去就像是十二月底曼哈頓的東區(qū)。

尼基很滑稽,又聰明,善于自嘲,而且許多動作和他兒子一樣,比如在說話時喜歡用一只手握住自己的下巴。他們倆笑起來也很相似。然而這位社會主義的忠實(shí)信徒和他兒子不同的是,他終生熱愛體育。他在籃球隊(duì)打球,天天跑

我們在赫爾辛基市中心的一家擁擠的餐廳里吃晚飯,尼基談起了李納斯作為一個激進(jìn)的共產(chǎn)黨人的兒子成長起來所面臨的困難。他說他自己常常出外演講,一度還做過一個小官。他說李納斯由于父親的激進(jìn)政治觀點(diǎn),常常受到同學(xué)們的挪揄,有些父母甚至不讓他們的孩子和他一起玩。正因?yàn)槿绱耍峄忉屨f,李納斯的童年生活雖然被左傾的政治思想所包圍,他卻努力使自己從這種氛圍中脫離開來。尼基說:“他不讓我談?wù)撐业挠^點(diǎn),我一開口講他就會離開房間。要么他說話時就總跟我對著干。我知道,由于他有這樣一個父親,在學(xué)校里總是受到嘲弄。他對我的態(tài)度是:‘別讓我陷入這種尷尬的境地。’”

尼基把帶到他家,他說我們可以在他的廚房里喝兩杯啤酒。他的家坐落在中央商業(yè)區(qū)的北部,那里一排排的樓房是二十年代為工人階層建造的。我們爬上樓梯到了他的公寓,在門口把鞋子脫掉。他的房間讓人回想起六十年代末期反對工業(yè)文明的景象:燈罩是用手織的籃子做的,墻上掛著第三世界的圖片,屋子的角落里還垂吊著各種植物。我們在廚房的餐桌前落座。尼基一邊斟啤酒一邊談起了他當(dāng)父親的感受:

“一個當(dāng)父母的人不應(yīng)該從他養(yǎng)育了自己孩子的角度去想問題。”他說。這時他用手機(jī)給和他同居的一個女人打電話。他說李納斯現(xiàn)在剛剛開始閱讀他多少年來一直敦促他讀的歷史書籍,但李納斯大概還從來沒有讀過他自己爺爺寫的詩歌。

我問尼基他是否對電腦程序表示過任何興趣,或讓李納斯教給他一些最基本的電腦常識。他回答說從來沒有。他說父子完全是不同的個體,而深入探究李納斯的激情就等于“侵犯他的靈魂”。看起來,他作為一個名人的父親似乎不覺得有什么讓人不舒服的地方。他獲得全國新聞獎后,有一家報紙發(fā)表了一篇關(guān)于他的小傳,其中引用他的原話說,在李納斯還很小的時候,每當(dāng)他去外面的操場接李納斯時,別的孩子就會指著他說:“瞧,那是李納斯的爸爸。”

李納斯的妹妹薩拉?托沃茲是乘火車從她的家趕過來的,她的家在一座小城市里,位于赫爾辛基以西,那里街道的牌子首先是瑞典語,其次才是芬蘭語。在那里,她買得起帶澡盆和桑拿浴的公寓,而且那里的人們在大街上講的是瑞典語,而不是芬蘭語,這讓她感到很高興。正如她本人解釋的那樣,她是少數(shù)民族中的少數(shù)民族:在少年時期,她就皈依了天主教,將自己劃歸到不到百分之十的芬蘭公民之中。她不信教的父親為此曾在幾個禮拜的時間里氣憤地不認(rèn)這個女兒。

今天她來到赫爾辛基,是實(shí)施一項(xiàng)政府資助的項(xiàng)目,給年輕人教授《教理問答》。她為人爽快樂觀,雖然已經(jīng)二十九歲,卻像一個誠懇熱心的高中生似的有著真誠的精神。她皮膚白晰,圓圓的臉,和她的哥哥有點(diǎn)相似。但顯而易見,和她哥哥相比,她更愛與人接觸。她總是不停地按手機(jī)上的號碼,給她的朋友發(fā)出信息,約他們當(dāng)天晚上見面,然后又不停地查看他們的回答。她所做的翻譯生意非常成功。

當(dāng)時是中午,薩拉帶著我去見她的母親,并一起吃午飯。在路上,她時不時停下來指給我看童年呆過的地方,比如貓園和小學(xué)。“我父母是地地道道的共產(chǎn)主義者,我們就是在這種環(huán)境下長大的,認(rèn)為蘇聯(lián)是最好的。我們還去過莫斯科,”她解釋說,“我記得最清楚的是那里的一家特大的玩具店,赫爾辛基所有的玩具店都不如那家大。”她父母在她六歲時離了婚。“我刻他們對我說,爸爸 永遠(yuǎn)搬出去住了。我當(dāng)時覺得這很好。這樣一來就不會再吵架了。其實(shí)他是去莫斯科長駐,于是我們慢慢習(xí)慣了他不在身邊。”她說。薩拉十歲時,決定搬到她父親那里去住,不再和她媽媽和哥哥一起住。她父親當(dāng)時搬到了鄰近的城市艾斯普。“這并非因?yàn)槲也幌牒蛬寢屢黄鹱 N沂遣幌牒屠罴{斯住在一起。這樣一來,除了周末,我們倆就不用吵架了。我們倆總是吵個沒完沒了。隨著我們漸漸地長大,我們倆吵的也少了。”

我們來到她媽媽位于一層的公寓。安娜?托沃茲見到我們后非常高興。她的綽號叫米基。她拒絕讓我遵循芬蘭人的習(xí)慣,把鞋子脫掉。“別傻了。我這地方本來就臟得一塌糊涂。不脫鞋子也無所謂。”她個子不高,黑頭發(fā),反應(yīng)敏感,非常機(jī)智。我們剛剛到達(dá),電話鈴就響了。一個地產(chǎn)商想讓我去年看一個空著的公寓,這樣我就可以將它描繪給米基在美國的兒子,并把房子的所有材料親自交給他,因?yàn)槔罴{斯有可能要買下這個房子,作為在赫爾辛基的臨時住所。于是我們進(jìn)入了那幢龐大的公寓樓。那個房地產(chǎn)商長得怪怪的,有點(diǎn)像《美國美人》影片中的一個人物。他讓我們在觀看房子之前,先在鞋子上套一個藍(lán)色布鞋套。過了一會兒,房地產(chǎn)商自鳴得意地說:“你們瞧這棟房子,要是你們有不希望被太陽損壞的古董的話,這里是最理想不過的了。”米基狡黠地朝我瞟了一眼,然后不無嘲諷地說:“哦,你說話真風(fēng)趣,干嗎不直說這個房子沒有陽光?”

我們又回到了她不大的廚房。米基坐在一個長方形的餐桌旁,餐桌上鋪著一張五顏六色的桌面,米基將咖啡倒入一個非常大的杯子里。她的公寓和她前夫的一樣,到處都是書籍和民間藝術(shù)品。掛著的窗簾是黑白相間的。這個公寓本來有三個臥室和一個廚房。她的孩子們搬出去后,米基便搬進(jìn)了過去由薩拉占著的最大的臥室。她后來把李納斯的臥室和她從前臥室的墻壁都拆了,創(chuàng)造出一個巨大的帶廚房的客廳。她指指一個空著的地方說:“他過去的電腦就放在那里。我想我應(yīng)該在那里掛上一個牌子什么的。你覺得呢?”她一根接一根地抽著煙,講起話來滔滔不絕,而且英語說得很漂亮,說話時幾乎沒有什么停頓。“李納斯可不是你在大街上遇到的那種笨孩子”,她說。在她臥室的墻上掛著一面巨大的蘇聯(lián)國旗。那是喬科在一次國際跳臺滑雪比賽中買的,作為禮物送給了李納斯。李納斯把它放在一個抽屜里,一放就是好幾年,但米基把它掛在了她的床頭上。

米基拿出了一個相冊,里面有一些全家的照片。有一張是李納斯兩三歲時,赤身裸體地站在海灘上。還有一張也是他,也是那個年齡,在月光下瞎跑著,地點(diǎn)是赫爾辛基附近的一所著名的城堡。另一張是他少年時代,看上去又瘦又笨。還有一張是米基,參加她父親的六十歲大壽。她指著她的姐姐和哥哥說:“她是個心理學(xué)家,在紐約。他是個核物理學(xué)家。而我,是我們家的敗家子。對不對?可我是第一個抱孫子的。”她說完又點(diǎn)起一根煙。

我們?nèi)ヒ患医袕埐畟惖牟蛷d吃中飯。薩拉又查看她的手機(jī),米基要了幾種不同的咖啡。米基回憶說,她和尼基曾爭論過是否要強(qiáng)迫李納斯放棄橡皮奶頭。他們爭論的方式很有意思:相互寫紙條,然后把紙條放在茶幾上。她們還談起了李納斯的記憶力非常之差,常常記不住別人的相貌。薩拉說:“要是你和他一起看電影,主人公本來穿一件紅色襯衫,但后來換了件黃色的,他就會問:‘這人是誰?’”他們?nèi)疫€騎自行車去瑞典野營度假,晚上就睡在擺渡船上。第一天薩拉的自行車就被人偷走了,于是不得不花錢又買了一輛新的。他們的帳篷就搭在一個懸崖上。母女倆去游泳和釣魚,李納斯就一個人呆在帳篷里讀了一整天的書。后來來了一場暴風(fēng)雨,一直睡在帳篷里的李納斯對突如其來的氣候變化竟全然不知,但正是因?yàn)樗趲づ窭铮艣]使帳篷被風(fēng)吹到波羅的海里去。

米基回憶起李納斯整天躲在他的房間里玩電腦的歲月時,不禁大笑起來。“尼基常對我說:‘把他踢出去,讓他去找個工作。’但李納斯對我不是什么負(fù)擔(dān)。他的要求不多,他所要求的一切就是他的電腦。那是他的事情,他的王國,他有權(quán)那樣做。我對他所作的事情一無所知。”

如今她和其他人一樣,對她兒子的活動非常熟悉。各種媒體不斷地尋找米基和她的家人搜集材料。有一些問題他們都轉(zhuǎn)給了李納斯,但他告訴他媽媽、爸爸和妹妹運(yùn)用他們自己的判斷力回答那些問題。可每當(dāng)他們寫好回答后,一般又都寄給李納斯,在交給記者之前都希望得到他的同意。

幾個月前,我曾給米基發(fā)過電子郵件,請求她寫點(diǎn)關(guān)于李納斯童年生活的東西,米基的回信非常長,而且寫得非常用心。她文章題目是“從一個電腦迷中培養(yǎng)出李納斯”。在文章中,她描述了對她蹣跚學(xué)步兒子的早期觀察,說在他身上看到了她父親和她哥哥身上所具有的對科學(xué)執(zhí)著的跡象。

“當(dāng)一個問題出現(xiàn)并始終困擾一個人時,你就會看到他的眼睛變得發(fā)直,他再也聽不到你在說什么,也不回答你簡單的問題,而是完全陷入眼前的問題之中,在解決方案的過程中廢寢忘食,而且從不放棄。當(dāng)然,他在日常生活中會被瑣事打斷,但事后還會繼續(xù)單槍匹馬地思索,這時你便知道他是什么樣的人了。”

她還寫了李納斯和薩拉這兩個兄妹之間的爭執(zhí)和不可調(diào)和的不一致(比如,薩拉:“我不喜歡蘑菇、豬肝之類的味道。”李納斯:“你必須喜歡。”)他倆偶爾也會流露出尊重對方的態(tài)度。“李納斯在很小的時候,有一次對我袒露出對他妹妹的佩服。他那時大概是五歲或七歲,突然嚴(yán)肅地對我說:‘你瞧,我腦子里從來沒有新的思想,我想的事都是別人先想出來的,我再把它們重新組織起來。但薩拉想的事都是別人從沒有想過的。’”

“這些回憶讓我覺得,我至今仍認(rèn)為他沒有什么‘特殊的’才華,肯定沒有在‘計(jì)算機(jī)’方面的才華--假如他沒有這方面的才華,斷然會把精力放在其他方面。在某一天或某個年代,他就會集中于應(yīng)付另一個不同的挑戰(zhàn)。我想他會的(我的意思是說,我希望他不要永遠(yuǎn)陷在linux軟件上)。因?yàn)槲艺J(rèn)為他的動力并非是‘計(jì)算機(jī)’,也決不是名聲和財富,而是誠實(shí)的好奇心和征服所面臨的困難的愿望,以及用最好的辦法去克服困難。因?yàn)槭虑榫褪侨绱耍麤Q不會后退。

“我想我已經(jīng)回答了李納斯是一個什么的孩子的問題--不錯,他是非常好養(yǎng)的。他惟一需要的就是一個挑戰(zhàn),剩下來的事情就由他自己去解決了。就像我和薩拉過去常說的,只要給他一間斗室,里面放上一臺電腦,再給他一些面條吃,他就會覺得無比幸福。

“除了……自他打小起我就一直揪著心:照他這樣怎么可能找到一個像樣的女孩?我只得再次求助于父母們屢試不爽的辦法--祈禱。你們瞧,還真靈驗(yàn)了!他是在大學(xué)教書時遇到塔芙的,她讓他在幾天之內(nèi)忘記了他的貓和他的電腦,這毋庸諱言是上天的勝利,正如其一貫獲勝那樣。

“我唯一的希望是名聲不要讓他分心太多。他的出名并沒有改變他,但他變得溫和多了,人們接近他時他也愿意和別人說話了。拒絕別人也讓他感到比較為難了。但我想讓他改變的與其說是所有媒體的喧囂,還不如說主要是由于他成為了一個丈夫和一名父親。”

顯而易見,母親和女兒都對媒體的喧囂了如指掌。Transmeta公司鄭重宣布他們的決定的第二天,我們在吃中午飯時,米基就問薩拉:“今天的報紙上有什么消息嗎?”

當(dāng)天晚上,在她去上班的路上,她讓出租汽車司機(jī)在我住在旅館門口停下,她送來了一只松木兒童椅子,讓我親自交給帕特里夏。同時還有一張一處公寓的樓層平面圖。

 

下面我談?wù)劦谝淮我娮R李納斯那出色發(fā)明的情景。

記得那是1992年上半年的一天。我騎著自行車,隨便溜達(dá)到了李納斯亂七八糟的家里。和往常一樣,我一邊看著音樂電視節(jié)目,一邊詢問李納斯有關(guān)他那操作系統(tǒng)的發(fā)展?fàn)顩r。要是平常,他會咕噥一些毫無意義的東西。這次,他卻徑直領(lǐng)著我穿過臟亂的廚房,來到他那一團(tuán)糟的房間里的電腦旁。

李納斯將用戶名和密碼輸入了電腦,接著出現(xiàn)的是command prompt命令提顯符。他展示了命令處理程序(command interpreter)的一些基本功能--但是沒什么特別的。稍許,他回過頭,臉上帶著李納斯式的微笑,問道:“看起來像DOS,是嗎?”

我點(diǎn)點(diǎn)頭。我一點(diǎn)也不吃驚,因?yàn)槟强雌饋碚娴南馜OS--沒什么新意,真的。我真該知道,如果不是有什么特別的話,李納斯絕不會那么笑。他轉(zhuǎn)向電腦,又敲了幾個功能鍵--出現(xiàn)了另一個登錄屏,一個嶄新的登錄屏和嶄新的命令提顯符。李納斯給我看了四個不同的提顯符,告訴我這四個命令提顯符可由四名不同的用戶使用。

就在那時,我知道李納斯創(chuàng)造了一種奇妙的東西。毫無疑問。

喬科。沃魯馬吉

 

“對我而言,那意味著電話一直占線,沒有人能給我們打電話……后來,明信片開始從四面八方寄來。我想就是在那時,我意識到現(xiàn)實(shí)世界的人們確實(shí)在使用他所創(chuàng)造的東西。”

                                     薩拉。托沃茲ÿ


posted on 2008-03-08 23:13 七星重劍 閱讀(466) 評論(0)  編輯 收藏 引用 所屬分類: 亂七八糟
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜精品久久久久久久99热浪潮| 西西裸体人体做爰大胆久久久| 亚洲激情影院| 亚洲国产精品va在看黑人| 黄色日韩网站| 亚洲成色www久久网站| 亚洲国产高潮在线观看| 亚洲人在线视频| 99国产精品一区| 亚洲欧美日韩国产中文在线| 亚欧成人在线| 久久这里有精品视频| 欧美激情精品久久久| 亚洲美女诱惑| 亚洲综合色自拍一区| 久久国产精彩视频| 男人的天堂成人在线| 欧美精品一区二区三区很污很色的| 欧美日韩免费观看中文| 国产精品色网| 伊人成年综合电影网| 亚洲精选视频免费看| 亚洲欧美激情在线视频| 久久激情中文| 欧美激情免费观看| 一本色道久久88亚洲综合88| 性亚洲最疯狂xxxx高清| 免费国产一区二区| 国产精品久久久久久久电影| 极品少妇一区二区三区| 99re66热这里只有精品3直播| 午夜亚洲视频| 欧美成人免费网站| 日韩亚洲欧美中文三级| 欧美在线免费一级片| 欧美极品在线播放| 国产精品一区二区你懂得 | 国产日韩欧美精品在线| 亚洲高清在线精品| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 久久嫩草精品久久久精品一| 欧美激情亚洲激情| 国产视频一区欧美| 99re6这里只有精品| 久久精品欧美日韩| 亚洲精品影视| 久久免费视频在线| 国产精品视频一| 亚洲卡通欧美制服中文| 久久久91精品国产一区二区精品| 亚洲欧洲日本国产| 欧美一区影院| 欧美午夜精品伦理| 在线看视频不卡| 欧美一区二区三区四区夜夜大片| 亚洲国产精品www| 欧美中文字幕第一页| 欧美视频一区在线| 亚洲激情成人网| 久久久精品国产一区二区三区| 日韩亚洲精品电影| 蜜臀av性久久久久蜜臀aⅴ| 国产日韩欧美一区二区三区在线观看| 日韩视频免费在线观看| 久久综合中文字幕| 亚洲综合成人婷婷小说| 欧美日韩91| 亚洲电影中文字幕| 久久久免费av| 亚洲欧美日韩精品在线| 欧美午夜不卡| av成人国产| 亚洲黑丝在线| 免费欧美在线视频| 一区在线免费观看| 久久久亚洲国产天美传媒修理工| 亚洲香蕉网站| 国产精品成人观看视频免费| 日韩午夜在线观看视频| 亚洲第一页在线| 裸体丰满少妇做受久久99精品| 国产亚洲欧洲997久久综合| 午夜精品www| 一区二区欧美亚洲| 欧美日韩直播| 国产精品99久久久久久有的能看| 亚洲人成欧美中文字幕| 欧美jizzhd精品欧美喷水| 在线精品视频免费观看| 久久夜色撩人精品| 久久国产精品亚洲77777| 国产精品一区二区三区四区五区 | 亚洲尤物视频在线| 99视频+国产日韩欧美| 欧美日韩精品一二三区| 一区二区三区四区国产精品| 亚洲精品美女在线| 欧美日韩精品在线视频| 亚洲视频在线观看| 亚洲视频播放| 国产精品一区二区久久精品| 久久高清福利视频| 午夜视频久久久| 国语自产精品视频在线看8查询8| 久久夜精品va视频免费观看| 久久理论片午夜琪琪电影网| 亚洲成人在线视频网站| 亚洲国产婷婷| 欧美视频在线观看一区| 午夜精品一区二区三区四区| 亚洲欧美资源在线| 黑人中文字幕一区二区三区| 欧美成人精品一区| 欧美人与禽猛交乱配| 亚洲一区自拍| 欧美在线视频不卡| 亚洲成人中文| 亚洲巨乳在线| 国产精品久久久久久久久婷婷| 欧美一区二区在线免费播放| 久久av免费一区| 亚洲欧洲精品天堂一级| 99精品久久久| 国产日韩欧美在线一区| 美女脱光内衣内裤视频久久影院| 欧美成人精品高清在线播放| 亚洲视频你懂的| 先锋影音网一区二区| 在线免费观看一区二区三区| 亚洲国产一区在线| 国产精品欧美激情| 久久久水蜜桃| 欧美激情一区二区三区| 欧美一二三视频| 麻豆久久精品| 亚洲摸下面视频| 久久久综合网| 这里是久久伊人| 欧美在线观看www| 日韩一区二区久久| 午夜免费在线观看精品视频| 亚洲激情在线激情| 亚洲午夜av| 亚洲国内精品在线| 亚洲欧美国产精品专区久久| 亚洲国产精品一区二区第一页 | 极品尤物一区二区三区| 亚洲精品黄色| 韩日精品中文字幕| 日韩午夜视频在线观看| 激情综合色综合久久| 一本色道久久综合亚洲精品不卡| 国产在线一区二区三区四区| 亚洲精品国产拍免费91在线| 国内精品伊人久久久久av一坑| 亚洲黄色一区| 国内精品模特av私拍在线观看| 亚洲毛片在线| 亚洲第一福利视频| 亚洲尤物在线视频观看| 亚洲毛片在线| 久久天天狠狠| 欧美亚洲在线视频| 欧美日韩国产首页在线观看| 久热re这里精品视频在线6| 欧美婷婷久久| 亚洲第一中文字幕在线观看| 国产主播一区二区三区四区| 9l视频自拍蝌蚪9l视频成人| 亚洲国产欧美一区二区三区同亚洲 | 国产午夜一区二区三区| 日韩视频免费在线观看| 亚洲国产经典视频| 欧美尤物巨大精品爽| 亚洲免费在线电影| 欧美激情精品久久久久久| 久久久国产午夜精品| 欧美日韩中文字幕| 亚洲经典三级| 亚洲高清在线播放| 久久精品天堂| 久久久久久国产精品一区| 国产精品国产三级国产专区53| 91久久在线播放| 亚洲人成在线观看网站高清| 午夜精品在线| 欧美在线二区| 国产精一区二区三区| 在线视频欧美精品| 亚洲午夜精品一区二区| 欧美日韩岛国| 亚洲精品黄色| 一本色道久久综合亚洲91| 欧美国产日本韩| 亚洲二区视频在线| 亚洲麻豆视频| 欧美片在线播放| 日韩亚洲精品电影| 亚洲午夜精品网| 国产精品国产三级国产aⅴ入口|