對新型軟件程序語言及架構(gòu)的一點討論

提要:OO之后忠售,軟件程序架構(gòu)領(lǐng)域再無大師。一個看似簡單而根本的問題從真正未解決,那就是軟件或計算機的世界與現(xiàn)實世界的關(guān)系呼巷。

程序架構(gòu)與軟件、應(yīng)用架構(gòu)

最近一直在關(guān)注豆瓣上Zhang3關(guān)于新型程序語言研究的情況[1]赎瑰,及一些相關(guān)的討論王悍。這里有一個與我的重點領(lǐng)域模型與建模以及架構(gòu)契合的地方,即軟件程序架構(gòu)或簡單稱為“程序架構(gòu)”(programming architecture)餐曼。這是一個不太常用的提法压储,相對于常見的軟件(系統(tǒng))架構(gòu)和應(yīng)用架構(gòu),它更單純源譬、狹窄集惋。在這個范圍內(nèi),我們主要關(guān)心程序(programs)的組織框架與設(shè)計原則踩娘,相對忽略更高層次上的東西刮刑,例如組件、模塊养渴、服務(wù)器雷绢、配置與部署等等。從另一個角度理卑,這個話題與編程語言的結(jié)構(gòu)和設(shè)計緊密相連翘紊。

實際上,當(dāng)前主流的程序架構(gòu)就是“面向?qū)ο蟆保∣O)藐唠。我一直認為帆疟,OO原本應(yīng)該是一種有特定適用范圍的架構(gòu)風(fēng)格。然而在近幾十年的軟件開發(fā)領(lǐng)域宇立,OO被主流們推到了一般軟件架構(gòu)這樣一個幾乎是至高無上的位置踪宠,甚至還進一步被當(dāng)作一般問題分析與建模的基礎(chǔ),乃至“哲學(xué)”泄伪。例如在MDE/MDA領(lǐng)域也是如此殴蓬。對此,Zhang3和我一樣,屬于“不同意見者”染厅。他對這個話題有著相當(dāng)深入的分析之[2]痘绎。而他的開發(fā)計劃目標(biāo)之一,就是開辟OO之外的肖粮,更合理和有力的編程技術(shù)空間:非OO的方法學(xué)和編程體系(編程語言及集成開發(fā)環(huán)境IDE等)孤页。

更經(jīng)典的程序架構(gòu)是 Niklaus Wirth 的“程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法”(Algorithms + Data Structures = Programs)。最近涩馆,隨著一般模型理論方面的一些進展行施,我“意外”地發(fā)現(xiàn),這一在OO時代被認為過時的公式魂那,恰恰揭示了軟件程序的根本結(jié)構(gòu)蛾号,應(yīng)是萬變不離之宗。OO也是建立于其上的涯雅;非OO的編程架構(gòu)鲜结,同樣必須建立其上。但這絕對不是要回到3GL時代活逆,需要通過新的模型與建模理論精刷,更清楚地揭示其理論基礎(chǔ)和作用方式,建立新的理解和應(yīng)用準(zhǔn)則蔗候。

這正對應(yīng)著現(xiàn)有軟件理論最蒼白的一環(huán):在圖靈機之上怒允,“數(shù)據(jù)結(jié)構(gòu)+算法”(還可帶上“關(guān)系模型”)之外,另一些重要的東西锈遥,無論在理論還是技術(shù)上纫事。這個層次也是決定計算機從序列演算(圖靈機)變成信息(數(shù)據(jù)的意義)處理機——電腦的關(guān)鍵。OO是當(dāng)前公認的主要解決方案迷殿,但實際上它是直覺的儿礼,缺乏理論基礎(chǔ)的;而其它的應(yīng)用程序?qū)崿F(xiàn)庆寺?幾乎都是更加隨意、純經(jīng)驗的構(gòu)造诉字。

可以清楚地看到懦尝,近二十余年國際軟件工程主流,同樣將注意力集中到了建模與模型上壤圃,但遺憾的是陵霉,主流們同時也不容置疑地把建模與OO劃上了等號,集OO方法大成的統(tǒng)一建模語言UML成為絕對核心伍绳,以至于在當(dāng)前幾乎所有與軟件建模相關(guān)的國際學(xué)術(shù)與技術(shù)交流中踊挠,形成了某種談建模,就必須基于UML這樣一種既狹隘,又霸道的氛圍效床。

