漫談電腦升級的迷思

(刊載於朝陽資管第三期系刊 1998 年初版)

看看今天的主流機器, 記憶體容量大約是 32MB 或 64MB; 再回想十幾年前我的第一部電腦, 是一部 48KB 的 Apple II, 正好增加了一千倍! 至於使用者的生產力提高了多少呢? 我們固然不能天真地期待千百倍的效率提升, 但是以目前一般電腦使用者常遇到的諸多不便狀況看來, 似乎在軟硬體升級的過程當中, 我們並未將所有的資源作最佳的運用。

本文從一個另類的角度來思考資訊科技的進步: 資訊界是否迷失在不斷升級的無窮迴圈當中, 忘記了電腦科技原本是用來降低生產成本的, 而不應該倒過來為了追求永無止境的電腦科技成長, 投入過量的社會成本? 每一位資訊從業人員每年花在升級軟硬體的錢, 如果拿去捐給慈善機構, 是否會比較有意義? 而花在粗淺學習每一種曇花一現的技術上的時間精力, 如果拿來深入鑽研當中少數幾項, 長遠看來是否更能夠提升生產力?

資管人是否能夠站在企業消費者的角度, 替我們的雇主及整個社會改善這樣的狀況, 同時也讓自己時間精神的投資獲得更大的報酬?

[ 善用硬體, 避免盲目升級 ]

幾乎每一位資管人都有重要資料隨著硬碟損毀而消失的慘痛經驗。 很合理的反應是: 常常備份, 多備幾份。 而為了將整顆硬碟備份, 許多人的結論是再買一顆硬碟。 事實上真正需要備份的, 只有信件、我們自己寫的程式原始碼、文件、修改過的組態檔...等等; 至於佔掉大部分空間的作業系統與應用軟體, 其實是不必備份的。 如果寫一個批次檔, 只針對這類檔案[1]作備份, 那麼其實備份所需要花的資源很少, 而且也更容養成習慣, 不再給自己藉口。 一個人一年可以製造/修改多少存入電腦檔的資訊呢? 我過去十二年來的成果全部收集起來大約是八張 1.44 MB 的磁片; 而最近幾個月的成果通常在一天之中會備份一到兩次。

身處網路萌芽時代, 我們深感需要常常上網搜集資料, 但卻又屢屢為網路塞車所苦。 如果速度瓶頸在我們的數據機, 硬體升級就有意義了; 但更常有的卻是遠端的問題。 這時如果能夠開啟數個瀏覽器, 同時連向數個網站, 14.4K 的數據機可能都還游刃有餘。 但是不論是網景或微軟的知名瀏覽器, 對記憶體的需求都不小, 是否就意味著必須擴充記憶體了呢? 如果你要找的是文字資訊, 何妨多開幾個 telnet, 用 lynx 這個文字瀏覽器? 在我 16 MB 的機器上同時開四個 lynx 及一個 Navigator 系統仍舊可以負荷。

擁有得多不值得炫耀, 使用得巧才是功夫。 捨得花大錢, 追隨流行盲目升級的, 是有錢人; 懂得動腦筋, 善用資源聰明省錢的, 才是資訊人。

[ 軟體升級的陷阱 ]

最受歡迎的微軟公司文書處理軟體 Word, 從 6.0 升級到新版時, 曾在網友當中引發一陣抱怨聲。 試用版將 6.0 的檔案讀入後, 內定以新格式寫出, 如果沒有一些電腦常識, 新檔案便無法以舊版程式讀回了。 檔案格式及應用程式應該有 forward/backward compatibility, 這是好的軟體或標準應有的特性。 例如新版的 HTML 的檔案格式遇到舊版的瀏覽器, 瀏覽器應該盡其所能地解釋, 再將看不懂新的標籤直接印出; 而這也有賴於新舊版本的 HTML 標準的設計確實如此配合。 究竟 Word 的風波起因於設計不良抑或是軟體公司別有用心我們不得而知, 但是對使用者造成這樣的不便, 確實是原本可以避免的。 如果你沒有用到一個軟體的新增功能, 為什麼要花錢和硬碟空間[2]來換取不便呢?

軟體升級前應該考慮得失, 權衡輕重再作決定, 而不一定是版本的數字越大越好。

[ 當今日之星丰采不再 ]

最早以 GUI 竄紅的 Apple Macintosh 現在面臨窘境, 不得不自美國許多家電腦連鎖店中撤出, 並且取消 Newton 作業系統的研發計劃; IBM 曾在 MS Windows 仍無法穩定多功的 1993 年前後推出可以執行 Windows 的真正 32 bit 作業系統 OS/2 2.0, 現在 IBM 決定專攻伺服器市場, 停止研發桌上版的 OS/2; 曾經是世界上最快晶片 Alpha Chip 生產者的 Digital (DEC) 最近被 Compaq 併購, 其上的作業系統前途未卜。

