Subscribe to RSS Subscribe to Comments Blog of Roy Chan

Blog of Roy Chan

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]


談何容易

於戲!可乎哉?可乎哉?談何容易!夫談有悖于目、拂于耳、謬于心而便于身者;或有說于目、順于耳、快于心而毀于行者。非有明王聖主,孰能聽之?

《漢書》 卷六十五 東方朔傳第三十五 非有先生


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


繁與簡

適逢Deki的blog在討論簡繁問題,我也插一句口。有趣的是早前在 HKLUG 春茗,我們也討論過有關簡繁問題。事源在講及香港教育問題是就被Leo Hau扯上香港是否應該改用簡體字的問題。當日出席者不算多,不過大部份都對這個問題持保留態度。一方面大部份人都覺得要看簡體中文的書籍或文件仍不算太大問題。而我亦很顧慮現時師資是否能應付這種轉變。 要知現時香港很多所謂教師連中英都有太多問題,何況多了門簡體字,我不想 HKSCS 以後要增加些不繁不簡的異體中文字。(說起上來,我也聽過不少華人到日本進修日語時,在漢字方面反而碰了不少釘子)

說實,對這個飲繁體字大的人 (我入學時已移民來了香港) ,要下一代全用簡體字,總是不太會想得通。主因我對現時國內的簡體方案有很大疑問。有關疑問有很多繁體人已提出過,我也不想在這裡重覆。 (不說如果說多點普通話課或用普通話教學,甚至要求學生參加國家普通話考試,我倒舉腳贊成) 然而在一些對簡體的批評,我倒是有些意見。(當然我一向不是搞語文,有錯請指正)

據港台的《中文一分鐘》說,中國自古每個時代所使用的中文字都約差不多六千至七千左右,現在積累的數萬個中文字主因每個朝代都會因各種原因棄用或新造些字。簡化或將兩字併合通用不是這一百年才有,而有些字根本是在某朝代被「繁」化才拆分兩字。如很多人質疑的「后」事實原意就是後面的意思。至於象形文字問題,試問現世的繁體字又有幾多是依六書中象形的方法去創造,反而「形聲」一直都是主流。 電腦化確實可以幫了筆劃太多的問題,但請留意,國內現在有機會接觸電腦的人佔人口幾多成呢?

但其實如果源文是繁體,被轉成簡體在某方面會有點損耗是很自然的事。不要說簡繁,根本中港台文化都有點差異,不要說用詞,其實連語法都有些微分別,簡繁轉換是為懶人而設的東東,說白點根本是要點翻譯工夫 (因為曾為sourcecast做過簡體中文界面翻譯管理工作,曾發生過一些問題) 。這是否叫字義混淆很難說,反正對繁體人來說確實是在看一種和自己常用語文很相似的外鄉文罷。在古籍方面就更明顯不過,一來古籍編寫時用的字較接近現在繁體,二來古文長度一向較短,要用前文後理去推比現代中文難千倍。加上很多對聯都有在字形上玩配對,簡體化自然令人摸不著頭。我讀二月河《康煕大帝》時,就曾在故事測字那段困惑了一陣字。

說到底,原本用什麼就最好用什麼字。更重要,也請一些人 (請不會對錯號入錯座) 尊重一下別人的文化背景。現在國內文字是被簡化了,要扳回去是很難亦有點不切實際。當年簡化亦是有其原因 (雖然確實有失算及謬想) 。我們現在無必要亦不應該提出什麼簡繁誰優的論調。

說起來,我書架上有一本由zunix推介而買的《漢字在日本》,細講了日本很早有揚棄漢字全面拉丁化的言論,亦很早有人指出漢字優點。(我們現在用的很多語詞都是日本傳回來)老實說,我中三、四時也曾有揚棄中文字的看法,直至90年拜讀朱邦復先生的文章才糾正過來。

以下連結和我講的內容絕無關係,只作記錄罷了。


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


書單

昨夜到了 Zunix 家把酒暢談 (我倆家相距大約半小時多點的走路路程),問了他一些有關智識產權及專利等的法律問題。也一如以往,又從他家拿了一堆書和一些書的名單。為免忘了,所以些記下記下:

  • Leading Geeks by Paul Glen, Published by Jossey Bass
  • Managing the Non-Profit Oranginzation by Peter F. Drucker
  • 止學 (Zhexue) - 文中子
  • 1901 - 一個帝國的背影
  • 中國大歷史 (China: A Macro History) - 黃仁宇
  • 日本二十一世紀的國家戰略
  • 韓國研究導論 (Introduction to Korean Studies), 中國文化大學出版部

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


《走向共和》及《帝國的回憶》

早幾天因為五一假期 (我現在跟國內假期) ,一口氣把《走向共和》的 DVD 看完。整體感覺很好,拍得很有心機,王冰和孫淳分別把李鴻章和袁世凱演得活靈活現。當然這套劇也引起了我對清末民初時期歷史興趣,也在網上搜索了不少有關網站,比對過劇情和史實的差異。有不少批評指劇情和《康熙帝國》、《雍正皇朝》等一樣對史實有不少硬傷,但個人覺得做到現時的程度已經難得。要論忠於史實,我倒認為只有笨蛋才會以為一套劇集或一兩本書上說的全是真。

劇中講述了不少武力革命和君主立憲的爭辨,史上梁啟超曾批評到武力革命會令中國有二百年的內亂,想起辛亥革命之今,我國可以叫穩定的時間確實不多。當然歷史永不可以重來 (但歷史巨輪總是相似地重覆) ,而君主立憲也不怎可行。後部劇情比李鴻章在世時弱了點,但當談及共和憲政,不免令人奇怪國內竟會拍出這類敏感題材的電視劇。我想不會有幾個香港或外國人會覺得現時中國達到了劇中所說的共和憲政,而劇中只講到張勳開始企圖復辟就完了,有點古怪。聽說這劇在國內已”停止”重播。如果這劇可以現在在香港播影,確可以打那些港區人大幾巴掌。總而言之,很推薦這套劇。

昨天在樂文看到Johnny提過的《帝國的回憶》,買了回來。看了幾章,蠻有趣。


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


俾斯麥 Bismarck

前提星野之宣的《滅獸之海》就講及二次大戰德軍最強戰艦, 所以也收集一些有關的資料:


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


歷史與權威

我一向都幾鍾意 d 充滿矛盾或諷刺性既語句,如以下:

The only thing we learn from history is that we learn nothing from history.

- Hegel

歷史給我們唯一的教訓就是我們從不吸取歷史的教訓

- 黑格爾

To punish me for my contempt for authority, Fate made me an authority myself.

- Albert Einstein

為懲罪我對權威的藐視,命運令我成為一個權威。

- 愛因斯坦


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


Today

Do you remember today is what? It seem that I always remember today every year although I seldom attend some activities this few years. When you were young, you usually think it is bloodiness and really can’t understand why some people do such a stupid thing. But while you grow up, you will learn more about reality. However, is that mean they don’t do the wrong thing? Oops, what the mean of wrong and what the mean of right? Anyway, if you remember what is today, let give you sometime to think. Think about what should you do for being a Chinese.


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


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