奚:王老師,這一期文章和上一期文章可以稱為姊妹篇吧?
王:可以。上一期我們講到,在用C語言描述數(shù)據(jù)結(jié)構(gòu)的過程中,程序員不僅最大限度地克服了C語言的局限性,同時也具體表達(dá)了對C語言未來發(fā)展的需要,這一期我們講的是這些需要的滿足,而且這一期講不完,下一期還要繼續(xù)講。
奚:在您的文章中,C++不是從概念開始的,而是從C程序設(shè)計的問題開始的,我認(rèn)為這是一個顯著的特點(diǎn)。
王:辯證法是這樣要求我們的,研究任何問題,都不要從概念出發(fā),要從事實(shí)出發(fā),要考慮事物的自身發(fā)展,要考慮人的實(shí)踐活動的需要。
奚:要從程序設(shè)計的實(shí)際需要出發(fā)。
王:是的,這就是辯證唯物主義的基本要求。辯證唯物主義從來不脫離實(shí)際、脫離人的實(shí)踐活動去談?wù)搯栴},任何理論都應(yīng)該是人的實(shí)踐活動的規(guī)律性的表述。而實(shí)踐是主觀見之于客觀的感性物質(zhì)活動,因此,對實(shí)踐活動的規(guī)律性表述和人的具體需要應(yīng)該是統(tǒng)一的。
奚:就我們的具體問題來說,怎么理解這種統(tǒng)一?
王:程序設(shè)計的需要和程序語言的必然發(fā)展的一致性。
奚:那么如何才能一致呢?
王:通過實(shí)踐。程序設(shè)計發(fā)展到一定階段,產(chǎn)生了程序語言無法滿足的需要,這些需要合乎邏輯的表達(dá)就是程序語言的必然發(fā)展。例如,C可以創(chuàng)建結(jié)構(gòu),但是隨著程序設(shè)計的不斷發(fā)展,人們需要C結(jié)構(gòu)能夠像C的內(nèi)部類型一樣使用,C無法滿足這個需要,于是C++產(chǎn)生了, C++對C的結(jié)構(gòu)體類型作了實(shí)質(zhì)性的擴(kuò)充,可以說,C++的許多性能都圍繞著一個根本的思想:創(chuàng)建新的數(shù)據(jù)類型的能力。
奚:這樣做是要付出辛苦的。
王:是的。當(dāng)然,把C++概念從外部注入到程序設(shè)計中,要比從程序設(shè)計中總結(jié)和概括出C++的概念要容易得多。或者說,借助想象或一種“權(quán)威意志”引入C++概念要比用每一個人如果愿意都可以驗(yàn)證的經(jīng)驗(yàn)來引入C++概念要輕松得多。
奚:概括地說,從觀念出發(fā)要比從事實(shí)出發(fā)容易得多。
王:是這樣。例如,我們可以說,C++是計算機(jī)軟件領(lǐng)域中覆蓋面最為廣闊的編程語言,C++編程方法是最為重要的程序設(shè)計方法,不會這種方法就意味著被淘汰;還可以說,C++程序設(shè)計是一種運(yùn)用了一些新概念和新方法來構(gòu)造系統(tǒng)的軟件開發(fā)方法,或者說,因?yàn)槭澜缡怯蓪ο髽?gòu)成的,因此C++的程序設(shè)計方法用人們看待現(xiàn)實(shí)世界的方法來表達(dá)計算機(jī)程序,等等。類似這樣的冠冕堂皇的話很多,從這些觀點(diǎn)出發(fā),教師就不必仔細(xì)地考察C與C++的內(nèi)在聯(lián)系和程序語言發(fā)展的必然過程,更不必實(shí)際地探索C程序員轉(zhuǎn)移到C++語言性能層上的方法,完全可以毫不顧忌地丟棄C,把C++概念灌輸?shù)綄W(xué)生的腦子里。這種做法看起來既簡單又很體面。
奚:但這是一種迫使學(xué)生被動接受的方法,禁錮了學(xué)生思考的空間。
王:根本原因就在于這種方法把人分為兩類,一類是高高在上的工具的創(chuàng)造者,另一類是普通的工具使用者。而在辯證唯物者看來,程序設(shè)計的工具是程序設(shè)計的一部分,如果從程序?qū)嵺`的角度出發(fā),科學(xué)地闡述從C到C++的自然發(fā)展過程,那么C++就是每一個程序設(shè)計者都可以體驗(yàn)的、人的自由自覺的活動的結(jié)果,即實(shí)踐活動的結(jié)果。例如,通過C程序設(shè)計的實(shí)踐,以程序的方式表達(dá)了改進(jìn)C的具體要求,這個具體要求通過轉(zhuǎn)換與C++聯(lián)系起來,這是每一個程序設(shè)計者都可以體驗(yàn)的過程。于是C++的生成過程和C++的學(xué)習(xí)過程統(tǒng)一了。
奚:在這個過程中,人是積極的。
王:如馬克思所說,人首先是改造世界的主體,然后才是認(rèn)識世界的主體。“只有當(dāng)物按人的方式與人發(fā)生關(guān)系時,我才能在實(shí)踐上按人的方式與物發(fā)生關(guān)系。”[1]
奚:我認(rèn)為,對馬克思的實(shí)踐的觀點(diǎn),我們普遍認(rèn)識得不正確。實(shí)踐是人們改造世界的有意識的活動,可是一般人都是把實(shí)踐僅僅看作是理論和應(yīng)用的橋梁。
王:在馬克思看來,實(shí)踐活動是人和自然相互作用,相互生成的過程。例如,通過C程序的實(shí)踐,C語言提升了人的感受力,這是人在實(shí)踐活動中的生成;提升了感受力的人,有了更高的需要,提出了改進(jìn)C的具體要求,這是自然界在人的活動中的生成。恩格斯曾說:“自然科學(xué)和哲學(xué)一樣,直到今天還完全忽視人的活動對人的思維的影響;它們在一方面只知道自然界,在另一方面又只知道思想。但是,人的思維的最本質(zhì)的和最切近的基礎(chǔ),正是人所引起的自然界的變化,而不僅僅是自然界本身;人在怎樣的程度上學(xué)會改變自然界,人的智力就在怎樣的程度上發(fā)展起來。”[2]
奚:我認(rèn)為,對實(shí)踐的正確認(rèn)識,是我們學(xué)好和用好唯物辯證法的前提。
王:可以這樣說,因?yàn)檗q證法是人的實(shí)踐活動的展開方式。現(xiàn)在的情況是,一方面,大量的具體科學(xué)特別是自然科學(xué)的最新成果得不到馬克思主義哲學(xué)的科學(xué)概括而聽任唯心主義和形而上學(xué)泛濫;另一方面,又由于馬克思主義哲學(xué)不能及時吸取具體科學(xué)的思想營養(yǎng)而難免變成枯槁的教條。[3]因此,如何做到既具體落實(shí)馬克思主義哲學(xué)對科學(xué)發(fā)展的指導(dǎo)作用,又同時豐富馬克思主義哲學(xué)本身,是時代的要求。
奚:但愿我們這些人能在計算機(jī)學(xué)科方面去引入這樣的思想和做法。
王:是啊,這是對馬克思主義哲學(xué)的推動,也是對計算機(jī)學(xué)科的推動。
奚:希望我們的《計算機(jī)教育》能夠?yàn)榇俗鞒鲆稽c(diǎn)貢獻(xiàn)。