我們要問的是: 這些過去曾經風光一時的系統, 現在他們的使用者面臨的是什麼樣的困境? 我們今天使用的主流系統未來是否會面臨相同的問題? 電腦科技進步迅速, 而市場生態消長速度較之亦不遜色, 用目前最多人用的軟體, 長遠看來未必符合經濟效益。 如果我們堅持使用界面公開的軟體 (例如支援 POSIX 等公開標準, 而非由某家公司所獨有的「標準」 API), 或者所使用的軟體能夠輸出格式公開的檔案 (例如 RTF, HTML 或 Postscript), 或者至少選用跨平臺的軟體, 那麼在需要隨時代蛻變時, 或許可以少幾分「成長的痛苦」。 最糟糕的莫過於買到界面完全不公開的軟硬體, 當廠商還在營運時, 你別無選擇, 當廠商消失時, 就更求助無門了。

軟硬體升級時要注意新的系統是否有公開的界面[3], 否則名為升級, 實則不然。

[ 新技術的迷思 ]

以上都是從使用者的角度來看, 現在我們看看程式設計師所面臨的程式語言「升級」問題。 語言不斷推陳出新, 從 Fortran, Pascal, C, C++ 到 Visual Basic, Delphi, PowerScript, Java。 想要趕上潮流的程式設計師似乎永遠都只有時間把每一個語言從 for 迴圈學到遞迴, 然後就必須開始學下一套語言了。 但是從熟能生巧的角度來看, 語言種類過多其實是人力資源的浪費: 試想如果自然語言也像程式語言一樣常常有新的方言 (dialect) 出現, 我們的社會要多花多少資源在溝通與翻譯上!

我們倒不是說應該要有一位廿一世紀的資訊秦始皇來統一程式語言。 只是相較於專業的應用程式, 程式語言應該有較長的壽命, 較廣的使用面, 如此才有發展程式庫及應用程式的機會, 而程式設計師有較多時間熟悉語言, 寫出的軟體也才能有較好的品質。 如果新的語言或技術有突破性的優勢, 而且允許不同廠商對統一的標準提供自行研發的產品, 那麼這樣的良性競爭就有意義; 否則程式設計師及應用程式使用者或許只是軟體公司之間角力的犧牲者而已。 原本定位在跨平臺的 Java 語言, 便由於昇陽與微軟之間的明爭暗鬥而失色不少。 如果資訊界不能堅持只使用各種版本的 Java 的共同交集, 那麼它原來的吸引力將大打折扣。

當然這類問題牽涉到大眾的心理及大公司的利益糾葛, 個人能做的有限。 我們資管系的同學未來面臨就業市場需求的壓力, 不得不緊隨著潮流「升級」; 但是亦無妨偷閒在比較有前瞻性的語言上多下工夫, 做長期的投資。 如果那一天成為企業主管, 有主導計劃所使用語言的權力, 更應該考慮程式語言的特性對你的計劃的長遠影響, 而不要誤隨短暫的流行熱。

[ 開放式系統與自由軟體 ]

前面所提的問題有數項和開放式系統[4]有關, 簡單地說, 軟硬體界面公開的產品才是長期投資的最佳選擇。 好比標準電池的規格就那麼幾種, 任何電池生產商都可以製造、出售, 而不必徵求某家專利持有廠商的允許, 甚至繳「版權稅」[5]。 而將這個觀念推展到極致的, 就是「開放原始碼軟體」或稱「自由軟體」了[6]。

有些同學或許聽我提過自由軟體的理念, 不過今天要談的不是理念, 而是它幾個具體的優點: 一般說來自由軟體壽命長, 而對硬體的需求低。 首先, 由於自由軟體作者或者不對他們的作品加上版權限制 (public domain) , 或者以「革奴大眾公有版權」 (GNU General Public Licence, 簡稱 GPL) [7]要求使用者不得限制更下游使用者的自由 (遞迴觀念的法律妙用), 因此不會有程式隨公司消失的問題。 而自由軟體沒有市場競爭的壓力, 不必盲目升級, 有許多 80 年代發展的軟體, 到 90 年初期已成熟而鮮少更新, 他們提供的界面變成好比是點字符號那樣的標準, 使用者所學可以長期使用。

但這是否表示這樣的軟體就停止進步了呢? 這將我們帶入自由軟體的另一個優勢: 模組化。 模組化是軟體工程中相當重要的一個觀念 -- 一支程式應該只要專心把一件工作作好, 並提供良好的界面確保它能夠與其他程式合作。 如此使用者好比在組合音響或電腦一樣, 可以選擇適合自己的元件, 在熟悉度、升級方便等方面都有好處。 更明顯的是因為軟體元件之間功能重複的現象減少, 對硬體的需求大幅度降低。 自由作業系統 Linux 上灌滿了應用軟體仍舊很難用超過 500MB 的硬碟。

