在日本民間故事《浦島太郎》(Urashima Taro) 裡,因好心救了落難的海龜,而被邀請入龍宮一遊的浦島太郎,渾然不知在龍宮的一晝夜間,陸上的世界已經悠悠過了三百年。在上岸前,龍宮公主給了太郎一個盒子,做為給太郎的紀念。太郎上岸後,打開了盒子,突然間,太郎從一位身強體壯的捕魚少年,變成了一位白髮蒼蒼的老人。
我最近就碰上了一件可以稱得上是浦島太郎般的事。
前一陣子我下載了新版的MinGW。這是一套奠基在 gcc (GNU C Compiler)、供Windows環境使用的C/C++編譯器。我好些年前就用過這套東西,用以取代先前流行的 djgpp。
拿到新的編譯程式,想當然而,一定要拿個什麼程式來測試。拿什麼好呢?我的習慣還停留在寫一個 "hello, world!"。
然而,C++版的 "hello, world",竟然無法在新版的MinGW上編譯了。滿篇我完全看不懂的編譯時期錯誤,從我的 stdout
(就是命令列模式的螢幕啦)上傾洩而出。
我發現,世界變了。
好心的朋友跟我說,不不,程式已經不是這樣寫的了。"hello, world" 的現代版應該是長成這個樣子的:
01: #include <iostream>
02: using namespace std;
03: int main()
04: {
05: cout << "hello, world!" << endl;
06: return 0;
07: }
為了解釋方便,每行程式前面我加上了行號。首先,iostream.h
消失了,取而代之的是不需要 .h
的形式。02行的namespace
是新東西。雖然我好些年前就已經聽聞,沒想到已經是正式的標準了。而且,最重要的是──沒有這第02行的「使用命名空間」指令,第05行的 cout
物件,編譯器是不認的!
「你難道不知道嗎?自從STL (Standard Template Library) 成為標準後,由於太多人使用相同的名字,命名空間被用光了,所以才會把 iostream
的東西放 std
命名空間裡呀!」好心的朋友是這樣跟我解釋的。
我覺得不可思議。
以前覺得有些事情是不會變的。沒有想到連教科書上做為C++語言的第一個範例,那個被認為應該是恆久不變的入門教材,新版的編譯器竟然不認了。兒童相見不相識,怒問客人的code是從哪個時代弄來的,滿紙荒唐。
這個時候我才突然想到,我不再碰觸任何跟程式有關的東西,讓我算算…… 從1994年到現在,正好整整十年的時間。
十年了。我最後一個還需要用到 makefile
的「計劃」,是整整十年前的事情了。在這之間,雖然偶爾還會從堆滿灰塵的 .zip
檔中,挖出舊的程式和編譯器,玩弄一些小東西,但大體上來說我是遠離了寫程式的世界。完完全全地遠離了。
如今,連最簡單的程式,面貌都變了。而我,像是浦島太郎那般,打開了MinGW的盒子,發現自己從當時一個高中快畢業的小毛頭,來到了現在這個奇異的階段。
十年可以改變的事情很多。Linux成熟了,而「正義的味方」不再只有gcc,還多出了Perl、PHP、Python等所謂的 "3P"。中土世界因為Java而多了許多不必要的困擾。至於「黑暗料理界」則多出了ASP、C# (唸做 "C Sharp")、.net,以及在它們之前,每一兩年就新推出、被人大似吹捧的新資料庫存取模型(族繁不及備載)。十年前大家都還在用榆樹 (elm)、松樹 (pine) 在閱讀電子郵件,如今只剩下極少數的人沒被「外觀快遞」給收服。這樣的事還有太多太多。更不用提那些十年來起起落落的火燄舌戰,以及依然有效的摩爾定律。可以確定的是:雖然正義的味方越來越茁壯,但人們卻還沒有看到黑暗料理界倒台的可能 [1]。
我把我的故事說給了 ilya 聽。他說:「能夠自廢武功到你這種程度,也真算是不容易了。」
是啊。
ilya問我當初為什麼做了那樣的選擇,我說那是個難回答的問題。難回答,不是說答不出來,而是那是個需要花時間說明白的過程。而那過程實在是太私人了。叨叨絮絮的成份多,虛妄、愚昧、無力、嘔吐(存在主義式的)的經歷也有。總之我目前都還不認為那是個我有能力處理(而你可能有興趣想聽)的故事。至少在我明白那整個過程的意義之前是如此。
但,不管怎麼說,在看似感傷的敘事線後,最近我倒是有了新的啟示:就在我慢慢恢復、或者說重新點燃了對電腦和技術世界的胃口後,我突然發現像我這樣一個全無武功(或者誠實地講是武功全無,後面這個用法預設了「先前有武功、後來卻丟失」的前提)的人,竟然對著各種新奇的東西充滿了好奇和興趣。我簡直,如新手般,墜入了科技眩目的世界中:
Miranda [2]: O Wonder!
How many goodly creatures are there here!
How beauteous mankind is! O brave new world!
That has such people in’t! (Shakespeare, The Tempest, 5.I)
米蘭達:「人類多麼地美!啊!美麗的新世界,有這樣的人在裡頭!」
(莎士比亞,《暴風雨》,第5幕第1景)[3]
附註
- 誰知道呢?當年某個為錢眼開的傢伙,他如果當時把做為DOS前身的程式碼丟進毀滅之山,那麼一切可能早就結束了。
- 做為某種令人不安 (uncanny; unheimlich) 的巧合,我的第一台notebook就叫Miranda。
- 中譯是從http://www.bwmc.org.tw/Tfr/tfr_02/tfr-02-01.htm找來的。
lukhnos :: Feb.29.2004 ::
tekhnologia 技術或者藝術 ::
8 Comments »