Subscribe to RSS Subscribe to Comments Blog of Roy Chan

Blog of Roy Chan

《Rocky Balboa》(《洛奇:拳王再臨》)

說實,開始時我對這片的興趣不大。一來不是Sylvester Stallone (港譯「史泰龍」)的fans,沒有怎看過《Rambo: First Blood》(港譯「第一滴血」) 系列,《Rocky》(港譯「洛奇」) 也只在多年前在有線瞄過第四和第五集。二來心想年過六十的Stallone再出山,怕又來一套《Terminator 3》或《Basic Instinct 2》。不過看了後,發覺不錯。劇本鋪排有序,拍得亦很有心機。由76年《洛奇》第一集開始,Rocky Balboa早已和Stallone本人二合為一,30年後第六集終極出山,充份表現出Rocky和Stallone的人老心不老而絕不是他人所說只活在回憶中。兩者不折不朽的精神實值得我們借鏡。喜受Rocky對兒子的一段對白

生命並非永遠充滿光明,這個世界殘酷而陰險,隨時會把你擊得永不翻身。如果把受到的打擊通通歸罪於別人身上,那是懦夫的行為。因為最重要不是你出拳有多重,而是你能夠捱得了多重的拳。你只有在重拳的攻擊全力支撐並奮戰不懈,你才可能贏。

原文是:

The world ain’t all sunshine and rainbows. It is a very mean and nasty place and it will beat you to your knees and keep you there permanently if you let it. You, me, or nobody is gonna hit as hard as life. But it ain’t how hard you hit; it’s about how hard you can get hit, and keep moving forward. How much you can take, and keep moving forward. That’s how winning is done.

相關網頁


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Unix的歷史

這是我十多年前為TCL BBS Unix板寫的一篇關於Unix歷史的文章。事實上我只寫到三份之一就停了,不過這幾年來也偶然看到別人曾引用過這文章。近日我的舊個人網站要停了,所以把舊文貼上來作保存。

Multics 的失敗

要談 Unix 的歷史,一定要回溯到 1965-68 年美國電話及電報公司 (American Telephone and Telegraph Inc., AT&T) 、 通用電器公司 (General Electrics, G.E.) 及麻省理工學院 (Massachusetts Institute of Technology, MIT) 的 Multics (MULTiplexed Information and Computing Service) 計劃。

在那時期,大部份電腦都是採用批次處理 (Batch Processing) 方式。為了顯示多用途 (general-purpose) 及多用戶 (multiuser) 的分時系統 (timesharing system) 是可行的,MIT 以在試驗 CTSS (Compatible Time-Sharing System) 當中所得的研究成果取得了 G.E 的同意合作為 G.E. 的大型電腦 GE-635 開發一套全新的分時作業系統 - Multics 。

由於 Multics 有不少設計在當時是頗新穎具富創意的,因此吸引了不少研究機構的註意。而其中那時仍和 AT&T 同一家的貝爾實驗室 (Bell Libraries, Bell Labs) 更在六十年代末曾正式參於過 Multics 計劃,那時剛由加州柏克萊大學 (University of California at Berkeley, UCB) 去到 Bell Labs 的 Ken Thompson 就是 Multics 研究小組的一員。

不過 Multics 的發展進度很慢,原本預算兩年有成果但過了很久仍沒有多大進展。到了 1969 年, Bell Labs 終於決定放棄,退出了 Multics 計劃。 Bell Labs 的 Dennis Ritchie (K&R 的 R) 曾描述當時 Bell Labs 由管理層到研究員都認為 Multics 的開發是太遲及太貴了。

Multics 自 Bell Labs 退出後 , 仍有繼續發展。 Honeywell 在 1972 年購入了 G.E. 的電腦部門後更把 Multics 進出商業市場,但始終不算太成功。在 Multics 比較流行的八十年代,約有 75 至 100 台每台價值數百萬美元的大型電腦跑 Multics 。 1977 年, MIT 也退出 Multics 的發展工作。後來 Honeywell 在八十年代中期把其電腦上的事業賣給 Bull 後,Multics 的發展亦終於在 1988 年打上一個句號。

『角落中乏人問津的 PDP-7 』(”little-used PDP-7 in a corner”)

然而,Thompson 曾在 Multics 計劃當中為 GE-635 寫了個叫做「太空旅行」(Space Travel) 的遊戲程式。這個程式模擬 了一個太空船和太陽系的環境。 Bell Labs 放棄 Multics 後, Thompson 打算找另一台機器把「太空旅行」移植 (port) 過去,於是便和 Ritchie 向 Bell Labs 提議買一台電腦以便他們建立一台自己的交談式、多用戶、分時系統,不過他們的申請並沒有被接納。最後,Thompson 在一角落裡發現了一台很少人用的 PDP-7 (Programmed Data Processor) 。

