it教材的邏輯學視角
王詠剛
前不久,著名物理學家楊振寧先生在某論壇上以《周易》為例,批評了中國古代重歸納而輕推演的學術傳統。楊先生的論斷立即在學術界引起了不小的波瀾,贊成和反對的聲音此起彼伏。對此,我個人的意見是:楊先生將《周易》這種幾乎與現代科學毫不相干的國學經典與「歸納」、「推演」等肇始於古希臘城邦的邏輯學概念關聯在一起,這頗有些強為「體用」的嫌疑;但無論如何,楊先生據此得出的結論——中國古代學術缺乏形式邏輯、數理邏輯等科學思維方式的事實——卻是毋庸置疑的。也難怪,早在兩千年前,惟一有可能成為邏輯學濫觴的名家學說就已經被獨尊儒術的政治浪潮淹沒和吞噬,寸土無存,又何談稼穡呢?
這種「傳統」延續到今天的結果是,國內不少接受了現代科學訓練的研究者會在不知不覺間忽視了邏輯上的嚴密性和完整性,並最終喪失了自己在科學領域裡的話語權。類似地,在it教材編撰這門特殊的科學裡,如果我們對知識表述和傳承的內在邏輯視而不見,只知道依據有限的「教學經驗」決定教材的體例、結構、編撰方式和行文風格,國產it教材就必然會在國外經典教材的中譯版和影印版的聯合夾擊下丟掉最後的陣地。相反,如果我們可以清醒地認識到,編寫it教材這件事與普通的科學研究或**編撰有著本質的不同(前者的目標在於降低知識傳承的難度,其內在邏輯必須符合教學而非科研的基本規律),那麼,國產it教材一直以來的重裝輸而輕引導、重演繹而輕歸納的不良傳統就有希望得到根本的改變,真正優秀和經典的國產教材也就不會讓師生們望眼欲穿了。
說許多國產it教材重演繹而輕歸納(這正好和楊先生批評的學術傳統相反),可以舉乙個顯而易見的例子。現在,不少大學的編譯原理課程的教學已經在使用國外教材了,其中,最著名的一本教材是alfredaho等編寫的《編譯原理、技術與工具》,也就是業界所說的「龍書(thedragonbook)」了。大多數人都知道「龍書」比國內的編譯原理教材好用、好學,但很少有人肯花心思研究「龍書」的編撰方法和內在邏輯。拿我自己來說,我一直對「龍書」讚不絕口,但也一直心存乙個碩大的問號:「龍書」的第2章佔據了原書近60頁的篇幅,可即便刪去第2章,「龍書」所描述的知識體系的完整性也不會受到任何影響,alfredaho等人為什麼一定要引入乙個結構複雜、牽涉知識面相當廣的第2章呢?其實,這個問題的答案與知識傳承的規律或曰認知邏輯有關。敘事學家愛瑪·卡法勒諾斯曾說(《新敘事學》,北京大學出版社,2023年):「我們能獲得哪些事件資訊,這在很大程度上取決於我們的時空位置,由於這個原因,我們獲知事件時的順序與事件本身的時間順序往往是不同的。」把這句話類推到it教材編撰領域就是:發現知識的順序與教授或學習知識的順序往往是不同的,如果教材的編撰者不能在寫作時將自己擺到教與學的時空位置,就必然會模糊甚至破壞教材本身的內在邏輯。
比如說,國內的編譯原理教材大多在簡單的序言之後,就直接進入文法、語言、詞法和語法分析等知識的傳授,而在每一組知識的傳授過程中,又幾乎毫無例外地遵循「定義-分類-公式」或「演算法推導-實用案例」的講述順序。換言之,國內大多數編譯原理教材都試圖在課堂上營造這樣一種教學邏輯:我是這一領域無所不知的權威教材;我會首先告訴學生該領域的所有公理;然後勒令學生背誦所有相關定理的推導方法,以及典型問題的求解過程;最後還要教學生使用「照貓畫虎」的方式解決典型問題。殊不知,這種高高在上、全知全能的知識表述方式在邏輯上遵從的是「由抽象到具體」的演繹法則,它在科學研究或學術**編撰時效果顯著,但照搬到教材編撰領域,就只相當於許多高三學生刻骨銘心的「填鴨」式應試教育,空有「效率」而無效果了(國內的教材撰稿人大多是活躍在「**數量大比拼」第一線的職業教員,這大概就是「教材**化」風潮背後的內因吧)!
相反,「龍書」的編撰者在確定全書的邏輯結構時一定認真思考了以下問題:編譯原理的整個知識體系是數十年中無數學術精英在形式語義學、計算數學、電腦科學等相關領域探索、積累的結果;普通學生既不可能憑空承受這許多知識點的狂轟濫炸,也不可能在短短的一學期裡重複前人數十年的研究歷程———也就是說,單純的知識演繹或單純的經驗歸納都不足以滿足編譯原理的教學需要,必須探索或創造一種符合教學規律的知識表述邏輯,其關鍵在於:要讓學生用最小的代價重新體驗知識積累的全過程,以便掌握此領域裡最基本也最重要的研究方法和學術規律,同時引導學生以最快的速度進入整個知識框架,並在保持學生濃厚學習興趣的同時與學生一同經歷神奇、刺激、充滿挑戰的知識探索歷程。
為了實現這樣的目標,「龍書」的編撰者精心設計了全書的邏輯結構,並特別引入了異常精彩和重要的第2章。我第一次閱讀「龍書」時,在讀罷第1章,了解了相關知識背景後,我的求知慾(其實是好奇心)就被推到了最高峰,我迫切想知道:我們日常使用的優秀編譯器到底是如何編寫出來的?我自己也能實現乙個真正的編譯器嗎?我能發明一種別具一格的程式語言嗎?我能像knuth一樣利用編譯知識創造出可以與tex媲美的軟體工具嗎?這個時候,如果我讀到了國內教材裡司空見慣的第2章或第3章,面對大量枯燥乏味的術語或符號,我的所有求知慾就會像失戀之後的表現慾、談話欲、唱歌欲乃至飲食欲一樣消失得蹤影全無。很幸運,我在這個時候讀到的是「龍書」的第2章。在這一章裡,「龍書」用乙個最簡單的例子,引導我一邊動手、一邊動腦,在最短的時間裡經歷了乙個微型編譯系統設計的全過程,並潛移默化地把編譯領域的基本知識框架和基本研究方法「印」在了我的腦子裡。更為重要的是,當我懷揣著在第2章中輕易建立起來的自信心進入後續知識點的學習時,我經常有意無意地發出這樣的感嘆:喔,我想起來了,這個問題我在第2章時就已經思考和研究過,這裡只不過是同一問題的推廣和延伸罷了。嚴格地說,「龍書」第2章所展現的是一種在先驗知識體系指導下的「由具體到抽象」的歸納法則,這種表述邏輯與普通學生的認知邏輯正好兩相契合,同時還為後續章節中必要的演繹邏輯埋下了伏筆,減少了教與學的邏輯障礙和心理負擔。無疑,「龍書」的第2章正是全書的「書眼」。
除了第2章外,「龍書」在其他章節中展現出來的邏輯完整性也值得稱道。拿「自頂向下語法分析」的講解順序來說,國內不止一本的編譯原理教材在相應章節都首先給出了ll文法及first、follow函式的定義,然後再介紹遞迴下降和**分析的演算法和實現。而「龍書」的講授順序正好相反:先介紹演算法的基本思路;這樣的演算法為文法提出了某些限制條件,如此得出的文法被稱為ll文法;接下來,為了實現**分析法中必要的表驅動演算法,需要引入first、follow函式的定義——不難看出,「龍書」的知識表述邏輯完全符合由淺入深、由此及彼、逐層遞進的教學規律,是歸納邏輯和演繹邏輯的完美統一。反觀國內教材,如果說在上面那種違背教學規律的講述順序中還有某種邏輯規律可尋的話,那也不過是一種徹頭徹尾地服務於應試教育的「填鴨邏輯」罷了。
值得說明的是,「龍書」等優秀教材在形式上的邏輯完整性是根植在教材編撰者正確認識教學規律的基礎上的。我們追求知識表述邏輯的嚴密或完整,其最終目的都是為了使教學曲線更為平滑,使學生更容易掌握最基本也最有效的知識和方法。離開了這個大前提,片面強調邏輯完整性只會製造新的認知障礙。例如,國內應用最廣、發行量最大的一本《編譯原理》教材顯然受到了「龍書」的影響,也引入了乙個試圖用案例展現知識體系全貌的第2章,但很遺憾,它的編撰者顯然沒有悟到it教材應儘量減少認知障礙的真諦,居然又在第2章中擺起了理論家的臉孔,選擇了乙個學術味兒十足的pl/0語言作為案例,還迫不及待地用大量味同嚼蠟的術語和語法圖堆積出了pl/0語言的語法和語義。這種模仿方式只會粗暴地把師生的積極性轉變為完成教學、考試任務的「慣性」,並最終落得個畫虎不成反類犬的滑稽結局。
簡言之,邏輯混亂的it教材是教材中的偽劣品,邏輯清晰但不夠完整,或不符合教學基本規律的it教材同樣無法成為教材中的經典。從邏輯學的角度出發,我們或許可以找到某些評價或改進教材質量的定量方法,例如,統計教材中知識點分布的基本規律或計量教材中知識參照和引用的方向及密度,並以此為基礎,比較和完善教材的邏輯模型或知識表述結構等等。但方法僅只是方法,如果教材的編撰者始終對教與學的特殊性視而不見,也許若干年後,就又會有某個諾貝爾獎得主像楊振寧先生那樣,拿著21世紀初葉的某部國產it教材斷言,中國一向缺乏合乎邏輯的教學思路和認知模型了。
本文出版《中華讀書報》
龍書最新版本,紫龍書12月01日登陸互動出版網:http://www.china-pub.com/static07/0811/jsj_longshu_081124.asp
《簡單邏輯學》總結
乙個完整的邏輯論證 我們的消費心理實在遠遠不夠成熟 a.先明確消費心理是什麼 b.表現的行為現象是什麼 c.成熟的表現是什麼樣子 d.不成熟的表現是什麼樣子 e.成熟與不成熟之間的量化區別。學習邏輯學的雙重意義 雙重意義 1 它將使我們對正確推理有更深入的了解,讓我們的神經更為敏銳,從而使我們更加堅...
分治的邏輯學描述
分治的邏輯學描述 問題分解 p p1 p2 pn 問題求解 f p f p1 p2 pn f1 p1 f2 p2 fn pn 設問題的解決方案為 y f x 其中 x 為問題的輸入集合,f是問題的處理方法,y是問題的解。將x拆分成多個子集以後,設這些子集的集合為 x 則 x 滿足以下條件 x1 x2...
簡單邏輯學 邏輯學的基本原理 正確論證
乙個論證,如我們所見,有兩個基本要素 前提和結論。如果乙個經濟學家作出了乙個 比如,通貨膨脹將在未來六個月內收縮,並且希望不經過任何解釋,大家就可以接受他的觀點。此時,這個 的可信度完全取決於這個專家的權威性。因發言人的權威性而接受他的觀點也不是不合理的。事實上很多時候,我們都在這麼做。如果某人是某...