沈 軍
(東南大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,江蘇南京 211189)
隨著泛計(jì)算社會(huì)的到來(lái),大學(xué)程序設(shè)計(jì)課程的地位變得十分重要,其教材建設(shè)成為整個(gè)教學(xué)活動(dòng)的關(guān)鍵。目前該課程教材建設(shè)的流派主要有語(yǔ)言主導(dǎo)型、算法主導(dǎo)型、環(huán)境主導(dǎo)型和應(yīng)用主導(dǎo)型。語(yǔ)言主導(dǎo)型屬于傳統(tǒng)教學(xué)范式,主要強(qiáng)調(diào)程序設(shè)計(jì)語(yǔ)言本身的各種機(jī)制及其具體表達(dá)[1],將語(yǔ)言的應(yīng)用交給其他課程以及學(xué)生本身。該流派的主要問(wèn)題是,割裂了語(yǔ)言與語(yǔ)言應(yīng)用兩者之間的內(nèi)在思維聯(lián)系,并且對(duì)語(yǔ)言機(jī)制產(chǎn)生的動(dòng)因(即如何支持程序設(shè)計(jì)方法)以及語(yǔ)言各種機(jī)制之間的思維聯(lián)系沒(méi)有給出解析。算法主導(dǎo)型改進(jìn)了傳統(tǒng)范式,將一些基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)及基本算法作為語(yǔ)言機(jī)制的初步應(yīng)用[2]。該流派的主要問(wèn)題是,語(yǔ)言機(jī)制缺乏系統(tǒng)性邏輯,對(duì)語(yǔ)言機(jī)制產(chǎn)生的動(dòng)因及語(yǔ)言各種機(jī)制之間的關(guān)系沒(méi)有給出解析,同時(shí),對(duì)數(shù)據(jù)結(jié)構(gòu)及基本算法知識(shí)缺乏結(jié)構(gòu)化梳理,過(guò)多強(qiáng)調(diào)數(shù)據(jù)結(jié)構(gòu)及基本算法的知識(shí),導(dǎo)致認(rèn)知難度增加。環(huán)境主導(dǎo)型往往結(jié)合某種具體開(kāi)發(fā)環(huán)境,以其如何使用為主線,穿插介紹程序設(shè)計(jì)語(yǔ)言機(jī)制和環(huán)境機(jī)制的具體使用。該流派的主要問(wèn)題是就事論事,適合于技能訓(xùn)練(本文對(duì)該類教材不做評(píng)論)。應(yīng)用主導(dǎo)型一般以某個(gè)或某些專業(yè)的基本應(yīng)用為主要示例,結(jié)合該示例的具體實(shí)現(xiàn),介紹語(yǔ)言的各種機(jī)制及其基本使用。該流派的主要問(wèn)題是,缺乏系統(tǒng)性的語(yǔ)言機(jī)制邏輯組織,對(duì)語(yǔ)言機(jī)制產(chǎn)生的動(dòng)因及其內(nèi)在關(guān)系同樣缺乏解析,并且,因其應(yīng)用的針對(duì)性,缺乏普適的意義。
相對(duì)于國(guó)內(nèi)教材建設(shè),國(guó)外同類教材建設(shè)思路具有明顯的邏輯性。首先,將教材分為兩個(gè)主要層次:面向基礎(chǔ)教學(xué)類和面向應(yīng)用類。前者定位于與領(lǐng)域應(yīng)用相對(duì)獨(dú)立的程序設(shè)計(jì)基礎(chǔ)知識(shí)與能力培養(yǎng),主要面向教學(xué),可以對(duì)應(yīng)國(guó)內(nèi)教材建設(shè)狀態(tài);后者定位于與領(lǐng)域應(yīng)用相關(guān)的程序設(shè)計(jì)基礎(chǔ)知識(shí)與能力培養(yǎng),主要面向后教學(xué)(即離開(kāi)學(xué)校后的進(jìn)一步教學(xué))的拓展,針對(duì)各種特定領(lǐng)域應(yīng)用,系統(tǒng)化梳理該領(lǐng)域應(yīng)用應(yīng)具備的普適處理方法。其次,兩類教材的內(nèi)容和體系具有一定的邏輯完備性。對(duì)于面向基礎(chǔ)教學(xué)類教材,一般都綜合了語(yǔ)言、算法及應(yīng)用,并且,對(duì)三者的關(guān)系及其運(yùn)用進(jìn)行系統(tǒng)化梳理。其教學(xué)目標(biāo)是覆蓋語(yǔ)言、算法及應(yīng)用三個(gè)維度,使學(xué)生具備程序設(shè)計(jì)應(yīng)有的基本能力(即夯實(shí)基礎(chǔ)知識(shí),兼顧縱向的知識(shí)應(yīng)用能力)。對(duì)于面向應(yīng)用類教材,一般都淡化語(yǔ)言,適當(dāng)兼顧算法,重點(diǎn)強(qiáng)調(diào)領(lǐng)域相關(guān)的通用問(wèn)題處理方法。其教學(xué)目標(biāo)是使學(xué)生具備較強(qiáng)的領(lǐng)域應(yīng)用程序設(shè)計(jì)能力(即強(qiáng)調(diào)知識(shí)應(yīng)用能力)。最后,兩類教材建設(shè)的基本理念都是以方法為主,而不是以知識(shí)為主。盡管?chē)?guó)外教材建設(shè)思路是西方邏輯文化及其延伸的教學(xué)理念使然,具備一定的教學(xué)應(yīng)用優(yōu)勢(shì),然而,它對(duì)思維能力的培養(yǎng)仍然是隱式的,其對(duì)思維能力的培養(yǎng)深度取決于教師對(duì)教材的解讀及其教學(xué)設(shè)計(jì)能力。
綜上所述,國(guó)內(nèi)各種流派的教材建設(shè)思路未能系統(tǒng)地深入到方法和思維層次。國(guó)外教材建設(shè)思路盡管對(duì)這方面的缺陷作了一定彌補(bǔ),但是其隱式思維能力的培養(yǎng)方式,對(duì)于國(guó)內(nèi)大部分教師而言,無(wú)法真正起到有效作用。另外,國(guó)外教材建設(shè)思路的隱式思維能力培養(yǎng)未能深入到計(jì)算機(jī)學(xué)科固有的元思維特征層次[3]。
計(jì)算機(jī)學(xué)科固有的多維屬性,孕育了其獨(dú)有的計(jì)算思維(computational thinking)[4-5]。本質(zhì)上,計(jì)算思維的核心是遞歸思維,它是處理多維形態(tài)的一種最簡(jiǎn)潔的策略,可以通過(guò)有限的基本手段實(shí)現(xiàn)無(wú)限的應(yīng)用需求。因此,計(jì)算思維具有天生的高階屬性。這種思維策略的關(guān)鍵是構(gòu)建了一種自含式的基本原理。具體而言,該基本原理是一個(gè)二元組(BS,BRS),其中BS表示基礎(chǔ)方法(或原子方法)集合,BRS表示基礎(chǔ)方法的關(guān)系(或原子方法的運(yùn)算)集合,并且,BRS作用于BS的結(jié)果仍然可以是BS的元素,從而使其具備自含特性。
計(jì)算思維基本原理的教學(xué)指導(dǎo)意義在于強(qiáng)調(diào)方法和思維的教學(xué),將具體的知識(shí)作為其外化的表現(xiàn)和示例,從而回歸教學(xué)的本源。深入而言,其教學(xué)指導(dǎo)意義在于提升了教學(xué)的抽象層次,將目前面向知識(shí)傳授的單一層次拓展為面向知識(shí)傳授和方法及思維培養(yǎng)的兩個(gè)層次,并解析兩個(gè)層次的內(nèi)在辯證關(guān)系。具體而言,針對(duì)程序設(shè)計(jì)課程,其涉及的方法、語(yǔ)言、環(huán)境、應(yīng)用等都應(yīng)該圍繞計(jì)算思維原理展開(kāi),并解析原理對(duì)各個(gè)方面的具體映射和作用,從而培養(yǎng)學(xué)生正確的專業(yè)思維,播下支持學(xué)生未來(lái)持續(xù)創(chuàng)新的思維種子。
3.1.1 內(nèi)容及其關(guān)系
程序設(shè)計(jì)涉及計(jì)算機(jī)語(yǔ)言(簡(jiǎn)稱語(yǔ)言,用以描述程序)、計(jì)算機(jī)環(huán)境(簡(jiǎn)稱環(huán)境,用以給出程序構(gòu)造和運(yùn)行的基礎(chǔ))、計(jì)算機(jī)應(yīng)用(簡(jiǎn)稱應(yīng)用,用以給出符合計(jì)算機(jī)特點(diǎn)的問(wèn)題處理方法及步驟安排)和程序構(gòu)造基本方法(簡(jiǎn)稱方法,用以給出程序基本結(jié)構(gòu)的定義,包括基本元素及其交互關(guān)系)四個(gè)方面,稱為程序設(shè)計(jì)四要素。其中,方法是程序設(shè)計(jì)的內(nèi)因,語(yǔ)言、環(huán)境和應(yīng)用都是程序設(shè)計(jì)的外因。程序設(shè)計(jì)四要素之間相輔相成,缺一不可。語(yǔ)言和環(huán)境成為“程序”的約束條件,應(yīng)用就是滿足這些約束條件的“程序”。語(yǔ)言是一種黏合劑,將應(yīng)用和環(huán)境連接起來(lái)。語(yǔ)言、環(huán)境和應(yīng)用三個(gè)要素給出程序設(shè)計(jì)要素的外化關(guān)系,方法要素給出了程序設(shè)計(jì)要素的內(nèi)化關(guān)系。也就是,語(yǔ)言和環(huán)境的各項(xiàng)機(jī)制設(shè)立,都必須圍繞方法展開(kāi)或支持方法,應(yīng)用也是基于方法或是方法的具體運(yùn)用。作為程序設(shè)計(jì)的內(nèi)因,基本方法的演化帶動(dòng)了語(yǔ)言和環(huán)境的同步演化,最終又驅(qū)動(dòng)了應(yīng)用的發(fā)展。
3.1.2 教學(xué)特點(diǎn)
程序設(shè)計(jì)課程的教學(xué)具有明顯的多維特征。一方面,其四個(gè)要素需要同步展開(kāi)。盡管方法作為內(nèi)因起到核心作用,其他要素都圍繞它展開(kāi)。但是,程序設(shè)計(jì)的教學(xué)卻是不斷在四個(gè)要素之間跳躍。圖1(a)所示為四個(gè)要素的同步性。另一方面,計(jì)算思維作為一個(gè)隱式的維度,分別作用于四個(gè)基本要素,成為耦合四個(gè)基本要素的關(guān)鍵,圖1(b)所示為相應(yīng)的解析[6]。
圖1 程序設(shè)計(jì)的多維特征
大學(xué)程序設(shè)計(jì)課程教材的建設(shè)思路應(yīng)該針對(duì)四個(gè)基本要素,分別找到其二元組(BS,BRS)的具體映射,并在此基礎(chǔ)上構(gòu)建教材的體系。
3.2.1 方 法
程序設(shè)計(jì)方法分為多個(gè)邏輯層次,一般包括面向數(shù)據(jù)組織和數(shù)據(jù)處理的基礎(chǔ)方法、面向程序模型及結(jié)構(gòu)定義的基本方法和面向應(yīng)用的應(yīng)用方法。基本方法是對(duì)基礎(chǔ)方法的應(yīng)用,應(yīng)用方法是對(duì)基本方法的應(yīng)用。本質(zhì)上,基礎(chǔ)方法和基本方法屬于原理性層次,應(yīng)用方法則屬于原理的具體應(yīng)用層次。對(duì)于基礎(chǔ)方法,具體映射的定義如圖2所示。
圖2 計(jì)算思維原理到基礎(chǔ)方法的映射
對(duì)數(shù)據(jù)組織和數(shù)據(jù)處理兩個(gè)方面的基礎(chǔ)方法及其關(guān)系的不同認(rèn)識(shí),構(gòu)成不同的程序設(shè)計(jì)基本方法。伴隨著人類自身對(duì)程序構(gòu)造問(wèn)題認(rèn)識(shí)的不斷深入,程序設(shè)計(jì)基本方法得到不斷的演化,經(jīng)歷面向功能方法、面向?qū)ο蠓椒?、面向組件方法和面向服務(wù)方法的發(fā)展,每一種基本方法都給出程序的基本要素及其交互關(guān)系的定義,即程序基本結(jié)構(gòu)模型的定義。程序基本結(jié)構(gòu)模型的定義就是建立在計(jì)算思維原理之上,面向功能方法的具體映射為({模塊},{模塊之間的關(guān)系}),面向?qū)ο蠓椒ǖ木唧w映射為({對(duì)象},{對(duì)象之間的關(guān)系}),面向組件方法的具體映射為({組件},{組件之間的關(guān)系}),面向服務(wù)方法的具體映射為({服務(wù)},{服務(wù)之間的關(guān)系})。從模塊到對(duì)象,從對(duì)象到組件,從組件到服務(wù),粒度不斷擴(kuò)大,抽象層次及平臺(tái)獨(dú)立性越來(lái)越高。
3.2.2 語(yǔ) 言
語(yǔ)言作為一種描述工具,從其本身來(lái)說(shuō)主要是提供各種描述機(jī)制。由于語(yǔ)言是方法的外化體現(xiàn),因此,語(yǔ)言機(jī)制構(gòu)建必然是為了支持方法。因此,計(jì)算思維原理對(duì)語(yǔ)言的具體映射就是給出用于表達(dá)基礎(chǔ)方法和基本方法所定義二元組的相應(yīng)語(yǔ)言機(jī)制。以C++語(yǔ)言為例,其映射關(guān)系如圖3所示。
圖3 計(jì)算思維原理到語(yǔ)言的映射(1)
考慮到語(yǔ)言要素自身的系統(tǒng)性,對(duì)于語(yǔ)言機(jī)制及其關(guān)系也遵循計(jì)算思維原理。圖4(a)所示為語(yǔ)言的基本體系,圖4(b)所示為語(yǔ)言機(jī)制及其關(guān)系的計(jì)算思維原理映射[7]。
圖4 計(jì)算思維原理到語(yǔ)言的映射(2)
3.2.3 環(huán) 境
作為語(yǔ)言賴以作用的基礎(chǔ),環(huán)境一般分為程序運(yùn)行支撐環(huán)境(或開(kāi)發(fā)平臺(tái)、運(yùn)行平臺(tái))和程序開(kāi)發(fā)(或?qū)懽?、?gòu)造)環(huán)境兩大類。程序運(yùn)行支撐環(huán)境就是指計(jì)算機(jī)系統(tǒng),包括系統(tǒng)軟件操作系統(tǒng)(operating system,OS)。程序開(kāi)發(fā)環(huán)境主要是指用于程序開(kāi)發(fā)的工具集,兩種環(huán)境的關(guān)系如圖5所示。程序設(shè)計(jì)課程中,主要側(cè)重于開(kāi)發(fā)環(huán)境,其計(jì)算思維原理的映射如圖6所示。
圖5 程序設(shè)計(jì)環(huán)境
圖6 計(jì)算思維原理到環(huán)境的映射
另一方面,針對(duì)環(huán)境自身,也遵循計(jì)算思維的宏觀視圖,即所有環(huán)境基本上都是圍繞工程管理基本模型來(lái)構(gòu)建,由此,環(huán)境的使用方式及其界面的設(shè)計(jì)與使用都基于定義的工程管理模型展開(kāi)。隨著應(yīng)用的復(fù)雜而導(dǎo)致的程序規(guī)模龐大問(wèn)題,現(xiàn)代程序設(shè)計(jì)環(huán)境所定義的工程管理模型也依據(jù)計(jì)算思維原理進(jìn)行拓展,支持多維的工程管理模型。
3.2.4 應(yīng) 用
應(yīng)用一般是指對(duì)具體問(wèn)題的處理。也就是,針對(duì)給定的具體問(wèn)題,基于基本方法找到一種問(wèn)題處理的方案,然后用語(yǔ)言將其表達(dá)出來(lái)并在環(huán)境中實(shí)現(xiàn)。盡管某個(gè)問(wèn)題的解決方案是多樣的,然而,在此,問(wèn)題解決方案必須受到計(jì)算機(jī)這個(gè)特定環(huán)境的限制和約束。也就是,程序設(shè)計(jì)中的應(yīng)用是人類處理問(wèn)題的思維在計(jì)算機(jī)環(huán)境中的投影,這種投影具體表現(xiàn)為問(wèn)題解決方案應(yīng)滿足計(jì)算機(jī)系統(tǒng)的特性和程序基本模型。這種獨(dú)有的、在約束條件下的問(wèn)題處理過(guò)程,形成了各種面向各類問(wèn)題的有效的處理方法,并通過(guò)抽象建立起相應(yīng)圖式或模式。依據(jù)計(jì)算思維基本原理,程序設(shè)計(jì)應(yīng)用的精髓在于發(fā)掘各種基本應(yīng)用模式,以及對(duì)各種應(yīng)用模式進(jìn)行靈活建構(gòu)。應(yīng)用模式及其建構(gòu)成為計(jì)算思維基本原理到應(yīng)用要素的具體映射如圖7所示。
圖7 計(jì)算思維原理到應(yīng)用的映射
建立在對(duì)學(xué)科特征及思維本質(zhì)深刻認(rèn)識(shí)基礎(chǔ)上的教材建設(shè)新思路具有重要的現(xiàn)實(shí)意義,主要體現(xiàn)在:①是“教育部關(guān)于進(jìn)一步深化本科教學(xué)改革全面提高教學(xué)質(zhì)量的若干意見(jiàn)”的最貼切實(shí)踐,提出的以思維和方法為核心的教學(xué)理念,回歸了教學(xué)的本質(zhì),詮釋了本科教學(xué)“本”的內(nèi)涵[8];②為程序設(shè)計(jì)課程的教學(xué)改革及發(fā)展指明正確方向;③引導(dǎo)并實(shí)現(xiàn)教師工作性質(zhì)回歸教學(xué)研究,促進(jìn)教師自身專業(yè)認(rèn)知能力及素質(zhì)的提高;④針對(duì)中西方文化差異,給出基于顯式專業(yè)思維能力培養(yǎng)的教材建設(shè)方法并由此驅(qū)動(dòng)教學(xué)設(shè)計(jì),消除了國(guó)外教材建設(shè)中隱式思維能力培養(yǎng)教學(xué)方式對(duì)國(guó)內(nèi)教學(xué)的不適應(yīng)性;⑤深入元思維層次,并在此基礎(chǔ)上重構(gòu)程序設(shè)計(jì)課程知識(shí)的新結(jié)構(gòu)視圖,建立面向元認(rèn)知能力培養(yǎng)的全新教學(xué)模式的基礎(chǔ)。建材建設(shè)新思路的全面實(shí)現(xiàn),必將對(duì)我國(guó)新一輪程序設(shè)計(jì)課程類教學(xué)改革的發(fā)展產(chǎn)生深遠(yuǎn)影響。