市面上一般的流行作業系統或軟體並非完全都不模組化, 但是或者面臨競爭或者意圖壟斷, 都必須不斷擴充功能。 微軟會聲稱瀏覽器是作業系統不可分割的一部分也就不難理解了。 多數這類軟體公司, 他們所謂的「模組化」指的是同一家公司的產品彼此之間的配合度很高; 但是使用者往往在不知不覺中一點一滴地 失去了選擇他家公司的軟體來搭配使用的自由, 或者必須付出「同一功能, 數倍硬體消耗」的代價。 除了硬碟空間需求明顯地高之外, 記憶體需求也因為各家公司用自己的 DLL (動態聯結程式庫) 而提高, DLL 的好處大幅降低。

[ 結語: 實事求是, 高瞻遠矚 ]

神話中人類嘗試著建一座通天的巴別塔 (Babel Tower), 於是上帝讓人類「擁有」許多語言, 以至溝通困難, 而高塔也就無法完成。 今天的資訊界以排山倒海之勢年年推出升級號召, 仿佛使用者的宿命就是要永不停止的升級, 這與建造巴別塔的心態有沒有一點類似呢? 另一方面真正公開的標準被各家廠商的「獨家先進專利技術」所淹沒, 大量人力與資金投入轉換資料、轉換平臺、協商及收取版稅等差事; 至於真實的資訊科技發展則無法像其他科學一樣 "站在前一位巨人肩上", 而變成了 "踩在前一位巨人腳指頭上"。 如果資訊時代的巴別塔無法築高, 就不能怪罪上帝了, 這些軟硬體溝通所需要的「語言」之所以如此不必要地繁複, 是我們自己的選擇。

我個人認為開放式系統乃至開放原始碼軟體不僅是解決問題的根本方法, 其中更有許多創業的機會, 而走在潮流之前常常比在潮流之後追逐更有機會成功。 當然這並不是鼓勵多數同學貿然投入目前的非主流軟體。 大多數同學畢業之後做的是領薪水的工作, 仍舊應該留意市場的需求, 多學習時下流行的技術及軟體。 但是這同時不妨仔細思考辨別, 對於十年廿年之後仍然可能有廣泛應用的技術 多花一些時間深入研究, 並一路上搜集有助於提升個人長期生產力的工具 [8], 讓你的精神投資獲得最高的報酬。 即使我們一般人沒有冒險創業的勇氣與機會, 只要實事求是地善用資源, 審慎地以長遠眼光來評估升級的需求及各種不同的升級途徑, 仍舊能夠在一片紛亂盲目的通天狂熱中, 替自己的僱主企業針對企業特殊需求建立一座實用穩固的資訊城堡, 在不可知的未來當中, 減少類似兩千年危機這樣的滑稽事件。


[註]

  1. 當然, 包含你寫的批次檔本身。
  2. 大多數商用軟體新版只會加大, 不會減小; 例外甚少。
  3. 不見得最多人使用的軟硬體, 就是所謂「公開的界面」, 必須要其他廠商有權力自行研發產品提供相同的界面, 而完全不受版稅限制才算。 例如 PC 的 bus 結構是, 而 MS Windows 作業系統則不是。
  4. 請參考 "Open Systems for Better Business", Ann Senn, Van Nostrans Reinhold (ITP)。
  5. 聽來可笑嗎? 但在軟體界這卻是事實: Apple 曾經控告 Microsoft 「抄襲他們的使用者界面」 (還好沒有成功, 不然受害的不只是 Microsoft, 而是所有的電腦使用者); 而 IBM OS/2 2.0 提供模擬功能, 讓應用程式以為底下的作業系統是 MS Windows, 但後來的版本礙於版權問題, 要求使用者必須原本就裝有 Windows。
  6. 筆者的網頁: http://www.cyut.edu.tw/~ckhung/ 有一些探討自由軟體的文章及連結.
  7. 請到一般的 ftp 站搜尋 GNU 或 gnuish 的子目錄, 其中的任何一個程式都有 COPYING 這個檔案。 目前尚無中文翻譯, 但可參考一篇相關文章「革奴宣言」的中譯版: http://www.linux.org.tw/CLDP/other/gnu-manifesto.html
  8. 我個人認為 GNU 的許多 text utility (如 grep, sed) 及 regular expression 等跨平臺工具/觀念皆屬此類; 而 Tcl/Tk 語言的「拼組積木」精神亦將使它長久流傳。 請參考最近的 Run!PC 雜誌或 HopeNet 光碟月刊的簡介。