民初思韻網

加入收藏   設為首頁
選擇語言   簡體中文
你好,請 登陸 或 注冊
首頁 人文思韻 傳奇人物 歷史思潮 時代作品 話題討論 國民思韻 民初捐助 賬戶管理
  搜索  
    人文精神 >>> 技術話題—商業文明的嶄新時代
字體    

張逸      阅读简体中文版

 

  卡爾維諾在哈佛大學的文學講座(即諾頓論壇,是為紀念美國著名學者諾頓開設的,每年邀請世界文化名人作講座,艾略特、博爾赫斯也曾獲邀參加諾頓講座)被他的妻子編成了一本獨立的書《美國講稿》。這本書展現了卡爾維諾的文學精神,體現了他的文學態度和氣質。不過,我在閱讀該書時,卻發現了一些與編程有關的內容。

  1、文學中的重構

  達芬奇在《大西洋草圖》中記述了他幻想中海怪的形象,進行了前后三次重構。最初的描述是:

啊,人們多次在波浪翻滾的廣闊海洋之中看到你,看到你那長滿鬃毛的黑色背脊,你像一座大山,傲慢地徐徐前進!

然后,他試圖使海怪的行動生動些,加了個動詞“翻轉”:

啊,人們多次在波浪翻滾的廣闊海洋之中看到你,看到你在海水中傲慢地徐徐翻轉身軀,看見你那長滿鬃毛的黑色背脊。你像一座大山屹立在海浪之上!

然而,他覺得“翻轉”這個詞削弱了他想留給人們的那種雄偉與莊嚴的印象,于是選擇了“分開”這個動詞,并改變了句子結構,使句子變得更緊湊,更有節奏。

啊,人們多次在波浪翻滾的廣闊海洋中看到你!你像一座山屹立在海浪之上。你傲慢地徐徐前進,用那長滿鬃毛的黑色背脊把海水分成兩半!

  在文學創作中,重構其實會經常發生,這源于作家對文學作品高質量追求的精益求精,他們常常通過修改句式,修辭手法或改變詞語來改善文字,使之體現恰如其分的美。編碼藝術同樣如此,即使是代碼的結構,以及變量、方法和類的命名,排版樣式,只要給予足夠的重視,錘煉這方面的技能,堅持重構,就能改善編碼質量。

  2、封裝與接口

  卡爾維諾在“精確”一章中引述了哲學家們對語言和外部世界關系的思考:

使用語言是對事物的不斷追求,不是漸漸接近事物的本質而是接近事物那無休止的變化,接近事物那多種多樣的、無窮無盡的表面。正如霍夫曼·斯塔爾所說:“深層應該掩蓋起來。掩蓋在哪里?掩蓋在表層下面。” 維特根斯坦走得更遠,他說:“凡被掩蓋的東西,我們都沒有興趣。”

  在軟件開發中,我們常常運用封裝來隱藏內部的實現細節。它帶來的好處是使得調用變得簡單,重用成為可能,很好地隔離了內部實現的變化。當然,文學更善于挖掘內部的玄奧,卻常常使用抽象的語言描述出一種晦澀,試圖掩蓋這種玄奧,以此追求一種尋找“高山流水”知音般心靈激蕩的玄妙與浹肌淪髓。

  文學也嘗試用變化去處理變化,這似乎矛盾,卻恰好是文學藝術讓人著迷的地方。軟件又何嘗不是如此。卡爾維諾看到了兩種變與不變的模式:

最近我偶然讀到生物形成過程的模式:“一邊是晶體(象征表面結構穩定而規則),一邊是火焰(雖然它的內部在不停地激蕩,但外部形式不變)。”……火焰與晶體這兩種形象代表了生物學上的兩種選擇。

皮亞杰觀點的哲學蘊含是“從噪音到有序”,即火焰;喬姆斯基觀點的哲學蘊含是“自我編制系統”,即晶體。

  這仿佛讓我洞悉了面向對象設計的玄機。火焰代表了接口,無論如何變化,其外部形式總是不變。接口的引入使得軟件設計可以從混沌(即皮亞杰所說的“噪音”)走向有序。至于晶體,則是遵循了信息專家模式的對象,因為它封裝了數據以及操作該數據的行為,使得它具有了自我判斷的意識。它的表面結構仍然是穩定的,卻有一套自我約束的規則。晶體看起來是寧靜的,而火焰卻如此的靈活。融合晶體與火焰的系統,是否代表了對變化的封裝,以及對不變概念的抽象呢?

  3、糾纏的細節

薄伽丘在一篇故事中(《十日談》第六天第一個故事)談到講故事的藝術,正好回顧了這種感覺。

“奧麗達太太,要是你不討厭的話,我想講一個世界上最大的故事給你聽,叫你聽得津津有味,就像騎了一匹馬一樣,忘了路途的遙遠。”

“啊,再好沒有了,先生,”那位太太說,“請你快給我講一個故事吧。”

于是紳士開始講故事給她聽。故事倒很精彩,可惜他講故事的本領,只抵得上他使用他身邊那把佩劍的工夫,實在太不高明,時常把一句話顛來倒去的說了又說,甚至說上六七遍,過了一會,忽然又倒過頭來說道:“哎呀,我說錯啦!”對于故事中的人名地名常常糾纏不清,張冠李戴,弄得別人莫名奇妙。他那說話的聲氣又跟故事里的人物、情景一點都配不上,真是聽得奧麗達太太頭暈目眩,冷汗一身,只覺得大禍臨頭,連命都快要保不住了。到最后,她忍無可忍,又看見那位紳士正愈說愈糊涂,已經迷了路,失了方向,只是在那兒團團打轉,再也跑不出來了,就和悅地對他說:“先生,你那匹馬跑得太野,請你還是讓我下了馬吧。”

  在軟件設計過程中,最要緊的是思路要清晰,既不能迷失在需求分析中,也不能迷失在復雜的實現細節中。最好能夠結合實際的場景,列出我們要達到的目標,需要完成的任務,有序地進行分析和設計。編寫代碼時,切忌功能之間互相糾纏,雖然體現了對象的協作,但由于職責分配混亂,使得對象之間的協作變得無規律可循,顛三倒四,最后讓人忍無可忍,也只能翻身下馬了。

2012-03-22 23:09

歡迎訂閱我們的微信公眾賬號!
春秋茶館訂閱號
微信號 season-tea(春秋茶館)
每天分享一篇科技/遊戲/人文類的資訊,點綴生活,啟迪思想,探討古典韻味。
  清末民初歷史人物  民初人物
為元首清廉不阿至情至性
林森(1868年—1943年8月1日)字子超,號長仁。福建閩侯人。1868年出生于福建省閩侯縣尚干鄉,1884年于臺北電信局工作。1902年到上海海關任職,其間參加反清活....
散文大家曠達風趣
梁實秋(1903年1月6日-1987年11月3日),號均默,原名梁治華,字實秋,筆名子佳、秋郎,程淑等,中國著名的散文家、學者、文學批評家、翻譯家,華人世界第一個研究莎士....
資助民初精神網
        回頂部     寫評論

 
評論集
暫無評論!
發表評論歡迎你的評論
昵稱:     登陸  註冊
主頁:  
郵箱:  (僅管理員可見)

驗證:   验证码(不區分大小寫)  
© 2011   民初思韻網-清末民初傳奇時代的發現與復興   版權所有   加入收藏    設為首頁    聯繫我們    1616導航