從傳統(tǒng)邏輯到經(jīng)典數(shù)理邏輯,形式邏輯的發(fā)展始終與科學(xué)和哲學(xué)的發(fā)展相伴。當(dāng)今,從科學(xué)發(fā)展的角度來看,一方面,經(jīng)典數(shù)理邏輯的概念、理論和方法,不僅在程序設(shè)計(jì)語言的研究中獲得了完全的認(rèn)同,而且在計(jì)算機(jī)軟硬件設(shè)計(jì)和實(shí)現(xiàn)技術(shù)方面起到了原則性的指導(dǎo)作用。另一方面,計(jì)算機(jī)科學(xué)技術(shù)經(jīng)過了六十多年發(fā)展所積淀的知識(shí),蘊(yùn)涵著經(jīng)典數(shù)理邏輯所不能涵蓋的內(nèi)容,這些內(nèi)容需要我們?cè)诶^承經(jīng)典數(shù)理邏輯現(xiàn)有成果的基礎(chǔ)上,通過引入新的概念、原理、演算和方法,來發(fā)展數(shù)理邏輯。
從哲學(xué)發(fā)展的角度來看,唯物辯證法一經(jīng)出現(xiàn),就始終指向一條通向未來的道路,代表著既不忘記過去,又向一切新的和具有挑戰(zhàn)意義的事物開放的進(jìn)取精神。辯證唯物主義者認(rèn)為,邏輯不是關(guān)于思維的外在形式的學(xué)說,而是一切物質(zhì)的、自然的和精神的事物的發(fā)展規(guī)律的學(xué)說,即關(guān)于世界全部具體內(nèi)容及對(duì)它的認(rèn)識(shí)的發(fā)展規(guī)律的學(xué)說;不僅哲學(xué),而且一切科學(xué),現(xiàn)在都必須在自己的特殊領(lǐng)域內(nèi)揭示這個(gè)發(fā)展規(guī)律。它取消了形而上學(xué)者所附加給形式邏輯的規(guī)律的絕對(duì)意義[1],同時(shí)又呼喚著形式邏輯出現(xiàn)相應(yīng)的成就。讀了李未院士的專著《數(shù)理邏輯》,我感覺仿佛在驚濤駭浪中長期漂泊之后的船夫看到陸地,又感覺仿佛有一只巨手在運(yùn)筆揮毫,使在信息時(shí)代的急劇變化中變得模糊的世界圖景忽然色彩分明、輪廓清晰起來。
一
從內(nèi)容介紹來看,李未院士的《數(shù)理邏輯》一書(以下簡稱《數(shù)》)共分十章,前五章是經(jīng)典數(shù)理邏輯部分,它涵蓋了經(jīng)典數(shù)理邏輯的核心內(nèi)容,后五章是作者的創(chuàng)新部分,稱為一階語言的公理化進(jìn)程理論。兩部分合在一起,總稱為一階語言的理論框架。而我的感覺是,《數(shù)》的創(chuàng)新從第一部分就已拉開序幕。
《數(shù)》的開篇便顯示出氣魄非凡。以往的數(shù)理邏輯書大都強(qiáng)調(diào)只研究推理的形式,不關(guān)心推理的內(nèi)容,只研究前提的真是否蘊(yùn)涵結(jié)論的真,不研究前提和結(jié)論的真或假。這使得數(shù)理邏輯在絕大多數(shù)人看來是一片“純乎其純”的研究領(lǐng)地。而《數(shù)》一開始就直指急劇變化的計(jì)算機(jī)科學(xué)研究領(lǐng)域。這本書不僅要用抽象代數(shù)、數(shù)論等數(shù)學(xué)理論解釋數(shù)理邏輯的概念、理論和方法,還要用計(jì)算機(jī)、程序設(shè)計(jì)語言和軟件的實(shí)踐來解釋它們,要將數(shù)理邏輯的概念、理論和方法與計(jì)算機(jī)、程序設(shè)計(jì)語言和軟件的研究及發(fā)展聯(lián)系起來。要將計(jì)算機(jī)科學(xué)、人工智能和計(jì)算機(jī)軟硬件技術(shù)經(jīng)過六十多年發(fā)展所積淀下來的、經(jīng)典數(shù)理邏輯所不能涵蓋的概念、理論和方法抽象和總結(jié)出來,進(jìn)而豐富和充實(shí)經(jīng)典數(shù)理邏輯的內(nèi)容,以便對(duì)信息科學(xué)和技術(shù)的發(fā)展起到理論上的指導(dǎo)作用。為此,《數(shù)》把軟件系統(tǒng)的版本這個(gè)反映軟件系統(tǒng)進(jìn)化的概念和隨之而來的版本序列這個(gè)記錄一個(gè)軟件系統(tǒng)進(jìn)化過程和變化趨勢(shì)的概念作為基本概念,認(rèn)為數(shù)理邏輯要發(fā)展,就應(yīng)該將形式理論的版本和版本序列作為新的研究對(duì)象。同時(shí)把軟件測(cè)試問題、軟件開發(fā)方法問題和元語言環(huán)境問題也作為研究的基本問題。
《數(shù)》把形式理論系統(tǒng)的模本由最初的幾何學(xué)擴(kuò)展到計(jì)算機(jī)這個(gè)急劇變化的、每時(shí)每刻都在影響和改變著每一個(gè)人生活的科學(xué)領(lǐng)域。
二
恩格斯指出:“思維規(guī)律的理論決不像庸人的頭腦關(guān)于‘邏輯’一詞所想象的那樣,是一成不變的‘永恒真理’。形式邏輯本身從亞里士多德直到今天都是一個(gè)激烈爭論的場所。而辯證法直到現(xiàn)在還只被亞里士多德和黑格爾這兩個(gè)思想家比較精密地研究過?!盵2]毛澤東強(qiáng)調(diào),形式邏輯與辯證邏輯之間沒有低級(jí)、高級(jí)之分。[3]它們都是關(guān)于思維及其規(guī)律的學(xué)說。而自然科學(xué)發(fā)展本身的辯證性質(zhì)和相應(yīng)的辯證邏輯取得的成就,要求形式邏輯應(yīng)該有新的與之相適應(yīng)的內(nèi)容和形式。今天,《數(shù)》給我們看到了形式邏輯的這種發(fā)展,可以說,它使辯證邏輯得到形式化描述,與辯證邏輯達(dá)到高度的統(tǒng)一。
1.對(duì)于每一個(gè)研究領(lǐng)域而言,公理化程度是評(píng)價(jià)該研究領(lǐng)域是否已經(jīng)程序化的標(biāo)準(zhǔn)。馬克思曾指出:“在形式上,敘述方法必須與研究方法不同。研究必須充分占有材料,分析它的各種發(fā)展形式,探尋這些形式的內(nèi)在聯(lián)系。只有這項(xiàng)工作完成以后,現(xiàn)實(shí)的運(yùn)動(dòng)才能適當(dāng)?shù)臄⑹龀鰜?。這一點(diǎn)一旦做到,材料的生命一旦觀念地反映出來,呈現(xiàn)在我們面前的就好像是一個(gè)先驗(yàn)的結(jié)構(gòu)了?!盵4]這個(gè)先驗(yàn)的結(jié)構(gòu)就是公理系統(tǒng)。
正如《數(shù)》中所說:“公理化方法的使用是有條件的。只有在關(guān)于領(lǐng)域知識(shí)的研究已經(jīng)相當(dāng)成熟的條件下,即通過大量的實(shí)驗(yàn)和觀測(cè),積累了豐富的數(shù)據(jù),而這些數(shù)據(jù)與研究者提出的基本概念一致,并支持公理系統(tǒng)對(duì)領(lǐng)域知識(shí)結(jié)構(gòu)的描述,公理化方法的優(yōu)越性才能充分體現(xiàn)出來?!?[5]
《數(shù)》一開始就指出,領(lǐng)域知識(shí)的核心部分是公理系統(tǒng),而一階語言是描述公理系統(tǒng)的語言。
但是公理化方法是有局限性的,對(duì)一個(gè)領(lǐng)域知識(shí),不存在一個(gè)公理系統(tǒng),使得關(guān)于此領(lǐng)域知識(shí)的任何一個(gè)命題或該命題的否定,必是這個(gè)公理系統(tǒng)的邏輯結(jié)論。也就是說,我們不可能一次抓住領(lǐng)域知識(shí)的全部本質(zhì)特征。辯證邏輯認(rèn)為:“真理是包含在認(rèn)識(shí)過程中,包含在科學(xué)的長期的歷史發(fā)展中,而科學(xué)從認(rèn)識(shí)的較低階段上升到較高階段,愈升愈高,但是永遠(yuǎn)不能通過所謂絕對(duì)真理的發(fā)現(xiàn)而達(dá)到這樣一點(diǎn),在這一點(diǎn)上它再也不能前進(jìn)一步,除了袖手一旁驚愕地望著這個(gè)已經(jīng)獲得的絕對(duì)真理出神,就再也無事可做了。這不僅在哲學(xué)認(rèn)識(shí)的領(lǐng)域中是如此,就是在任何其他的認(rèn)識(shí)領(lǐng)域中以及在實(shí)踐行動(dòng)的領(lǐng)域中也是如此?!盵6]辯證邏輯不過是對(duì)包含著一連串互相銜接的階段的那種發(fā)展過程的闡明。
《數(shù)》也明確指出,每一個(gè)數(shù)學(xué)和自然科學(xué)理論的形成都不是畢其功于一役的,而是一個(gè)進(jìn)化過程,與其說經(jīng)典數(shù)理邏輯是以公理系統(tǒng)為研究對(duì)象,不如說它是以公理系統(tǒng)的一個(gè)階段版本為研究對(duì)象更為準(zhǔn)確。在這個(gè)過程中,人們創(chuàng)造出一個(gè)又一個(gè)理論或理論的新版本,這些理論形成了一個(gè)版本序列,而該版本序列逐步逼近領(lǐng)域知識(shí)的真理。
《數(shù)》中舉例,Windows的每一個(gè)版本都是由程序語句組成的集合,是一個(gè)形式系統(tǒng),而它的‘規(guī)約’,有些書中也稱‘需求說明’,則是一個(gè)一階形式理論。雖然此形式理論可能非常巨大而復(fù)雜,但是站在軟件規(guī)約的抽象層面上來觀察這些版本的產(chǎn)生,那么這些規(guī)約所組成的序列就是一個(gè)形式理論的序列,而理想的Windows系統(tǒng)的規(guī)約就是這一個(gè)形式理論序列的極限。
現(xiàn)在需要對(duì)科學(xué)理論的進(jìn)化過程中形成的版本序列進(jìn)行整體的研究,這個(gè)研究方法需要形式化描述,以便把專家在公理化進(jìn)程中,憑直觀和經(jīng)驗(yàn)所做的智力活動(dòng)轉(zhuǎn)化為符號(hào)演算,使研究能夠深入的進(jìn)行。這是數(shù)理邏輯發(fā)展到現(xiàn)階段應(yīng)該解決的問題?!稊?shù)》在“形式理論序列”一章引入了形式理論序列的新概念,它是研究領(lǐng)域知識(shí)進(jìn)化過程不可缺少的。每一種數(shù)學(xué)和自然科學(xué)理論,在其發(fā)展的各個(gè)歷史時(shí)期的版本都組成科學(xué)理論序列。形式理論的版本序列是這些科學(xué)理論序列在一階語言中的抽象表達(dá)形式,而科學(xué)理論序列是形式理論序列在不同模型中的解釋。
2.在辯證邏輯看來,“一切發(fā)展,不管其內(nèi)容如何,都可以看作一系列不同的發(fā)展階段,它們以一個(gè)否定另一個(gè)的方式彼此聯(lián)系著?!盵7]
《數(shù)》的“事實(shí)反駁與修正演算”一章,從領(lǐng)域知識(shí)的公理化進(jìn)程的角度,具體為我們描述出這種“一個(gè)否定另一個(gè)的”發(fā)展過程:一方面,公理系統(tǒng)的每一個(gè)階段性版本總是不完善的,隨時(shí)可能有新的公理、原理或定律提出。從公理系統(tǒng)的抽象層面上看,我們稱這些新公理、定律和功能為新猜想。當(dāng)新猜想出現(xiàn)時(shí),公理系統(tǒng)的當(dāng)前版本必須進(jìn)行擴(kuò)充,以產(chǎn)生新版本。另一方面,公理系統(tǒng)可能包含與觀測(cè)或試驗(yàn)結(jié)果不一致的邏輯推論,即這個(gè)推論受到觀測(cè)或試驗(yàn)結(jié)果的反駁,這時(shí)公理系統(tǒng)必須改變,必須放棄此公理系統(tǒng)的當(dāng)前版本中與觀測(cè)或試驗(yàn)結(jié)果相矛盾的公理,保留那些與觀測(cè)或試驗(yàn)結(jié)果一致的公理。不僅如此,作為創(chuàng)新,《數(shù)》使用一階語言及其模型的有關(guān)概念來描述如何對(duì)公理系統(tǒng)進(jìn)行擴(kuò)充和修正,建立對(duì)形式理論的修正演算系統(tǒng),這個(gè)演算系統(tǒng)稱為R演算。該演算由四組規(guī)則組成,它們是R公理、R邏輯連接詞符號(hào)規(guī)則、R量詞符號(hào)規(guī)則和R刪除規(guī)則。同時(shí),通過一些典型實(shí)例說明R演算的使用方法,并且證明了R演算的可靠性、完全性和可達(dá)性。
3.在科學(xué)研究活動(dòng)中,研究者總是自覺或不自覺地在某種研究模式的指導(dǎo)下進(jìn)行他們的學(xué)術(shù)工作。研究模式通常告訴人們科學(xué)研究的流程和每一個(gè)階段的工作內(nèi)容,它是一種研究工作綱領(lǐng)。研究模式的好壞決定了科學(xué)研究的質(zhì)量。正如科學(xué)家不論愿意還是不愿意,都接受某種哲學(xué)的支配,好的哲學(xué),即辯證邏輯可以幫助科學(xué)家少走很多彎路一樣。
而研究模式不是思維著的悟性的產(chǎn)物,而是實(shí)踐的概括和總結(jié)?!稊?shù)》的“版本序列和過程模式”一章不僅引入了一個(gè)OPEN過程模式——從科學(xué)研究方法中總結(jié)出來的一個(gè)基本工作流程,而且還提出了一個(gè)理想的過程模式應(yīng)該具有的性質(zhì):收斂性、極限運(yùn)算與形式推理的可交換性以及保持版本的極小性。
4.直到今天,歸納與演繹之爭從未停止過。歸納派攻擊演繹不能提供新知,是重復(fù)性思維,且推理的前提需要?dú)w納提供;而演繹派則指責(zé)歸納的結(jié)論是或然的、不可靠的。
但是在唯物辯證法看來,“歸納和演繹正如分析和綜合一樣是必然相互聯(lián)系著的。我們不應(yīng)當(dāng)在兩者之中犧牲一個(gè)而把另一個(gè)高高地抬上天去,我們應(yīng)當(dāng)力求在其恰當(dāng)?shù)牡匚粊響?yīng)用它們中間任何一個(gè),而要想做到這一點(diǎn),就只有注意它們的相互聯(lián)系,它們的相互補(bǔ)充?!盵8]
《數(shù)》的“歸納推理和歸納進(jìn)程”一章給出了這種“相互聯(lián)系、相互補(bǔ)充”的形式描述。發(fā)現(xiàn)新猜想是改變公理系統(tǒng)、擴(kuò)充公理系統(tǒng)和實(shí)現(xiàn)知識(shí)進(jìn)化的主要手段。而新猜想的形成是一個(gè)復(fù)雜的過程,要把猜想的形成變?yōu)榉?hào)演算,猜想就必須是理想的猜想。歸納是一種理想的猜想,是從個(gè)別事例到普遍規(guī)律的過渡。該章引入一個(gè)歸納推理系統(tǒng),使得從公理化進(jìn)程的觀點(diǎn)來看,對(duì)任何科學(xué)問題,如果從任意猜想出發(fā),對(duì)所有事例,使用該歸納推理系統(tǒng)生成的任意版本序列,都收斂到該科學(xué)問題的全部一般性規(guī)律。
5.公理化方法的優(yōu)點(diǎn)是將對(duì)領(lǐng)域知識(shí)中命題的邏輯分析,轉(zhuǎn)變?yōu)閲?yán)格的推理,即對(duì)定理的數(shù)學(xué)證明??墒?,這就帶來一個(gè)問題:一方面,科學(xué)本質(zhì)上是整理材料的科學(xué),是關(guān)于過程、關(guān)于事物的發(fā)生和發(fā)展以及關(guān)于把這些過程結(jié)合為一個(gè)偉大整體的聯(lián)系的科學(xué),因此科學(xué)家必須是一個(gè)嚴(yán)謹(jǐn)?shù)倪壿嬐评碚?。另一方面,?yán)謹(jǐn)?shù)耐评?,即?shù)學(xué)證明,特別是難題的證明,并不是容易的事,需要有把握全局的證明策略和純熟的證明技巧。這是一個(gè)矛盾。辯證邏輯要大眾化,哲學(xué)和科學(xué)要發(fā)展,就必須解決這個(gè)矛盾。
《數(shù)》的一階語言的理論框架為解決這個(gè)矛盾奠定了理論基礎(chǔ):一旦將領(lǐng)域知識(shí)中的命題轉(zhuǎn)變?yōu)檎Z句,有關(guān)定理的數(shù)學(xué)證明都將轉(zhuǎn)變?yōu)槌绦蚧姆?hào)演算過程,并可以通過使用人機(jī)交互軟件工具完成。這就使得數(shù)學(xué)和自然科學(xué)的研究重點(diǎn)轉(zhuǎn)向了公理系統(tǒng)的建立、其協(xié)調(diào)性的證明以及有效軟件工具的實(shí)現(xiàn)等問題。辯證邏輯和形式邏輯將攜手共進(jìn),實(shí)現(xiàn)推理自動(dòng)化,即腦力勞動(dòng)自動(dòng)化。
要知道,我國科學(xué)研究中的學(xué)風(fēng)問題讓很多人痛心,一方面大量的具體科學(xué)特別是自然科學(xué)的最新成果得不到唯物辯證法的科學(xué)概括而聽任唯心主義和形而上學(xué)泛濫,另一方面又由于唯物辯證法不能及時(shí)吸取具體科學(xué)的思想營養(yǎng)而難免變成枯槁的教條?!盵9] 那么,《數(shù)》所蘊(yùn)涵的辯證唯物主義精神對(duì)我們是多么大的震撼和鼓舞??!
三
有一條主線貫串《數(shù)》的始終,這就是三個(gè)語言環(huán)境的概念。我認(rèn)為這是對(duì)顛覆了集哲學(xué)之大成的黑格爾哲學(xué)的馬克思主義實(shí)踐本體論的形式化描述。
恩格斯曾在批判主客二分的思維模式時(shí)指出:“自然科學(xué)和哲學(xué)一樣,直到今天還完全忽視人的活動(dòng)對(duì)人的思維的影響,它們一方面只知道自然界,另一方面又只知道思想。”[8]這種思維模式產(chǎn)生了關(guān)于“實(shí)體”和“自我意識(shí)”的無數(shù)“神秘莫測(cè)”的精神創(chuàng)造物。
為了徹底瓦解主客二分的思維模式,馬克思重新闡述了主體與客體,或者說人與自然界的關(guān)系。馬克思指出,人的存在不是孤立的,無對(duì)的絕對(duì)存在,而是對(duì)象性的存在,即他的肉體生活與精神生活都同自然界相聯(lián)系,而且這個(gè)聯(lián)系不是暫時(shí)的而是不斷的,不是一個(gè)片斷,而是一個(gè)源源不斷綿延不絕的過程,人和自然界是這一個(gè)過程的兩個(gè)方面。[10] 這個(gè)過程是自然界對(duì)人說來的生成過程,也是人通過人的勞動(dòng)而誕生的過程。由此我們不難理解唯物辯證法的如下觀點(diǎn):“思維本身的要素,思想的生命表現(xiàn)的要素,即語言,是感性的自然界?!?[11]“人在怎樣的程度上學(xué)會(huì)改變自然界,人的智力就在怎樣的程度上發(fā)展起來?!?[8]
哪里有學(xué)術(shù)研究,哪里就會(huì)出現(xiàn)對(duì)象語言和元語言的問題?!霸Z言必須有足夠的能力容納和表述對(duì)象語言,否則我們無法用元語言對(duì)對(duì)象語言做出說明和解釋?!盵12]可是元語言如何具有這種能力呢?其實(shí)元語言與對(duì)象語言的關(guān)系就是人與自然的關(guān)系,《數(shù)》的三個(gè)語言環(huán)境的概念為我們嚴(yán)謹(jǐn)?shù)孛枋隽怂鼈兊年P(guān)系?!霸Z言要把一階語言即對(duì)象語言中的符號(hào)和語法對(duì)象解釋清楚,需要兩個(gè)要素:一是需要把元語言中的特定的領(lǐng)域知識(shí)作為解釋的載體,這個(gè)載體稱為論域;二是需要一種確定的解釋方法,把一階語言的符號(hào)和對(duì)象解釋為論域中相應(yīng)的元素。元語言提供的論域和解釋方法構(gòu)成了一階語言的模型。” [5]一階語言及其模型和元語言環(huán)境是人們對(duì)領(lǐng)域知識(shí)進(jìn)行分析和推理的三個(gè)語言環(huán)境,而且三者缺一不可[5]。
而元語言和對(duì)象語言又是相對(duì)的,它們具有多重性:“一般說來,一個(gè)語言在它作為對(duì)象語言時(shí),它的符號(hào)和語法對(duì)象所取得的準(zhǔn)確性和已被人們證明的結(jié)論,在它作為元語言時(shí),就可以用來解釋和說明相應(yīng)對(duì)象語言的符號(hào)和語法對(duì)象,并用來證明該對(duì)象語言中不同語法對(duì)象之間的關(guān)系。這是人類從事科學(xué)研究的基本方法?!?[5]
例如,C、C++和Java是程序語言發(fā)展中的版本序列。如果把C++視為對(duì)象語言,那么從C++程序集合到C程序集合的一個(gè)解釋映射(記做IC++)和C程序集合就構(gòu)成C++的一個(gè)模型,而C語言就構(gòu)成了C++語言和它的模型的元語言;如果把Java視為對(duì)象語言,那么從Java程序集合到C++程序集合的一個(gè)解釋映射(記做IJ)和C++程序集合就構(gòu)成Java的一個(gè)模型,而C++語言就構(gòu)成了Java語言和它的模型的元語言。
從實(shí)踐本體論來看,C、C++和Java依次作為對(duì)象語言時(shí),是自然界在人的實(shí)踐活動(dòng)中的生成;依次作為元語言時(shí),是思維本身的要素,思想的生命表現(xiàn)的要素,因此是人在實(shí)踐活動(dòng)中的生成。
“把對(duì)象語言和元語言加以區(qū)別,把對(duì)象語言和論域以及解釋方法加以區(qū)分,并用數(shù)學(xué)的方法加以精確地定義和研究,是人類在關(guān)于知識(shí)的一般理論方面的一個(gè)重大進(jìn)步?!盵5]在三個(gè)語言環(huán)境中,命題的多義性和歧義性才能被消除,邏輯連接詞推理規(guī)則和量詞推理規(guī)則的“可靠性”和“完全性”才能被嚴(yán)格地定義和證明,關(guān)于公理系統(tǒng)的協(xié)調(diào)性、完全性、可判斷性和獨(dú)立性等性質(zhì)才能被嚴(yán)格地描述。
三個(gè)語言環(huán)境的概念和方法對(duì)我們的程序語言教學(xué)具有深刻指導(dǎo)意義。我們面臨的問題是,課程分散,重點(diǎn)不突出,低水平重復(fù)嚴(yán)重,占用課時(shí)多。為了解決這個(gè)問題,很多學(xué)校都選擇了C++作為主要學(xué)習(xí)的程序語言,但是,C++的概念龐雜,難以理解,不容易深入。同時(shí),C++新標(biāo)準(zhǔn)的出現(xiàn),string串類、順序容器和關(guān)聯(lián)容器(例如vector、list、map和set),以及在這些類型上進(jìn)行操作的一組可擴(kuò)展的泛型算法,都屬于C++新標(biāo)準(zhǔn)的特性。這使C++和數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)順序發(fā)生矛盾:數(shù)據(jù)結(jié)構(gòu)的先修課是C++,而C++的新特性中包含數(shù)據(jù)結(jié)構(gòu),它們互為前提。
按照《數(shù)》的版本序列和三個(gè)語言環(huán)境的概念和方法,應(yīng)該把C作為C++的元語言,這時(shí)C++的概念就可以用C程序嚴(yán)格地描述,避免C++解釋中的歧義性和模糊性,有利于理解,而且C++也就不必從開頭講起,我們可以直接講授C++相對(duì)C的修正和補(bǔ)充部分,有利于深入。另外,C++和數(shù)據(jù)結(jié)構(gòu)互為前提,說明它們是一個(gè)整體,這樣,C作為元語言也應(yīng)該包含數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。
以唯物辯證法為指南,我們進(jìn)行了8年的課程改革。具體做法是:先用C語言描述數(shù)據(jù)結(jié)構(gòu)的順序表、結(jié)構(gòu)串和鏈表,然后將它們轉(zhuǎn)化為C++代碼,使每一個(gè)C++概念都可以用C代碼嚴(yán)格描述其產(chǎn)生過程,每一個(gè)C++程序都可以用一個(gè)對(duì)應(yīng)的C程序嚴(yán)格解釋。唯物辯證法告訴我們,抓住了矛盾,事物發(fā)展過程中的相互連接的、一個(gè)否定另一個(gè)的階段就容易看出來了。而程序語言設(shè)計(jì)中的基本矛盾是存儲(chǔ)和處理,“數(shù)據(jù)結(jié)構(gòu)+算法=程序”就是這層意思。縱觀短暫的計(jì)算機(jī)發(fā)展史,這兩個(gè)方面一直保持不變。發(fā)展演化的是它們之間的關(guān)系,就是所謂的程序設(shè)計(jì)方法。[13]
《數(shù)》的三個(gè)語言環(huán)境的概念和方法不僅給予了我們鼓舞和信心,而且使我們具體知道如何改進(jìn)將會(huì)更好。我們正在進(jìn)行Java課程的改革,目的是使C、C++和Java形成一個(gè)有規(guī)律的發(fā)展序列,我們將按照版本序列和三個(gè)語言環(huán)境的概念和方法去做。
辯證法是馬克思哲學(xué)的活的靈魂。然而,我們對(duì)辯證法的理解和運(yùn)用卻往往流于空洞的形式,以至辯證法被很多人看作是“詭辯的工具”,可以套用在任何論題上的“標(biāo)簽”。回顧歷史,黑格爾辯證法曾因?yàn)槠渖衩囟y以實(shí)際運(yùn)用的形式,被人們連同其合理的內(nèi)容一起拋掉了,結(jié)果人們又無可奈何地回到舊的思維模式中。今天,唯物辯證法如果不能從具體科學(xué)內(nèi)部發(fā)現(xiàn),并且從其內(nèi)部闡發(fā),在很多人的心中可能也處于這種尷尬的地位。
《數(shù)》的一階語言的理論框架在計(jì)算機(jī)科學(xué)內(nèi)部,賦予辯證法系統(tǒng)的內(nèi)容和嚴(yán)格的形式。
在三個(gè)語言環(huán)境中,借助程序設(shè)計(jì)語言中的指針的思想,《數(shù)》以簡單、直觀,能夠被更多的人理解的方式證明了歌德爾不完全定理,這個(gè)定理的內(nèi)容就是公理化方法的局限性。傳統(tǒng)形而上學(xué)的總體特征有一條是本質(zhì)預(yù)設(shè),它認(rèn)為,世界上所有的事物有一個(gè)最高的本質(zhì),它是本原,是萬事萬物的最終根據(jù),是因果鏈條的最初開端。其實(shí),這個(gè)本質(zhì)不過是思維的先驗(yàn)預(yù)設(shè)?!靶味蠈W(xué)就是超出存在者之上的追問,以求返回來對(duì)這樣的存在者整體獲得理解。” [14]可以說,《數(shù)》以計(jì)算機(jī)實(shí)踐經(jīng)驗(yàn)為基礎(chǔ),為辯證法嚴(yán)格地證明了這個(gè)傳統(tǒng)形而上學(xué)的反命題。
自十九世紀(jì)末葉,現(xiàn)代自然科學(xué)經(jīng)歷著急劇的變革,大大小小的哲學(xué)學(xué)派和流派不斷出現(xiàn),自然科學(xué)的許多大革新家的學(xué)說被人歪曲和利用,其中包括愛因斯坦的學(xué)說。
而《數(shù)》的新公理、事實(shí)反駁、形式理論的修正、形式理論序列等新概念,可以用來嚴(yán)格描述物理學(xué)從伽利略時(shí)代的物理學(xué)到愛因斯坦相對(duì)論的進(jìn)化過程的四個(gè)階段。把人們對(duì)專家憑直觀和經(jīng)驗(yàn)所做的智力活動(dòng)的崇拜,轉(zhuǎn)變?yōu)閷?duì)一階語言層面上的嚴(yán)格地描述和證明的信賴。
不僅如此,事實(shí)反駁、修正演算、版本序列及其極限和過程模式的引入,使在公理系統(tǒng)的形成過程中所設(shè)計(jì)的問題和人們所使用的“研究方法”或“開發(fā)策略”得以在一階語言層面上加以嚴(yán)格地描述和證明。
唯物辯證法是科學(xué)的辯證法,必須與自然科學(xué)結(jié)合才能發(fā)揮其生命力和戰(zhàn)斗性,而只有從自然科學(xué)內(nèi)部找出辯證法的規(guī)律并從自然科學(xué)里加以闡發(fā),才是辯證法與自然科學(xué)的結(jié)合?!稊?shù)》在這個(gè)意義上豐富了唯物辯證法的科學(xué)內(nèi)涵。
四
西方科學(xué)的發(fā)展以兩個(gè)偉大的成就為基礎(chǔ),一個(gè)是形式推理系統(tǒng)即數(shù)理邏輯,另一個(gè)是實(shí)驗(yàn)科學(xué)。數(shù)理邏輯沒有產(chǎn)生于中國,很多人因此而遺憾,中國傳統(tǒng)文化的特質(zhì)與數(shù)理邏輯的真諦南轅北轍、圓鑿方枘,很多人為之而傷感,他們甚至懷疑我們民族的創(chuàng)新能力。
今天,數(shù)理邏輯的創(chuàng)新出現(xiàn)在中國大地上,而且它將形式理論系統(tǒng)的模本由幾何學(xué)擴(kuò)展到帶有實(shí)驗(yàn)特點(diǎn)的計(jì)算機(jī)科學(xué)領(lǐng)域,使人們結(jié)合日常的計(jì)算機(jī)操作實(shí)踐更容易理解和把握數(shù)理邏輯的概念和方法。
與十九世紀(jì)末葉相比,自然科學(xué)的變革更加急劇,各種哲學(xué)學(xué)派和流派更加龐雜,我們必須懂得,任何自然科學(xué),如果沒有充分可靠的唯物辯證法論據(jù),是無法對(duì)各種貌似科學(xué)的思想的侵襲和改裝的舊世界觀的復(fù)辟進(jìn)行斗爭的。[15]
“普通的豎琴在任何人的手里都能發(fā)出聲音;風(fēng)神的豎琴卻只是當(dāng)風(fēng)暴敲擊它的琴弦時(shí)才發(fā)出聲音。” [16] 在飛速發(fā)展、急劇變化的信息時(shí)代,在各種觀點(diǎn)交匯、甚至有些嘈雜和浮躁的計(jì)算機(jī)科學(xué)和教育領(lǐng)域,在進(jìn)步和倒退、改革和保守的對(duì)立、沖突、斗爭中,李未院士的《數(shù)理邏輯》一書發(fā)出了鼓舞信心、引航心靈的鳴響。
參考文獻(xiàn):
[1] 普列漢諾夫哲學(xué)著作選集(第3卷)[M].北京:三聯(lián)書店,1982.37.
[2] 馬克思恩格斯選集(第三卷)[M].北京:人民出版社,1975. 465.
[3] 諸葛,殷同.再議辯證邏輯[J].哲學(xué)動(dòng)態(tài),1992.(4).34.
[4] 馬克思恩格斯選集(第二卷)[M].北京:人民出版社,1996.112.
[5] 李未.數(shù)理邏輯[M].北京:科學(xué)出版社,2008.215, 21,206,20,22.
[6] 馬克思恩格斯選集(第四卷)[M].北京:人民出版社,1975. 212.
[7] 高哲,溫元等.馬克思恩格斯要論精選[M].北京:中央編譯出版社,2000.68.
[8] 馬克思恩格斯選集(第四卷)[M].北京:人民出版社,1996.335,329,329.
[9] 楊煥章.談?wù)務(wù)軐W(xué)研究中的學(xué)風(fēng)問題[J].新華文摘,1997,(10).
[10] 張偉著.走向現(xiàn)實(shí)的美學(xué)[M].北京:人民出版社,2004.60.
[11] 馬克思著.1844年經(jīng)濟(jì)學(xué)哲學(xué)手稿[M]. 北京:人民出版社,2000.90.
[12] 王路.邏輯真理是可錯(cuò)的嗎?[J] .哲學(xué)研究,2007(10) .
[13] Stanley B.Lippman著.潘愛民,張麗譯.C++ Primer第三版 中文版[M].北京:中國電力出版社,2004.1.
[14] 海德格爾.海德格爾選集(上卷)[M].上海:上海三聯(lián)書店,1996.149.
[15] 列寧選集(第四卷)[M].北京:人民出版社,1974.608.
[16] 肖灼基.馬克思青年時(shí)代[M].河南:河南人民出版社,1982.131.