另一方面睹酌,還可以看到,被稱為軟件發(fā)展一貫的主線:抽象層次升級剩檀,在CASE, 4GL等那里開始撞墻憋沿。聲明性編程、函數(shù)式編程沪猴、面向方面等辐啄,各有獨特,但未現(xiàn)王者之相运嗜。建模成為軟件工程技術(shù)及學(xué)術(shù)界探索的焦點壶辜,其中最有代表性的是隨著對象管理組織(OMG)的模型驅(qū)動架構(gòu)(MDA)浮現(xiàn)出來的模型驅(qū)動工程(MDE)[3],雖然國內(nèi)對此重視不多担租,但這實際是軟件工程前沿(其它如云士复,各種Web應(yīng)用技術(shù),包括SOA等與之相比翩活,都是更加應(yīng)用技術(shù)層的東西)阱洪。然而,近年對MDE的觀察讓我覺得它在某種意義上菠镇,仍然沒有突破CASE, 4GL的一些局限冗荸,很可能又在撞墻[4]。MDA剛出爐我就有這種判斷利耍,最近一年的跟蹤以及參與到國際MDE社區(qū)中的直接交流蚌本,讓我這種看法更強了。

正因為如此隘梨,我們可以作出這樣一個判斷:當(dāng)前的電腦應(yīng)用建構(gòu)技術(shù)程癌,依然沒有找到最合理與基本的架構(gòu);在有堅實數(shù)學(xué)基礎(chǔ)的圖靈機之上轴猎,還需要一個重要的基礎(chǔ)層次嵌莉,它同樣必須堅實地坐落在數(shù)學(xué)之上,它還沒有出現(xiàn)[5]捻脖。我認為锐峭,OO目前處在這個不能勝任的位置上,最終將淪為一場猴子稱大王的故事可婶。

邏輯系統(tǒng)如何連接到現(xiàn)實世界

邏輯系統(tǒng)(即形式系統(tǒng))是一個封閉的沿癞、自洽的符號/運算(推理)系統(tǒng),其本身并不包括(決定)它的用途矛渴。換言之椎扬,一個完善的邏輯系統(tǒng)內(nèi)部并不需要包括它與外界世界相連的固定方案。實際上,這也可以看作其稱為“形式化的”(formalized)的原因蚕涤。Zhang3的基本思路筐赔,就是構(gòu)造一種完全基于邏輯的非OO編程語言,這這一形式系統(tǒng)钻趋,毫無疑問川陆、必然地,基于圖靈機蛮位,如他所說[1]:

“真實世界過于復(fù)雜较沪,與語言的糾纏關(guān)系難以梳理,不如先退回到圖靈機所構(gòu)造的確定性世界失仁,在這個世界中探索語言的奧秘尸曼。”

這種自底向上的構(gòu)造策略萄焦,很符合我的建構(gòu)主義哲學(xué)控轿。事實上,任何現(xiàn)代計算機編程語言都是在構(gòu)造一個基于圖靈機的形式系統(tǒng)拂封,但如何構(gòu)造茬射,途徑很多,這也就是本文所討論的程序架構(gòu)問題冒签。Zhang3在這個方面提出了獨特的想法在抛,其中一個很重要的方面,就是拋棄目前似乎是主流的面向?qū)ο蟮募軜?gòu)(OO)萧恕,而完全基于邏輯(和關(guān)系代數(shù))刚梭,遵循分析哲學(xué)中的基本原則實現(xiàn)。

然而票唆,形式化構(gòu)造只是這個課題一半朴读。無論形式系統(tǒng)怎樣構(gòu)建,最終必須以某種方式連接到現(xiàn)實世界走趋,才能發(fā)揮其作用——這就是建立有意義的計算機程序重要的另一半衅金。換言之,我們可以策略性地將形式系統(tǒng)建構(gòu)以及它如何工作(在現(xiàn)實世界中)適當(dāng)分離吆视,但終究要完善地解決典挑。Zhang3的工作無可避免地要面對這個問題,而他最近的兩篇日志說明啦吧,對這個問題還沒有一個穩(wěn)定的、滿意答案[6]拙寡。同時授滓,雖然出發(fā)點不同,我發(fā)現(xiàn)有關(guān)模型與建模基本理論的研究般堆,正包含著對這個問題的基本回答在孝。我相信,模型與基于模型的操作是將邏輯系統(tǒng)連接到現(xiàn)實世界最基本的橋梁淮摔。要具體地建構(gòu)和應(yīng)用這個橋梁私沮,就必須充分地運用我們所看到(研究中)的一般建模理論,及模型工作機制等基本原理和橙。

