讀 code 和讀文章應該差不多

有人在 plurk 提供了一個 link Code is not literature 內容很有趣,而且也是我思考和嘗試過的問題。

我的觀點和 Peter Seibel 不同。他提到

But then it hit me. Code is not literature and we are not
readers. Rather, interesting pieces of code are specimens and we are
naturalists. ..... I think a better model is for one of us to play the
role of a 19th century naturalist returning from a trip to some exotic
island to present to the local scientific society a discussion of the
crazy beetles they found ......

我覺這比較像是心態問題,你是抱著去了解運作方式的心態去了解程式碼,而 不是以欣賞的心態去閱讀。 就像永遠在學英文的臺灣人,拿到一篇英文文章時,我們會花更多時間去了解 文章的文法和表達方式,而不是欣賞。

從閱讀英文文章的例子,我看到兩件事。欣賞一個作品必需要有兩個條件

對於用以表達作品所用的技術必需有足夠的瞭解, 必需抱著感受作者的精神的心態,和作者作心靈交流。 我們在閱讀程式碼時,我們可能對於作者所用的語言、習慣不熟,因此 把心力都會在解析這些技術的細節上。 另一方面,我們往往抱著搞懂程式如何運作的心態去閱讀,而不是單純享受作者 的舖陳。 基於這兩點,我們的作為其實和閱讀文學作品相當不同。

##程式創作的藝術成份

整個軟體工藝的發展也不過幾十年,作者在創作時,還是以功能面為主要考量。 因此,現存的程式碼更像是"公文",而不是文學作品。 你很難在"公文"上感受到藝術成份。

說到這裡,我會想到,程式的存在是要完成特定的功能。 這樣的特質不就和"公文"一致? 我們如何能讓程式也展現出文學的特質? 這是一個很大的關腱,程式碼因此決定是否能提昇為藝術。

我反觀傳統機械的功能性,也是為特定目的而服務。 但,機械透過極致和細節的追求,不可否認,也顯現出藝術性。 建築也有一樣的情況,而且更早就顯出其藝術性。 程式碼應該也一樣,能發展出其藝術性。

##開始評論和欣賞

如果要程式工藝能展現出藝術性,閱讀、欣賞和批評不可或缺。 我們需要透過這些活動,創造一個提昇工藝層次的循環,讓創作者開始注意並改善 其表達方式,而閱讀者從而能提昇其閱讀的喜悅,並再回饋到創作者。 透過這樣的循環,程式工藝就有機會提昇其層次,展現其藝術性。


书籍推荐