程序設(shè)計方法的演化及極限(4)

字號:

5.程序設(shè)計方法的極限
    軟件工程發(fā)展的一個側(cè)重方向是對軟件開發(fā)過程中分析、設(shè)計的方法的研究。這方面的第一個重要成果就是在70年代風(fēng)靡一時的結(jié)構(gòu)化開發(fā)方法,即PO(面向過程的開發(fā)或結(jié)構(gòu)話方法)。 PO是人們在用計算機世界來表達(dá)現(xiàn)實世界時,追求過程話、模塊化、封裝以及更高的抽象的結(jié)果。人們用計算機來映射現(xiàn)實世界時,最低層的實現(xiàn)無非是靠數(shù)字電路技術(shù)產(chǎn)生的高電平與低電平信號。在PO中,人們關(guān)注的是如何用函數(shù)和過程來實現(xiàn)對現(xiàn)實世界的模擬,將其映射到計算機世界之中。 OO是這種抽象層次不斷提高的過程的自然發(fā)展結(jié)果,它采用類和對象的概念,把變量以及對變量進(jìn)行操作的函數(shù)和過程封裝在一起,用這種更高一級的抽象來表達(dá)客觀世界。通常,一個對象包含一些屬性和方法,它對應(yīng)于自然語言中一個有意義的名詞,描述了現(xiàn)實世界中的一個物體(物理實體)或概念(抽象實體)。
    我們知道,軟件工程的發(fā)展歷史就是人們不斷追求更高的抽象、封裝和模塊化的歷史。OO當(dāng)然不會是歷史的終結(jié)。盡管不能精確得到OO之后是什么,我們至少可以推知,OO之后的XO,必然將是比OO更高一級的抽象。它所依賴的核心概念必然高于并包容對象這一概念。正如對象高于并包容了函數(shù)和變量一樣。
    OO之后是什么呢?可能是FO--Function Oriented(面向泛函)。這里的Function不同于我們在當(dāng)前編程所用的函數(shù)Function,這里的Function指職能模塊高級抽象。所謂職能模塊,是指可獨立完成特定任務(wù),而對無力完成的任務(wù)可自行找到具備完成該任務(wù)功能的其它職能模塊,并與之建立聯(lián)系以合力完成工作的功能體。FO 需要高速智能、智能接口、分布式技術(shù)、并行技術(shù),最重要的是需要一個國際化的機構(gòu)。
    假如,OO之后是FO,那么我們當(dāng)然要問FO之后會是什么呢?再往下又會是什么,有沒有一個極限呢?如果有極限是什么呢?如果從計算機和數(shù)學(xué)理論回答這個問題是很困難的,但是,我們換個角度,以哲學(xué)的觀點來分析這個問題。現(xiàn)實世界中的任何事物都有其發(fā)生、發(fā)展、成熟和滅亡的過程,假如把程序設(shè)計方法是一個事物,那么它也應(yīng)該有其發(fā)生、發(fā)展、成熟和滅亡的經(jīng)歷。正如最初是不存在程序設(shè)計方法這個概念,隨著計算機硬件的發(fā)展,出現(xiàn)了SP方法,緊接著就是OOP方法,到后OOP時代…,程序設(shè)計方法也遵循著這樣一個自然規(guī)律。也就是說,程序設(shè)計方法肯定是有其極限的,可能若干年后我們所需要的不在是程序設(shè)計方法這樣一個概念了,而是在更抽象的層次上智能的生產(chǎn)軟件。 現(xiàn)在讓我們假設(shè)軟件工程已經(jīng)發(fā)展到了這樣一個理想的境界,有一天我們實現(xiàn)了自然語言編程,是否就萬事大吉了?換句話,自然語言是否能很好地描述、表達(dá)客觀感知世界?維特根斯坦在《邏輯哲學(xué)論》里已經(jīng)指出:世界的意義必定存在于世界之外;實際上存在著不可表達(dá)的東西;這顯示了它的存在,它是神秘的;也就是說,外部世界中存在一些我們可以感知卻無法用語言來表達(dá)的東西;“對于那些不可言說的,必須保持沉默”這句話,成為我們最后的極限。