Rapaport等的啟示

前面提到仔燕,Zhang3在提出的基本問題之一,是形式系統(tǒng)如何與現(xiàn)實世界聯(lián)接魔招。從另一個角度晰搀,它也就是語言的語義問題,語法和語義關(guān)系的具體實現(xiàn)方式問題办斑。再廣一點外恕,可以追溯到經(jīng)典的“意義問題”上∠绯幔回到與計算機及其語言相關(guān)的領(lǐng)域鳞疲,這同樣是長期被學(xué)術(shù)界重點研究的基礎(chǔ)課題之一。我發(fā)現(xiàn)蠕蚜,W.J. Rapaport 等的一些工作尚洽,可以直接與我在一般建模方面的一些進展聯(lián)系起來,形成一個基本完整理論框架波势,對于本文討論的主題翎朱,同樣可以起到關(guān)鍵的指導(dǎo)作用。

這些工作包括對“怎樣從語法中產(chǎn)生語義”這一基本問題的回答[7]尺铣。Rapaport從什么是“理解”的角度拴曲,詳細地分析了其中的語法、語義結(jié)構(gòu)及關(guān)系問題凛忿。理解就是獲得語義澈灼,他認為,我們總是要基于一個域(domain)理解(解釋)另一個域店溢。而這是一個遞歸的過程叁熔,最終總會歸結(jié)到一個域(稱為基域,base)床牧,沒有任何域來解釋它荣回,必須基于自身(也就是語法)做出解釋,這樣就形成了一個語義解釋的連續(xù)統(tǒng)(continuum)[8]戈咳。他指出[7]:

當(dāng)一個語法域擁有其自己的語義域心软,其語義解釋函數(shù)或者將記號映射到其自身壕吹,或者映射到其它記號。對前一種情況删铃,我們通過對語法“達成習(xí)慣”來理解域耳贬。對后一種情況,若所有的記號都映射到另一個不同的記號——則此情形相當(dāng)于在使用一個字典猎唁。[...]在任何情況下咒劲,我們都有封閉的意義網(wǎng)絡(luò)——一種整體性的、“概念性角色語義”诫隅。這就是為何語義能由語法中出現(xiàn)的答案腐魂。

實際上,我認為阎肝,從認知主體如何理解語言的意義角度挤渔,他的方案也許還有很多爭論,但反過來风题,從構(gòu)造一個有限/實用的形式語言系統(tǒng)判导,并關(guān)聯(lián)到問題領(lǐng)域(現(xiàn)實世界)角度,這卻給了我們很好的啟發(fā)沛硅。尤其是針對本文討論的話題眼刃,如Zhang3所明確提出的開發(fā)課題:如何在最簡單/基本的圖靈機(可將其視為最基本的語法/語義域)的基礎(chǔ)上,建立一個形式體系摇肌,它能夠構(gòu)造出我們期望的各種復(fù)雜構(gòu)造擂红,來對應(yīng)到現(xiàn)實世界的各種事物(語義)。從軟件工程領(lǐng)域提倡的“抽象層次升級”的角度看围小,一種自底向上的昵骤,建構(gòu)性的“表達連續(xù)統(tǒng)”,可以看作是“抽象層次”的內(nèi)涵肯适,以此為線索变秦,再結(jié)合我們對于一般模型理論及其工作機制的一系列新認識,就發(fā)現(xiàn)框舔,不僅對于抽象層次蹦玫,我們可以在這個基礎(chǔ)上全面地重新審視諸如4GL/DSL、或所謂“聲明性”概念背后的一些東西刘绣,對幾乎所有MDE的關(guān)鍵理論樱溉,做出更明確的解讀或梳理。由此可能實現(xiàn)一種框架纬凤,將4GL/DSL的某些內(nèi)涵福贞,數(shù)據(jù)庫,包括信息科學(xué)另一個重要停士、活躍的領(lǐng)域肚医,本體工程方面的東西绢馍,自然地聚和在一起向瓷。在這個體系中肠套,數(shù)據(jù)結(jié)構(gòu)/模型,都有特定的含義猖任,并非(完全)等同于過去的理解你稚,甚至對于程序、算法這樣的基本概念也是如此朱躺。其中刁赖,我稱之為“一般建模理論”的那部分工作,最重要的貢獻之一长搀,是將這種框架落實到嚴(yán)格的數(shù)學(xué)基礎(chǔ)之上宇弛,這是確保我們的理論與方案堅實、有效最關(guān)鍵的保障源请。(初發(fā)于此)

