Posted on 2007-03-18 23:05
canonical 閱讀(1653)
評論(0) 編輯 收藏 所屬分類:
設計理論
??? 軟件這個領域中傳統上占優勢的是自vonNeumann以降的數學視角,計算問題是其思想內核,而函數式語言無疑是其比較貼切的表現。但是僅有數學,我們對于世界的認識是不充分的。有這樣一個笑話。燒一壺水的完整步驟如下:1.向空壺中注滿水 2.放到火爐上 3.燒到冒泡。現在有半壺水,求解燒水的步驟。數學家的回答是直接把半壺水倒掉,然后宣稱問題已經解決,因為它已經被歸結為第一個問題。實際上數學的視角直接限制了某些命題進入研究者的領域。現在業界占主流的面向對象技術,并不像是理論界的自然創造,它的思想來源更像是來自于開發窗口系統的工程實踐。
http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html.
??? 面向對象技術的核心是描述問題,它試圖實現業務概念和業務關系在程序中的直接表達,所謂更貼近人的思維方式。但是從面向對象的實際操作過程我們即可得知,這里所謂的貼近只是貼近人們的常識而已。常識是有意義的,但也是淺薄的。當程序功能變得愈加復雜,程序的結構不再那么直觀的時候,我們從面向對象理論得到的支持并不如最初它宣稱的那樣的巨大。早期面向對象技術所提出的枚舉系統中所有名詞和動詞的設計方法現在看起來無疑是非常的幼稚。如何確定一個系統中到底需要定義多少個對象,以及如何確定它們之間錯綜復雜的交互關系,這些并不是通過我們的業務常識能夠確定的。
??? 在具體的,特定的常識與抽象的數學之間,存在著所謂的物理學。常識總是和一定的“有意義”的場景綁定著,可以直觀的理解。而數學則蒸餾出一些純粹的符號,試圖與所有預置的意義劃清界線。物理學是折衷主義的,或者說是非常狡詐的。它選擇了只在需要的時候詮釋。在物理學的推導中,大量的中間過程都是數學性的,難以尋找到明確的物理含義的,但是我們無視它,只對某個最終結論加以解釋。事實就是公式千千萬,但是我們卻只對其中的某些說:嗯,這里面有物理。與此對應,在軟件開發中,將直觀的業務需求映射到通用的程序語言實現時并不是那么直接的,在這之間可以存在著超過一般人想象的與特定業務無關的厚重的技術層。在這個層面中可以定義出非常復雜的交互模式,并在不同的特定場景下將其詮釋為不同的業務應用。這也正是平臺技術賴以生存的基礎。
??? 豐富的物理學的根基在于豐富的物質結構,它的核心是動力學。實際上單量子體系并不如想象中那樣難以研究,這個領域充斥著粗魯的線性近似,而它們的預測精度卻都難以想象的高。真正的復雜性來自于簡單元素所構成的復合結構,以及這些結構之間的相互作用。隨著ROR這樣的動態語言框架的流行,很多人把它們的成功歸結為語言特性的增強,這在我看來并不是富有成果的方向。誠然,更多的語法糖(syntax sugar),更多的動態性可以降低我們構建某些復雜結構的代價,但是這種降低最多是減少一兩倍代碼錄入量,而絕不可能是數量級上的影響。對于程序開發可以起到決定性作用的是那些復雜的大范圍結構,而不是通用語言本身所提供的那些抽象的簡單的局部結構本身。當然,一般人大概很少有能力做出超過一定難度的創造,一般都只是依賴現有的語言,現有的框架以直白的方式實現功能,因此很難想象可以在語法特征更少的java中輕易實現超過ROR的開發便捷性。
??? 通用語言的發展必然是有極限的, 也必然是貧瘠的, 因為它無法利用有限場景下的信息. 而DSL(Domain Specific Language)將注意力集中在某個特定的領域(domain)中,便可以名正言順的引入非常復雜的語法結構. 這些結構旨在本領域中具有意義,而不用擔心超出應用范圍后遭到"冗余設計"的詬病. 我無法想像在一種通用程序語言中會規定Witrix平臺中BizFlow這樣的結構設計,但是作為一種domain相關的語言結構,它的表述卻無疑是非常高效的。我相信,隨著我們對于程序結構的認識的不斷深化, 在DSL所構建的復雜結構空間中可以發展出一些真正有趣的技術.
??? 對于DSL存在著兩個常見的誤解.一是DSL是存在于特定領域的,因此它是一種受限制的語言,應該在計算能力上弱于圖靈機.但其實DSL的核心在于高效的表達,在于直接存在的高階結構,與它的形式計算能力并無關系.正如物理中Lagrange表述和Hamilton表述在數學上是等價的一樣,我們的選擇只在于某種情況下某種描述方式會更加方便。這里所玩的游戲更像是概念空間中的拓撲變換。
??? 關于DSL的另一個誤解是DSL的表述形式應該接近自然語言.但事實上數學符號和化學公式都是高效的DSL,它們的表達形式甚至內在邏輯都和我們的自然語言相去甚遠.我們是否已經完全解決了程序問題,而只是要把這種能力向無知的客戶轉授?目前在程序編碼的過程中我們仍然面臨著大量未決的問題,程序員應該是DSL的直接受益者.此外,西人對于語言的認知是偏狹的,因為他們眼中的language只有拉丁語系和日耳曼語系,而不知道這個世界上還存在著不符合西文語法的漢語。按照朱光潛的詩論,西人長時間認為詩是不宜于寫景狀物的,因為語言是串行的,因而只適于按照步驟敘事,卻不了解漢語的自由組合形式和豐富的單字表現力可以輕易捕獲微妙的瞬間.