金旭亮
進(jìn)入21世紀(jì)以來,人類已進(jìn)入信息時代,社會對計(jì)算機(jī)人才的需求大增。在這個大趨勢下,我國上千所大中專院校,除了少數(shù)極為專業(yè)的院校,絕大部分都開設(shè)了計(jì)算機(jī)及相關(guān)專業(yè),在讀的學(xué)生估計(jì)可能達(dá)到數(shù)十萬人。
巨大的市場需求推動了計(jì)算機(jī)教材的繁榮,各大出版社或引進(jìn)或組織教師編寫,各種計(jì)算機(jī)教材陸續(xù)走進(jìn)了課堂。
供需兩旺,市場繁榮,好像局勢一片大好。然而,這欣欣向榮的表象之下,真的是“局勢一片大好嗎”?
計(jì)算機(jī)類教材的隱憂
1.題材撞車與“自留地”現(xiàn)象
有誰能說出全國一共出了多少種《C程序設(shè)計(jì)》教材?有誰能說出全國出了多少種《編譯原理》教材?還有《數(shù)據(jù)結(jié)構(gòu)》、《微機(jī)原理》、《軟件工程》、《離散數(shù)學(xué)》……幾乎所有的計(jì)算機(jī)專業(yè)骨干課程,都可以列出長長的一個書單。而這些教材,幾乎都是一個模子里出來的,從目錄上看,內(nèi)容差不多,甚至連寫作的語言也讓人“眼熟”。
很明顯,教材的寫作似乎已進(jìn)入“工業(yè)化大生產(chǎn)”階段,教材成了“教材生產(chǎn)流水線”上的產(chǎn)品。
然而我懷疑,這樣的生產(chǎn)流水線能出得了堪稱精品的教材?
教材內(nèi)容雷同的現(xiàn)狀,催生了各個院校在教材選用上的“自留地”現(xiàn)象,即選教材時優(yōu)先選用本校教師寫的教材。因?yàn)榇蟛糠值慕滩膬?nèi)容大同小異,那為什么不用自己的?作出這個決定省時省力,而且可以說出一連串“合情合理”的原因。
但教材選用上的“自留地”現(xiàn)象,客觀上卻為推廣優(yōu)秀教材帶來了阻礙。
2.面孔嚴(yán)肅,拒人千里
我的一個朋友有句名言:“書非K不能讀也!”他的意思是,學(xué)習(xí)教材的過程是非常痛苦的,要經(jīng)歷一個“死去活來”的過程,才能最終琢磨出味道來。
在我看來,這實(shí)在太確切了。
我們太多的教材,老板著個臉,文字乏味枯燥,拒人于千里之外。在這方面,最典型的是理論性本身就很強(qiáng)的教材。比如《離散數(shù)學(xué)》教材,大多數(shù)都充滿了大量的抽象的概念與定理,并夾雜著大段大段枯燥的形式化推導(dǎo)與證明,如果有人告訴我這樣的書他讀得“很享受”,那他不是一個“數(shù)學(xué)天才”就是在說反話。
我手頭有一本北京某著名大學(xué)的老師編寫的《離散數(shù)學(xué)教程》,寫作風(fēng)格比較簡潔,但太簡潔時就增大了閱讀的難度,薄薄的幾頁有時就得耗去讀者數(shù)個小時。剛好手頭還有另一本機(jī)械工業(yè)出版社引進(jìn)的《離散數(shù)學(xué)及應(yīng)用》(《Discrete Mathematics and Its Applications》,Kenneth H.Rosen著),就顯得平易近人多了。論厚度,這本是那位老師寫的書的1.5倍左右,但相比之下,我還是寧愿抱著臺電腦用“金山詞霸”去啃這厚厚的“英文磚頭書”。
這位著名學(xué)府的老師她本人無疑具有很高的數(shù)學(xué)水平,而這本教材,我想可能是針對該校基礎(chǔ)很好的本科生編寫的,對于像我一樣數(shù)學(xué)水平有限的普通讀者選它來學(xué)習(xí),無疑是個錯誤。
國內(nèi)國外同類教材對比,我不由得產(chǎn)生以下疑問:
為什么國內(nèi)作者在寫作時不能多舉些例子,不能多一些通俗的解釋?為什么國內(nèi)作者如此惜墨如金,能不能在書中多寫幾段話,點(diǎn)明這些理論的實(shí)踐意義?為什么國內(nèi)的作者不能在教材中對最重要的知識點(diǎn)給出“畫龍點(diǎn)睛”式的強(qiáng)調(diào),以幫助讀者去把握這一領(lǐng)域的脈絡(luò)?
我衷心希望國內(nèi)作者在寫教材時多從讀者的角度去想想,不要對讀者已掌握的知識與技能作太多的假設(shè)!
真正有成就的人,比如許多大科學(xué)家,都說他們之所以取得一定的成就,都是因?yàn)樗麄儗Ω髯缘念I(lǐng)域有著強(qiáng)烈的興趣,著名數(shù)學(xué)家陳省身就說過他是在“玩”數(shù)學(xué)。能把如此抽象的學(xué)科看成玩具,難怪陳先生能成為一代數(shù)學(xué)大家!
那對科學(xué)的興趣從何而來?
現(xiàn)在的家長和教師,從小學(xué)到大學(xué),無不為孩子沉迷于網(wǎng)絡(luò)游戲而發(fā)愁。為什么這么多的學(xué)生會喜歡上網(wǎng)絡(luò)游戲?很簡單,因?yàn)榫W(wǎng)絡(luò)游戲有趣,好玩,讓他們有成就感,可以讓他們逃避令他們感到痛苦的學(xué)校學(xué)習(xí)生涯。
為什么學(xué)生認(rèn)為學(xué)習(xí)是件苦差事?他們天天要啃的教材是這樣一副冷冰冰的模樣,有哪個學(xué)生會喜歡?這是非常自然的事情。
當(dāng)然,無論怎樣編寫,教材是無法做到像游戲一樣引人入勝的,但教材的編寫者完全應(yīng)該想辦法讓學(xué)生的學(xué)習(xí)多一點(diǎn)樂趣,少一點(diǎn)痛苦!
當(dāng)前大多數(shù)教材讀起來毫無樂趣可言,這點(diǎn)無庸多說,每個過來人都有體會。
3.在寫教材還是在寫論文
教材的寫作風(fēng)格與論文有很大不同,然而,真有一些教材是以“論文筆法”來寫的。
論文有特定的寫作方法,高水平的論文可能會用高深的數(shù)學(xué)語言來表述,比如愛因斯坦最初的有關(guān)狹義相對論的論文,據(jù)說當(dāng)時全世界科學(xué)家中能看懂的沒幾個,不為大眾所理解,并不影響論文本身的水平。
然而把這種“論文筆法”用到教材上,那就走入了誤區(qū)。教材的主要目的是傳播知識,而不是向世界宣告您又發(fā)現(xiàn)了什么新理論。如何讓讀者能更快地汲取書中的營養(yǎng),這是教材編寫者必須考慮的問題。
除此之外,還有更嚴(yán)重的問題。
當(dāng)今中國高校非常強(qiáng)調(diào)論文的發(fā)表數(shù)量,太多的人為發(fā)論文而忙碌。為了發(fā)表論文,出現(xiàn)了一種很不好的論文寫作風(fēng)格,筆者稱之為“淺入深出”。作者自己并未作太多的研究,也沒有多少真正的成果,為了論文更易于發(fā)表,必須人為地加大論文的閱讀難度,比如某個問題其實(shí)可以用幾句大白話就講清楚的,卻一定要繞個大彎子,加上N多數(shù)學(xué)公式……別人看不懂,呵呵,那是你水平不夠!大批這樣的論文中不乏“南郭先生”。
由于教材也是晉升高一級職稱審批的指標(biāo)之一,就有人為此目的而拼湊教材,自然而然地將拼湊論文的套路用到了教材編寫上,習(xí)慣成自然嘛。對這種“新鮮出爐”的教材,只能用一個詞來形容——“誤人子弟”!
4.從理論到理論的“空對空導(dǎo)彈”
計(jì)算機(jī)科學(xué)本質(zhì)上是一門實(shí)踐性非常強(qiáng)的科學(xué),正是實(shí)踐在推動計(jì)算機(jī)科學(xué)與技術(shù)的不斷進(jìn)步,許多的計(jì)算機(jī)理論都可以找到它的實(shí)踐基礎(chǔ)。
拿《編譯原理》來說,其中介紹到的許多理論與方法在軟件開發(fā)中應(yīng)用是很廣的:復(fù)雜的軟件如一個編譯器,簡單的程序如一個計(jì)算器;大規(guī)模的軟件如現(xiàn)代軟件集成開發(fā)環(huán)境,小的軟件如某個MIS系統(tǒng)中四則運(yùn)算公式的解析模塊,都可看到編譯理論的巨大威力。
然而,太多的編譯教材只重理論不重應(yīng)用,講了一大堆的文法和自動機(jī)理論,啰啰嗦嗦地詳細(xì)介紹各種分析方法,卻都是“紙上談兵”,從理論到理論,難怪有這么多的學(xué)生困惑不已:我為什么要花這么多的時間去學(xué)這么難的課程?它有什么用?難道僅為了考試?
知識的獲取與掌握是有其客觀規(guī)律的,一般而言,具體的知識易于理解,而抽象的知識則難于把握,在學(xué)習(xí)過程中,應(yīng)遵循“具體→抽象→具體→……”這樣一個無限循環(huán)的過程。
如果某人對一門學(xué)科所知不多,卻指望他能通過理論學(xué)習(xí)迅速地把握這門學(xué)科,這違反了人類認(rèn)識世界的客觀規(guī)律。
因此,從認(rèn)識論角度出發(fā),教材的編寫是不能從理論到理論的。必須先從實(shí)例引入,再介紹理論。教材應(yīng)盡可能地展現(xiàn)出人類在探索某個問題時所經(jīng)歷的具體過程,理清其來龍去脈,闡明知識之間的內(nèi)在聯(lián)系,從而幫助學(xué)生在學(xué)習(xí)過程中循序漸進(jìn)地建立起一個相對完整的知識體系。
改進(jìn)之路
那么,應(yīng)該如何寫出一本好的教材呢?
1.作者要有責(zé)任心
教材的作者,絕大部分都是教師。要牢記教師的職責(zé):傳道、授業(yè)、解惑。我們身上是有責(zé)任的,誤人子弟,則罪莫大焉!
這就要求作者厚積薄發(fā),盡可能不要出于功利性目的(比如升職稱)而寫教材。當(dāng)然,現(xiàn)實(shí)中功利性因素是不可避免的,只能要求作者既然要決定寫,就要盡可能地寫好。
我強(qiáng)烈反對沒有任何實(shí)際開發(fā)經(jīng)驗(yàn)與教學(xué)經(jīng)驗(yàn)的人來寫計(jì)算機(jī)類教材。孫子有語:不知彼不知已,每戰(zhàn)必?cái)?。這樣的人既對計(jì)算機(jī)技術(shù)不熟,又不了解學(xué)生的真實(shí)情況,怎可能寫出好教材?
另一個對作者的要求是與時俱進(jìn)。計(jì)算機(jī)理論與技術(shù)的發(fā)展太快了,因此一本好教材應(yīng)及時補(bǔ)充新內(nèi)容。在這點(diǎn)上,國外的許多經(jīng)典教材做得很好。比如我前面提到過的《離散數(shù)學(xué)及應(yīng)用》,我手頭上的已是第5版。還有一個例子,比如著名的Deitel父子寫的《Java How To Program》(《Java大學(xué)教程》),幾乎做到了Java每出一個新版本,相應(yīng)地他們也會跟著更新書中的內(nèi)容,出一個新版。
第三個對作者的要求是能與讀者互動。在互聯(lián)網(wǎng)大普及的時代,網(wǎng)絡(luò)是獲取讀者反饋信息最便捷的手段。國外的著名教材,幾乎每本都有一個網(wǎng)站提供各種的附加資源,并給讀者答疑解惑。對于國內(nèi)的作者而言,要求每本教材都建立一個獨(dú)立的網(wǎng)站是不切實(shí)際的,但最起碼作者應(yīng)該留一個電子郵件地址。目前Blog非常紅火,許多博客網(wǎng)站都提供免費(fèi)的Blog服務(wù),筆者認(rèn)為這是一個很好的作者與讀者互動的平臺。
2.弄清楚教材是給誰看的
教材與理論專著不同,教材是學(xué)生學(xué)習(xí)的依據(jù),其目的是更快更好地將知識傳授給學(xué)生,因此,應(yīng)從學(xué)生角度而非教師角度編寫教材,要讓學(xué)生“便于學(xué)”,而不是教師“便于教”(當(dāng)然最好兩者兼顧,不能兼顧則學(xué)生優(yōu)先)。
我看到許多的教材都是“教師編給教師看的”,而不是“教師編給學(xué)生看的”,這種教材如果沒有老師教,學(xué)生幾乎無法自學(xué)。
比如看到某教材有“教師手冊”與“學(xué)生課本”之分,或者有“正式課本”與“輔導(dǎo)材料”之分時,我覺得這是一種“一切以教師為中心”的教學(xué)思想的反映。其本質(zhì)在于教師要比學(xué)生壟斷更多的資料,以便樹立教師的“權(quán)威”,而學(xué)生只能在教師的講授與指導(dǎo)下學(xué)習(xí)。有這個必要嗎?這種方式,我怎么看都有點(diǎn)“武大郎開店”的嫌疑。
在現(xiàn)在這個信息爆炸的時代,重要的是培養(yǎng)學(xué)生的自學(xué)能力,怎能讓學(xué)生離了教師就不會學(xué)習(xí)了?
另外,按“便于學(xué)生自學(xué)”的方式編寫教材,其實(shí)反過來也有助于教師(特別是新教師)深入理解教材,從而把教學(xué)工作做得更好,真正做到“教學(xué)相長”。
3.深入淺出才是好教材
一本適合于學(xué)生自學(xué)的教材,一定要做到深入淺出。這是很不容易的。其前提是作者要有深厚的積累,才能“用普通話講抽象的理論,用大白話講復(fù)雜的技術(shù)”。我個人發(fā)覺,如果做到八個字,教材的可讀性就可大大增強(qiáng)。這八個字是:善用比喻,實(shí)例為王!
一個好例子,勝過千言萬語。例子在幫助學(xué)生掌握知識方面的作用是無法估量的,尤其是針對理論性強(qiáng)的課程。
舉個例子,《數(shù)據(jù)庫原理》往往要講到數(shù)據(jù)庫范式,理論講得太多,不如舉一個學(xué)生都非常熟悉的網(wǎng)上選課系統(tǒng),詳細(xì)分析將學(xué)生信息與課程信息分布到數(shù)據(jù)庫表中的不同方案,比較每個方案的優(yōu)缺點(diǎn),進(jìn)而自然地引出范式的概念,并讓學(xué)生能直觀地理解如何在數(shù)據(jù)庫中應(yīng)用范式去解決數(shù)據(jù)完整性、冗余性等在實(shí)踐中遇到的問題。
另一個方面,計(jì)算機(jī)科學(xué)理論與技術(shù)中都涉及到大量抽象的概念,教材在向?qū)W生介紹概念的內(nèi)涵時,既要注重科學(xué)性與嚴(yán)謹(jǐn)性,更要注重通俗性。
在這方面,比喻這一修辭手法大有用武之地。
比如,介紹C++課程中的名字空間(namespace)概念時,將“類”比做書,將“名字空間”比作圖書館或書架,則學(xué)生很快就能明白這一抽象概念的含義。
還有《數(shù)據(jù)結(jié)構(gòu)》中的堆棧,可以將其比喻成羽毛球筒,其特點(diǎn)是每次只能從開口處塞入和取出一個羽毛球。
《軟件工程》中介紹軟件項(xiàng)目的迭代開發(fā)原則時,可以用“滾雪球”來類比軟件項(xiàng)目的進(jìn)化過程。
其實(shí)漢語有著豐富的表現(xiàn)力,看看過去和現(xiàn)在各個文學(xué)家的著作,難道我們的教材編寫者不能從這些地方汲取營養(yǎng),把教材寫得盡可能地“好看些”?
4.授人與魚,不如授人與漁
“授人與魚,不如授人與漁。”
傳頌千古的名言,蘊(yùn)含著深刻的道理。
計(jì)算機(jī)科學(xué)的每個領(lǐng)域,其實(shí)都有一些最重要最基本的思維方法。在教材中,應(yīng)致力于將這些非常重要的思維方法以直觀的形式突顯出來,引導(dǎo)學(xué)生先去認(rèn)識這種思維方法,再讓他們?nèi)L試應(yīng)用這種思維方法,最終能活用這種思維方法。
因此,好的教材,應(yīng)該讓學(xué)生能領(lǐng)會不同領(lǐng)域具有不同特點(diǎn)的思維方法,而不是僅僅只關(guān)注一些具體知識的傳授。
比如,學(xué)數(shù)學(xué)就要讓學(xué)生知道怎樣從特殊到普遍,從已知推未知,知道怎樣從假想開始再以科學(xué)的推理方法去證明假想的對錯,掌握從大量的數(shù)據(jù)中去找出其中蘊(yùn)含著的特定的數(shù)學(xué)規(guī)律的方法……
學(xué)編程就要讓學(xué)生知道針對某個問題,應(yīng)怎樣去設(shè)計(jì)一個解決方案;在具體開發(fā)中,面對著技術(shù)難點(diǎn),用什么方法去攻克它;理解為什么在編碼過程中,要高度注意編碼的規(guī)范性;知道如何將軟件工程的相關(guān)理論滲透到具體開發(fā)實(shí)踐中……
只有具有這樣特點(diǎn)的教材,才能使學(xué)生掌握做事的方法,并使他們的思想深刻起來,成為一個有著獨(dú)立思維能力的人。
我想,作者如能作到以上幾點(diǎn),寫出的教材其質(zhì)量應(yīng)是不差的。
寫出特色來——我的教材編寫實(shí)踐
作為一名高校的一線教師,我既熱愛教學(xué)工作,又喜歡鉆研軟件技術(shù)。
在工作中,我一直都在琢磨著有關(guān)計(jì)算機(jī)教育方面的一些問題。本文前面的一些觀點(diǎn)就是我在教學(xué)實(shí)踐中逐漸總結(jié)的。
但這些觀點(diǎn)是否正確,是否可行,這只能由實(shí)踐來說話。我決定編寫一本教材,全面地嘗試我在上面所提到的各種觀點(diǎn)。
從2004年11月到2005年7月,我用了9個月的時間寫了一本不像教材的教材:《編程的奧秘——.NET軟件技術(shù)學(xué)習(xí)與實(shí)踐》,這本教材與傳統(tǒng)教材的模樣有很大的不同。
這本書的基本原型是我在北京理工大學(xué)開設(shè)的“.NET軟件開發(fā)技術(shù)基礎(chǔ)”選修課教案,該課程得到了微軟公司2005年“微軟高校精品課程支持計(jì)劃”的資助,教材于2006年1月由電子工業(yè)出版社出版。
在寫作過程中,我想得最多的就是如何走出一條教材編寫的新路子,探索一些新的教材編寫方法,一句話——寫出自己的特色來!
書出版以后,我在自己的Blog上(http://blog.csdn.net/bitfan)建立了一個讀者作者交流區(qū),自己的郵箱也陸陸續(xù)續(xù)地收到不少讀者郵件。
在我收到的讀者反饋信息中,大都對這本書給予了充分的肯定。而這些讀者中,絕大多數(shù)是在校的大學(xué)生,由于書價較貴,有讀者來信說他省了半個月的飯錢才買下這本書,還有的讀者在書店“站讀”數(shù)個小時……令我非常感動。
學(xué)生對這本教材的肯定給了我很大的鼓舞,我想應(yīng)該把自己的這些觀點(diǎn)公開提出來討論,這種討論是有益的。
關(guān)于計(jì)算機(jī)教材的編寫,其實(shí)是個非常大的話題,我所知道的一些朋友中,有不少在這個領(lǐng)域有著獨(dú)到的見解,從他們那兒我得到了許多啟發(fā),而這篇文章僅僅代表我個人對計(jì)算機(jī)教材編寫問題的思索結(jié)果,其中一定有許多偏頗不當(dāng)之處,敬請讀者海涵。非常歡迎大家與我共同探討計(jì)算機(jī)教育的相關(guān)問題,我的電子郵件:JinXuLiang@bit.edu.cn。