PDP-7 是迪吉多 (Digital Equipment Corporation, DEC) 在 1964 年進出的迷你電腦 (minicomputer) 。這台約和 Commodore 64 同級的電腦的作業系統對於 Thompson 來說十分簡陋,於是 Thompson 就順帶以他在 Multics 計劃中學到的技術和經驗,為這台過時的電腦上撰寫一套新作業系統。這套作業系統有很多構想是來自 Multics ,包括樹狀結構 (tree-structured) 的檔案系統、用戶層面的命令解釋器 (Command Interpreter) ,簡單表現文字檔及對週邊設備 (Device) 的綜合化存取等。

最初,Thompson並不是在PDP-7上撰寫他的新系統,而是先在一台GE-635上使用GEMAP組譯器(Assembler)的巨集(Macros)編寫程式,再經由一後置處理器(post processor)產生可供PDP-7讀取的紙帶(paper tape)。這樣一來一回,由GE到PDP-7,直到一個雛型的核心(Kernel)、一個編輯器(Editor)、一個組譯器(Assembler)、一個簡單的Shell(命令解釋器,Command Interpreter)及一些公用程式如rm、cat、及cp等完成了,整個系統可以自給自足後,所有開發工作才在PDP-7上繼續。

而這套作業系統最初由與 Thompson 共事的 Brian W. Kernighan (K&RC中的K) 命名為 Unics (UNiplexed Information and Computing System),和Multics開了個玩笑。1971年間改成Unix,用Uni對Multi,cs對x。提起Unix的名字,很多人都疑惑正確的寫法是全大楷的「Unix」,還是只有起首大階的’Unix’。Ritchie就解釋說「UNIX」言個寫法源自1974年CACM的文件”The UNIX Time-Sharing System”,當時這班先鋒研究者剛剛得了個新的typesetter及開發了troff。一大班人正對smallcaps字款著了迷,導致了「Unix」的產生。縱使Ritchie在往多次以Unix並不是任何句子的縮寫為理由想在幾份Bell Labs的文件用回「Unix」,最後都失敗。而後來UNIX的註冊商標也是以全大寫為準。

First Edition Unix

到了 1970 年,這班 Unix 的研究者獲得配合一台新的十六位元電腦 DEC PDP-11/20,條件就是要為 Unix 加入較佳的文件處理工具。不過台電腦迅速地送到研究者的桌上後,它的磁碟足足慢了三個月才運到。就在這機在碟未到的等候時間中,Thompson 用 PDP-11 的組合語言 (Assembly Language) 重寫了整個 Unix 核心及基本的命令。當時那台 PDP-11/20 只有 24KB 記憶體 (Memory),這個最早期的 PDP-11 版 Unix 就佔用了 12KB,其餘的記憶體就被拿來跑用戶的程式和作 RAM Disk。僅有 500KB 的磁碟空間以及在毫無記憶保護(Memory Protection) 的情況下,支持三個用戶同時作編輯和格式化文件和那群先鋒開發者繼續 Unix 的發展工作。

1971年11月,這班懶惰的開發者終於把第一版 Unix 的說明書(Manual)定稿。往後每一由 Bell Labs 發展出來 Unix 的版本都以同時出版的說明文件的版號為準。如所謂 Unix Version 1 (V1) 其實就是指第一版 (First Edition) Unix 說明書所載的 Unix。所以在 Bell Labs 內部一直都稱呼 nth Edition Unix,不是外間的 Unix Version n。V1已有了基本的檔案系統、fork()、roff (troff 的前身)及 ed 等,並被用作處理專利文件的工具。而 pipe() 就在第二版 (Version 2) 中初次出現。

C 的誕生

在開發 V1 時,由於 PDP-7 和 PDP-11 的組合語言差異很大,令移植的工作非常因難。Thompson 這時突發奇想,覺得如用高階語言 (High-level Langauge) 來撰寫 Unix,移植和維>護的工作都會變得簡單得多。對於 C 語言極度盛行的今日,這想法可能不怎麼。但在當時>絕對是十分瘋狂,執行效率要高且記憶體使用要省的系統程式(System Software)必需要用>組合語言來撰寫的觀念早已根植在當時每一個電腦人心中。

Thompson 首先嘗試使用 FORTRAN 來寫,不過沒有成功。後來他找來一個叫 BCPL 的語言,在使用期間整理了 BCPL 的若干功能,成了另一個新的程式語言 B。V1 中就有少量公用程>式是用B來撰寫。後來 Ritchie 加入了 Unix 的開發行列,很快發現了 B 語言有若干缺點>,如資料型態(Data Type)的缺乏等。 Ritchie 著手改良 B 語言,誕生了著名的C語言。

1973年初,C 語言的重要特性大都完成了。在各方條件都足夠的情況下,Thompson、Ritchie及他們的同伴在同年的夏天把 Unix 的核心用 C 重寫。這也是所謂的第四版(Version 4, V4),有九成多的程式碼是用 C 來寫。在整個操作系統史上,這是一件很重要的事,也是 Unix 的轉折點。這意味著 Unix 可以很容易被修改,也使其成為第一個在源程式層面上可移值(source-portable)的操作系統,可以在很短時間移值(port)另一台的電腦中。

接下來的就沒有再寫了…… -P


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Based on Fluidity© 1998-2007 Roy Hiu-yeung Chan