C++不僅是軟件設計的主流語言,而且因為其強大的解釋力而成為代表軟件應用能力的標志性語言。但是,c++的概念龐雜,難以理解,不容易深入,同時,C++新標準的出現使C++和數據結構的學習順序發生沖突:數據結構的先修課是C++,而c++的新特性中包含數據結構的內容,它們互為前提。我們認為要有效地解決這兩個問題,必須把C、C++和數據結構整合。為此我們進行了十年的改革實踐,探索從C到C++的學習方法。《計算機教育》于2008年以主編專訪和專業論文兩種形式對我們的改革進行了連續一年的報道,本文對一年來發表的專業論文給予一個小結。
1從C到C++是一個有規律的過程
從機器語言到c++語言是一個發展過程,這個過程的根本動因是程序設計的存儲與處理的矛盾。“數據結構+算法:程序”就是這層意思。縱觀短暫的計算機發展史,這兩個方面一直保持不變。發展演化的是它們之間的關系,就是所謂的程序設計方法。我們的目的是:除去偶然的、擾亂性的因素,揭示出這個矛盾的變化規律,即程序語言發展規律。我們的具體做法是:先用C描述順序表、結構串和鏈表,然后揭示、分析和解決C描述所表現的局限性,通過克服這些局限將它們轉化為C++描述。圖l是我們的教材《C/C++與數據結構》(第3版)(上冊)的內容關系結構,它提綱挈領地表示了這個過程,貫穿其中的是圖2所展示的指針和函數同步發展的關系。我們在2008年《計算機教育》連續發表了一些文章,對圖1和圖2中的一些關系分別做了比較詳細的論述。

2 C是C++的元語言
現在我們可以用三個語言環境理論來解釋這種方法的意義。一般說來,一個語言在它作為對象語言時,它的符號和語法對象所取得的準確性已被人們證明的結論,在它作為元語言時,就可以用來解釋和說明相應對象語言的符號和語法對象,并用來證明該對象語言中不同語法對象之間的關系。這是人類從事科學研究的基本方法。
例如,C、C++和Java是程序語言發展中的版本序列。如果把C++視為對象語言,那么從C++程序集合到C程序集合的一個解釋映射和C程序集合就構成C++的一個模型,而C語言就構成了C++語言和它的模型的元語言。如果把Java視為對象語言,那么從Java程序集合到C++程序集合的一個解釋映射和C++程序集合就構成Java的一個模型,而C++語言就構成了Java語言和它的模型的元語言。表1和表2所示就是一種從對象語言C++程序到元語言C程序的解釋映射。
按照三個語言環境的概念和方法,把C作為C++的元語言,這時C什的概念就可以用C程序嚴格地描述,避免C++解釋中的歧義性和模糊性,有利于理解,而且C++也就不必從開頭講起,我們可以直接講授C++相對C的修正和補充部分,有利于深入。


3小結
邏輯不是關于思維的外在形式的學說,而是關于一切物質的、自然的和精神的事物的發展規律的學說。這樣,成為科學對象的就不是事物,而是事物運動的規律。
程序語言的發展規律不是明擺著的,發現規律并嚴格地描述這個規律需要我們付出巨大的努力,要知道,如果事物的表現形式和事物的發展規律不是自然地合二為一,一切科學就都成為多余的了。
難題是,我們有沒有滿腔的熱忱,有沒有眼睛向下的決心,有沒有放下臭架子、甘當小學生的精神,如果有,計算機基礎教育就一定有光明的未來。