————

[1] 見Zhang3:大綱:一封關(guān)于我的研究的郵件回復(fù)枪芒、第五重等。
[2] 見其面向?qū)ο蟮慕鈽?gòu)等文谁尸,以及關(guān)系代數(shù)與面向?qū)ο罄碚?/a>等舅踪。網(wǎng)絡(luò)上waterbird (1998) 的 OO,OO以后良蛮,及其極限<1>抽碌、<2>,是我較早讀到的極具啟發(fā)性的早期討論决瞳。
[3] 初步概念參見企業(yè)工程論壇模型驅(qū)動工程(MDE):一個初步簡介等货徙。
[4] 在Models: Execution or More及討論中,我略帶隱晦指出了這一點皮胡。大家看來在有意無意地回避或無視痴颊,而我在其它地方看見過他們對這個問題頗強烈的否認。
[5] 這個問題本質(zhì)上還與計算機架構(gòu)關(guān)聯(lián)胸囱,例如可以直接聯(lián)系到到馮·諾依曼體系結(jié)構(gòu)的瓶頸及操作系統(tǒng)的功能等問題祷舀,但也完全有必要和可能在當(dāng)前的計算機體系結(jié)構(gòu)之下找到對應(yīng)的解決方案。
[6] Zhang3的相關(guān)討論如柏拉圖的理念世界等烹笔,最近的兩篇是 一個關(guān)于形式系統(tǒng)的問題裳扯、實現(xiàn)方法的重大變化–備忘。我對此的一個初步意見谤职,也是本文的前身饰豺,見我的豆瓣日志:關(guān)于軟件程序架構(gòu)的一些基本想法
[7] Rapaport, W.J., “Understanding Understanding: Syntactic Semantics and Computational Cognition”, Philosophical Perspectives, Vol. 9 (1995)
[8] 這里的連續(xù)統(tǒng)(continuum)概念允蜈,應(yīng)該出自B. C. Smith (1987)冤吨。他從知識表達的角度研究語義問題蒿柳,提出了表達系統(tǒng)(這里可粗略理解為語義系統(tǒng))中的對應(yīng)連續(xù)統(tǒng)(correspondence continuum)的主張。

※ Zhang3:與TY討論語義解釋連續(xù)統(tǒng)的問題漩蟆,本文發(fā)出后所做的一次很有意思的討論垒探。

原始發(fā)表:企業(yè)工程論壇,2011-08-19,
http://www.ee-forum.org/pub/ty/2011-08-p2910.html

作者印記:c8cc97


文中提及(鏈接到)企業(yè)工程論壇的文章收錄在兩本文集中怠李,其中部分在此站有重發(fā)(文中鏈接已修改)圾叼。文集下載地址:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市髓介,隨后出現(xiàn)的幾起案子惕鼓,更是在濱河造成了極大的恐慌,老刑警劉巖唐础,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箱歧,死亡現(xiàn)場離奇詭異,居然都是意外死亡彻犁,警方通過查閱死者的電腦和手機叫胁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汞幢,“玉大人驼鹅,你說我怎么就攤上這事∩瘢” “怎么了输钩?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仲智。 經(jīng)常有香客問我买乃,道長,這世上最難降的妖魔是什么钓辆? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任剪验,我火速辦了婚禮,結(jié)果婚禮上前联,老公的妹妹穿的比我還像新娘功戚。我一直安慰自己,他們只是感情好似嗤,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布啸臀。 她就那樣靜靜地躺著,像睡著了一般烁落。 火紅的嫁衣襯著肌膚如雪乘粒。 梳的紋絲不亂的頭發(fā)上豌注,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音灯萍,去河邊找鬼轧铁。 笑死,一個胖子當(dāng)著我的面吹牛竟稳,可吹牛的內(nèi)容都是我干的属桦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼他爸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了果善?” 一聲冷哼從身側(cè)響起诊笤,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巾陕,沒想到半個月后讨跟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡鄙煤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年晾匠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梯刚。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡凉馆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出亡资,到底是詐尸還是另有隱情澜共,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布锥腻,位于F島的核電站嗦董,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瘦黑。R本人自食惡果不足惜京革,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望幸斥。 院中可真熱鬧匹摇,春花似錦飒赃、人聲如沸蜗帜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽演顾。三九已至供搀,卻和暖如春隅居,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背葛虐。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工胎源, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人屿脐。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓涕蚤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親的诵。 傳聞我的和親對象是個殘疾皇子万栅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容