異化、懷舊、全備性

◎luki

看上去是要來講述人文學科的某些議題,其實是想要講和電腦有關的事。

有時候我會驚覺──突然回首,才發現身旁的軟體也已經進化到如此的程度。用來預測積體電路發展的摩爾定律,應用在軟體上面似乎也有一定的準度。 1985年,第一版的Microsoft Word(麥金塔版)約莫只有200 KB的大小,可以裝在一張400K的磁片上面。到了1995年,Microsoft推出給自家Windows 95用的Word 95的時候,Word的主程式,連同和其他Office軟體共用的部份、使用者範本,算一算也需要200 MB才安裝得起來。1024倍的差距:正好是十年的悠悠歲月已過,2的10次方。

上述的粗略數學,牽涉到許多計算的麻煩──Motorola 68K的程式碼要怎麼和Intel i386的作比較?哪些元件可以算是Word的「必須」元件,哪些又只是使用者的安裝選項?──當然我們也可以說是微軟把自家軟體和作業系統的界限給搞模糊了(他們家的Inter Explorer不就是這樣幹的嗎?),但不可否認的是:單一二進位可執行檔 (binary executable) 的年代,早已經離我們遠去,再也回不來了。

於是我竟然開始懷念起以前的Turbo Pascal。

Turbo Pascal 算是軟體發展史上的奇芭。Borland傾其全公司之力,把所有的最佳化功力,全都施展到了這套編譯程式上──還附上文字版的視窗操作環境,可以伸手操弄 IBM PC的內部,寫出來的程式又快又好(同一家公司的 Turbo C,單就最佳化的表現上,那時還是同業的笑話)。最重要的是:那一套神奇的發展環境,竟然只要一個 .exe 檔就可以執行了(但檔名我竟忘了)。

蘋果的麥金塔和 Borland 的 Turbo Pascal 幫 Pascal 這套語言,所延長的壽命不知凡幾(我這樣的說法有引起火燄戰爭或仇恨肉罐的可能)。那個年代寫C的人是這樣說的:怎麼會有一套程式語言,竟然是把函數引數 (parameter) 照著從左到右的順序丟到堆疊上的呢?!(註:C因為允許可變長度引數,引數是從右到左丟到堆疊上,這樣子第一個引數才會放在堆疊最上方,就算後面的引數沒有被用到也不會有什麼影響──老天保佑我沒記錯)。

然後,也許很多人都還記得,在那個年代裡,Peter Norton的一本 Inside the IBM PC: Access to Advanced Features and Programming Techniques (NY: Simon & Schuster, 1983)──雖然我猜大多數在台灣的人,大概讀到的,都是某個從該書取材,號稱某某人「編譯」的版本──為大家揭露了PC裡面有多少好玩的東西。大家大玩BIOS、玩常駐程式、玩顯示卡(可憐的Hercules單色顯示卡)。「640K對每個人來說應該已經足夠」,Bill Gates為大家劃上了PC的天空極限,而那天空之下,沒有一塊記憶體的位址是沒有意義的。

在Mac的平行宇宙裡,則是一套五冊裝的Inside Macintosh 給了眾人相同的幸福。

那樣的年代真的一去不回了。

「異化」是人類歷史進程,似乎難以避免的事實。原始的說法:人們勞動,製造或生產出食物或器物,因為那是我們自身勞動的成果,我們與我們的勞動成果間,於是存在了一種親密的關係。我們使用或食用自身勞動的成果,或者與他人的勞動作有限度的交換。工業革命改變了這一切,大批的人們進入工廠勞動,他們與他們的勞動成果卻沒有辦法維持那樣的關係。人們被拆解成生產線上的一道道程序,人們不再知道他們勞動所產出的最終結果。最重要的是,人們付出勞動,所獲得的報酬,往往不及產品最終(被資本家所賣出)價值的零頭。人們被剝奪了他的勞動成果、他與勞動成果間的關係,以及他所應獲得的勞動報酬:這就是異化。

我們跟我們所使用的程式之間,是不是也出現了類似的歷史作用?

叫出 \windows\system 或隨便抽出 /usr/lib 裡的檔案清單:有多少東西是我們叫得出名字、認得出功用、瞭解之間交互依存關係 (dependency) 的?當軟體系統早早便龐大至突破了650 MB的媒體防線,我們似乎不再能用過去的方式,理解裝在我們的小黑(或小白?)裡的任何東西。

連開發工具也是這樣。

人無法看遍這個世界,甚至連他硬碟裡的東西也不可能完全瞭解。所以有所謂分工 (division of labor) 和社會信任這樣的事情。我們投身於某個小小的窗框裡,祈禱系統裡的其他部門,不要哪一天因為一個小螺絲釘的沒有旋緊,而導致諸如整個系統崩毀之類的蝴蝶效應。

或者我們也可以選擇懷舊,懷念那個什麼東西都可以有「一片裝 minimal set」的年代。

懷舊的社會心理機制也許是這樣的:正因為過去是已經給定的東西 (the past is a given),所有存在於過去的事情,都已經凝結了起來,不會再有任何的進化,因此我們可以傾全力去瞭解它、拆開它,甚至用上我們最新的探索工具(這幾年勃發的各種CPU模擬器是其中一例)。過去是完備的 (the past is total),至少在我們現在還追憶著的過去是如此(有一些歷史事件是以謎的形式存在的,some past is enigma,但是這樣的事情,或許對於技術的世界來說,還不至於此)。於是我們對過去悠悠歲月、昨日美好之懷念,很可能只是因為我們在緬懷之中,得到一種對全面掌握的完整感 (we have mastered a sense of completeness in the grasping of the totality of the past)。

我們所生存的現在,充滿了缺口、無法捉摸的邊界。我們沒有時間充份理解現在所發生的事。缺口或許也是機會,但我們與世界之間的邊際無法捉摸,大多數時候令人不安。更何況我所意指的是我們雙手所創造出的機器和軟體,正以極高的速度形塑出一套它們自身的存有邏輯。那樣的邏輯,往往只有少數參與其中的人可以理解。大多數人,我在想,其實是無能為力地被摒除在門外的。這當然不能不說,是「現在」的極大問題:一個以高度遠離我們而去的技術世界 (a high-speed, runaway world of technology)。

然而相對於過去的懷念又如何呢?對於過去那種全備性的緬懷,彷彿過去的世界充滿了明亮,沒有一個角落不被那美好感覺的光芒所照亮。我們卻忘了,那樣的緬懷,遮蓋住了過去所有的黑暗和殘酷,或者,說得沒那麼嚴重,至少是過去的所有不便:可笑的 640K/64K頁面限制、語言的互不相容與衝碼、緩慢的機器(而且貴得離譜)……

在那樣的時候,才會覺得,能把一些東西送進歷史的垃圾筒裡,或許也不是一件那麼傷感的事。

反正,懷念的時候,在垃圾筒上點兩下,那些東西又全都回來了。