The Old Blog Archive (Traditional Chinese), 2004-2009

Archive for February, 2004

“hello, world!” and Urashima Taro (English)

In the Japanese folktale Urashima Taro, the young fisherman Taro was invited to the Ryugaku, or the Palace of the Sea Goddess, for his kindness that rescued a little turtle.

Continue Reading »

“hello, world!” 與浦島太郎

在日本民間故事《浦島太郎》(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]

附註

  1. 誰知道呢?當年某個為錢眼開的傢伙,他如果當時把做為DOS前身的程式碼丟進毀滅之山,那麼一切可能早就結束了。
  2. 做為某種令人不安 (uncanny; unheimlich) 的巧合,我的第一台notebook就叫Miranda。
  3. 中譯是從http://www.bwmc.org.tw/Tfr/tfr_02/tfr-02-01.htm找來的。