2009-09-29

從「出水芙蓉」到「咄咄道人」

說來話長。原本只想查「出水芙蓉」的出處,沒想到卻找到一部在民清被稱為鴛鴦蝴蝶派始主的章回小說。

話說「出水芙蓉」的出處有幾個,教育部重編國語辭典修訂本引了李白的詩

「清水出芙蓉,天然去雕飾。」

和《花月痕.第七回》

「濯濯如春風楊柳,灩灩如出水芙蓉」

教育部成語辭典指出這詞的典故是南朝梁.鍾嶸《詩品.卷中.宋光祿大夫顏延之詩》中的一段文字,而那就話是湯惠休說的

「謝詩如芙蓉出水,顏詩如錯彩鏤金。」

講到《詩品》,就牽扯到很多文學的評論,尤其是古人超愛說長話短的啦。首先,關於講述顏延之的生平事蹟,《南史》有顏延之列傳。列傳中提到延之有很多奇怪的習性,如「好飲酒,不護細行」,「延之性旣褊激,兼有酒過,肆意直言,曾無回隱,故論者多不與之,謂之顏彪。居身儉約,不營財利,布衣蔬食,獨酌郊野。」簡單講,顏兄是一個怪人。最有趣的是,列傳中也有提到顏謝的辭采齊名,只不過《南史》作者寫得比較生靈活現。

「文帝嘗各敕擬樂府北上篇,延之受詔便成,靈運久之乃就。延之嘗問鮑照己與靈運優劣,照曰:『謝五言如初發芙蓉,自然可愛。君詩若鋪錦列繡,亦雕繢滿眼。』延之每薄湯惠休詩,謂人曰:『惠休制作,委巷中歌謠耳,方當誤後生。』」

鮑照講了,這謝靈運的詩,清新、自然、可愛,你的詩,塗繪地華麗斑斕。客官啊~鮑照沒有很明顯批評顏兄的詩不好,只是說「詞藻太優美了」,這樣不算太糟啊,如果有人說我的文章詞藻華麗,並不清新脫俗、平易近人,我還是會很開心的。可是,接著的後面那句,就很令人錯愕。突然提到湯惠休,然後很不屑的說(還用「每」),湯兄作的詩,只能算仿間小曲,還會誤人子弟咧,這話也太嚴重了吧。讀到這裡,如果再回頭看剛剛引的典故,我就搞不清楚為什麼鮑照和湯兄說的話會如此神似,到底是誰先說的呢?還有為什麼顏延之會這麼說湯兄呢?

所以猜想湯兄可能是引用鮑照的話,不然怎麼會如此相似呢。為什麼這麼說呢,因為下一句顏延之很酸的說湯兄作的詩很平民,卻不回話貶損鮑照的詩。可是,寫這列傳的人,也許把不同時間發生的事寫在一起,事情可能是:湯兄聽過鮑照評延之的詩,引用他說的話,然後被顏延之聽到了,記上這一筆,貶低湯兄的詩。

另一種可能,延之聽過湯兄評自己的詩,然後又從鮑照那聽到一樣的話,很不以為然的說「委巷中歌謠耳」。這樣的話,湯兄的詩就比謝五言還低一階,清新自然降到市井小民的等級,真是有夠酸的。當然也有可能湯兄聽見了延之評他的詩如「委巷中歌謠耳」,所以就引用鮑照的話,改版一下,用自己的口吻說出,只是我不覺得「錯彩鏤金」是不好的評語啦。所以這麼類似的話,出自不同的人,還真分不清是先誰說的。

好啦~故事越講越長,趕快回到「咄咄道人」。在成語辭典中,當然也列舉出誰引用了這句成語,那就是《花月痕》

「秋痕轉過臉來,卻不是秋痕,又另是一個麗人:濯濯如春風楊柳,灩灩如出水芙蓉,比秋痕還好。」

(附註:國語辭典中的標點斷句有點怪,改成這樣好了。另外,濯濯如春風楊柳,也有版本是濯濯如春月柳,不管何者,春、柳兩字用的最好。)

哇~這兩句「濯濯如春風楊柳,灩灩如出水芙蓉」還真的把一個儷人女子的神韻給寫盡了。所以囉,當然開始找這部書的來由。看這淺顯易懂的白話文,可以猜得出來是接近民國的文章了,果然是清末的作家叫魏子安寫的。這人據百度百科(http://baike.baidu.com/view/1178026.htm)所介紹,本名魏秀仁,字伯肫,一字子安,又字子敦,号眠鹤主人、眠鹤道人,又号咄咄道人、不悔道人,清福建侯官(今福州市)人(為什麼沒有繁體中文的介紹啊?難道台灣沒有人研究這位「鴛鴦蝴蝶」的始祖?)。看了網路上的介紹,覺得可以去好好讀這本書,因為本人並不排斥情話綿綿的小說,更覺得我們應該向瓊瑤阿姨看齊。

所以囉,這就是今天的故事。

後記:

首先,

2009-09-28

vocabulary

revs up

1. rev up if you rev an engine, or if an engine revs, you make it work faster
2. if you rev up a system or organization, or if it revs up, it becomes more active

from http://www.ldoceonline.com/dictionary/rev_1

可惡的程式

我已經想了兩天了,卻遲遲無法決定要用哪個方法。也許並沒有我想的那麼嚴重,畢竟現在電腦中的記憶體都這麼大,管他用哪一個方法宣告一塊記憶體區域,不會影響到整體的速度。

struct counterpart {
    int ncp;    /* number of elements in cp */
    int *cp;    /* array with ncp elements */
};

struct counterpart_array {
    size_t nobj;    /* number of objects looking for cp(s) */
    int *ncp;         /* array of number of counterparts */
    int **cp;         /* array of counterpart pointer */
};

The major difference between this two structs is that the block of the memory is segment or not.  For the yellow case, we have to allocate an array of the structs with nobj (number of objects).  Each cp needs allocating with one element as default.  Therefore, the locations are separated in the memory.  It might reduce the efficiency of computing.

The green case might work only if we create *cp in an order, i.e. element(s) follows the previous element.

Actually, I thought another way to do this

struct counterpart_arr {
    size_t nobj;        /* number of objects looking for cp(s) */
    int *ncp;            /* number of cp(s) found with the order of obj */
    int *cp_index;    /* array of cp index */
};

Blogger a photo from Picasa

Here is a test on Picasa 3.
(還是可以顯示中文吧?)
Posted by Picasa