高翔 郭恒川 王國強
關鍵詞:中國文化;C語言;文化自信
黨的十八大以來,習近平總書記反復強調文化自信,做出深刻闡述。早在2014年習近平總書記在文藝工作座談會上就指出“中華優秀傳統文化是中華民族的精神命脈,是涵養社會主義核心價值觀的重要源泉,也是我們在世界文化激蕩中站穩腳跟的堅實根基。增強文化自覺和文化自信,是堅定道路自信、理論自信、制度自信的題中應有之義”[1]。2019年習近平總書記在考察南開大學時強調“我們要把學習的具體目標同民族復興的宏大目標結合起來,為之而奮斗。只有把小我融入大我,才會有海一樣的胸懷,山一樣的崇高。”計算機專業課程,特別是編程設計類多起源于外國,教學過程中缺少中國文化元素。如何將中國文化融入程序設計課程中,牢記傳播文化自信,培育匠心文化的使命擔當;讓學生樹立傳承大國文明,為我國大國工藝做貢獻的匠心。是當前C語言課程文化自信培養的重要組成部分。
1 在章節設計與命名中融入中國元素
C語言程序設計是計算機科學與技術、軟件工程、物聯網、大數據、通信工程等計算機相關專業的第一門專業基礎課程。C語言程序的學習不僅是一門編程語言的學習,更是計算機相關專業學生進入大學開始專業修習之路的基石。這門課程的學習態度與思維認知直接關系到四年大學生涯的起跑狀態,因此教師在授課過程中不僅要讓學生認識“專業”,更要讓學生認識“民族復興的宏大目標”。將中國元素、中國文化、中國精神融進每一堂課,每一個細節,“潤物細無聲”融入每一堂課程學習中。
C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用于底層開發[2]。自1972年上線至今已經形成了較為完備的學習路徑與學習方案。將中國元素融入C課堂的本質是探索兩者的有機融合,而不是生硬地替代。因此章節設計中應以現有課程學習安排為基礎。
談到中國文化,成語詩詞武林功夫都是其不可缺少的組成部分,結合C語言學習調動每個學生心中的“武俠”夢,這里將C語言的學習劃分為九個章節。
1.1 基礎知識章節設計
考慮C語言是學生接觸到的第一門專業類課程,將基礎知識分成三個章節:第一章:啟·程序世界;第二章:九層之臺·起于累土;第三章:吐納收放·出將入相。與傳統教學中認識C語言、C語言的運算符與表達式、順序結構相對應。
1) 啟·程序世界
話說自牙牙學語,我們就知道若想和人交流溝通不但要會說話,還要說得合理,此前我們所學皆為與人交流,而今番欲與計算機對話必先掌握一門計算機語言,自今日起眾弟子需掌握C派絕學,認識全新程序世界。
2) 九層之臺·起于累土
欲知平直,則必準繩;欲知方圓,則必規矩。學程序第一步便是學規矩,程序設計的規矩就是其數據類型、表達式規范、命名規則。這一章我們就從這最簡單的遣詞造句說起,須知積土成山風雨興焉,積水成淵蛟龍生焉。
3) 吐納收放·出將入相
若想成就一番編程神功,需將派內語法、數據、表達式與語句熟練掌握。這一章將帶領大家修習最基本的吐納之法,教習弟子習得與計算機交互的輸出、輸入語句規范。眾家弟子需嚴守本派語法規則,照章依令方能與計算機實現友好交互。
1.2 分支循環與函數調用
對應程序設計的結構中三個進階章節選擇結構程序設計、循環結構程序設計與函數調用問題設置了第四章:枝流葉布·分道揚鑣;第五章:周而復始·曲終人散;第六章:星羅棋布·連墻接棟。
1) 枝流葉布·分道揚鑣
前行之路不僅僅是無條件地向前,十字街頭抉擇不同終會分手,是故程序運行終有抉擇,豆刨瓜分亦是難免,兄弟分家需做到條件明確,分割清晰,是為選擇分支也。這一章我們將帶領大家從選擇中的邏輯運算開始逐步學習各種分支結構。
2) 周而復始·曲終人散
騏驥一躍,不能十步;駑馬十駕,功在不舍;鍥而舍之,朽木不折;鍥而不舍,金石可鏤。成事者必有循環往復之時,一招一式需反復磨煉,達成標準方可出師。這一章我們將帶領大家學習利用循環結構處理需要重復處理的問題。本章學習需謹記六字箴言:【有效】【確定】【有窮】。
3) 星羅棋布·連墻接棟
《淮南子·主術訓》云“乘眾人之智,則無不任也;用眾人之力;則無不勝也”。功力見長任務亦愈加繁雜,一饋十起未嘗不可,然程序冗長龐大,勞心勞力且內存耗費大而無用者多,是故調兵遣將,善用軍士用兵之上籌也。是故【善分工】【會調派】【知回報】成事之重也。
1.3 數組、指針與用戶自定義數據類型
在C語言中數組屬于構造數據類型,在此之前學習的程序設計中用到的變量都是基本類型,不能描述多個相同性質的數據之間的內部聯系。而指針是C 的一個重要概念,不張我指針就沒有掌握C的精華。用戶在解決復雜問題時僅適用系統提供的數據類型不能滿足用戶的需要,C語言允許用戶根據需要與使用習慣建立自己的數據類型。因此這三個章節的學子要求學生發揮更多的想象力與邏輯思維能力。因此這三個章節強調了學習箴言,將這三章命名為:第七章:星羅棋布·連墻接棟;第八章:調兵遣將·斗轉星移;第九章:出師·造物。
1) 星羅棋布·連墻接棟
迄今為止所涉數據皆為基本類型,然兵多將廣逐一點兵勞心費力,單兵孤城亦不可取。是故比物連類,類聚而群分。數據可依續、分類存儲管理從而實現數據的高效批量處理,提高工作效率。本章學習四字箴言【同類】【有序】。
2) 調兵遣將·斗轉星移
古有俗語“跑了和尚跑不了廟”,可知以其地址直搗黃龍。是故從古至今營房地圖、軍控布防、要塞地址皆為密中之密,不可輕易示人。C派武學有一獨門秘籍,變量尋查可直“指”其址,“針”砭治之。用此秘籍則程序簡潔高效,故C派有云不掌握指針便是未得C派靈魂也。
2 理論教學學習課程詳細安排
課堂教學是高校人才培養工作的主渠道,是涵育大學生文化自信的首要途徑[3]。中國人講究家學淵源;學習C語言講清程序的傳承與發展對學生理解C 語言教學,清晰掌握未來學習方向與課程學習在整個計算機專業課程體系中的作用至關重要。
2.1 C 語言基礎學習
講解C語言自然要從程序設計的家譜傳承講起,對C語言的初印象講解也將中國文化元素融入章節小標題中:用C家絕學——宗派特色概述C語言的語言特點、以混沌初開頭一句來描述“printf“( hello, world!”);”這句話所涵蓋的跨世代的意義、通過行文八股需牢記的八股文行文要求來類比函數撰寫規范對C 語言程序設計的意義,將格式、規矩四個字牢記在胸。
算法是程序設計的靈魂,初學編程的學生總會錯誤地認為算法舉例自己很遙遠,不做“碼農”就可以不用學這些,這個認知是錯誤的,在基礎學習階段就要給學生樹立“天下武功需謹記外練筋骨皮,內練一口氣。真正大成之人不僅能比劃招式還要有深厚的內功,而算法就是編程大功的心法秘籍”。將流程圖比喻成內功修煉之圖文秘術,幫助學生認識正確繪制流程圖對理解程序結構的重要作用。
2.2 數據、運算符與表達式
數皆有型,分類存儲。數據是運算的基礎,選擇合適的數據類型與存儲方式、存儲位置對程序設計的重要程度就如同調料與食材的選擇之于烹飪,向學生介紹數據存儲概念過于空翻,將數據類比食材與調料;將運算符與表達式的正確選擇類比烹飪方式與食材的挑選結合可以更省工。以“治大國烹小鮮”形象地將知識與類比升華。
數據相依爬羅剔抉,無論常量變量、身披迷彩的轉義字符還是特立獨行的常變量都有嚴格的使用規范,擇優選之配以表達準確運算有序的算法設計是程序設計正確進行的第一步。
在講述C語言表達語句時重點描述“C家語句第一霸-抵背扼喉的控制語句”,以“抵背扼喉”來形容控制語句的關鍵作用,并通過控制語句的講解幫助學生開啟程序結構的認識。
2.3 輸入輸出與順序結構設計
戰國·鄒·孟軻《孟子·離婁上》:“離婁之明,公輸子之巧,不以規矩,不能成方圓。”
程序員第一要素就是嚴謹——“井井兮其有理也”。這個章節的學習重點在“規矩”兩個字。在課程設計中每個小標題都將“規矩”二字融入其中,規行矩步照本宣科的printf,蹈矩循規、不易一字的scanf,利用成語將格式化輸出輸入函數的特點概括得精準到位,一方面這些成語學生自幼接觸,用之可更形象生動地幫助學生認同與理解格式化輸入輸出的規則與要求。
一字一句四個字形象地解釋了putchar 函數和getchar函數的根本——僅能對單個字符進行操作。在這兩個函數的學習中,學生最常出現的誤區就是將標點符號當成字符的附加成分,本節教學要讓學生理解字符的含義,使用字符函數需嚴格按字符操作,毛舉細入。
2.4 分支與循環
順序、分支和循環是程序設計的三種基本結構,其中順序結構最為簡單,分支結構在理解起來很容易,設計中常出的問題在于分支條件的設定必須明確,邏輯、關系涇渭分明。這一章也是思政教育最深入的章節,人生多歧路,修選在個人。人生的每一個抉擇都會造就不同的未來。
循環結構程序設計這一章與中國文化的羈絆最深。《戰國策·燕策二》:“此必令其言如循環,用兵如刺蜚繡”。《史記·高祖本紀論》:“三王之道若循環,終而復始”。循環的本質不是一成不變,而是一個由量變到質變的積累,每次循環看似執行同樣的操作,但每次執行循環提前都要先“自省吾身—符合條件否”,離開時要記得改變循環控制變量的值,正是《弟子規》中“出必告,反必面”。這與函數嵌套調用中要遵循的“調用結束返回函數調用處”有相似性,都是中國文化中講究的“有始有終,從哪里來還要回到哪里去”。
3 實驗與實踐環節教學中的文化傳承
程序設計中比較經典的例題多選用外國的例子,這對文化自信的建立是弊大于利的,要建立健全文化自信,就要將中國文化放在每一章、每一節、每一個細節之處。故此在實驗與實踐教學環節中挑選例題時多從中國古代數學論著中挑選。
3.1 課堂案例設計
臨淵羨魚,不如退而結網,授人以魚,不如授之以漁。程序設計最重要的環節在練,因此C語言教學中會有大量的課堂案例放在其中,在基礎章節學習中題目多從《九章算術》中挑選。九章算數中的“術”可以對應計算機科學中的算法[4],在順序結構設計、分支結構設計這兩個章節引入《九章算術》中的田術作為例題。
循環程序設計學習中《孫子算經》的“雞兔同籠問題”是非常好的案例與示范,一方面考察了學生循環的嵌套使用,另一方面也通過不同的解決方案讓學生理解編程算法冗余度、復雜度問題。明代程大衛的《直指算法統宗》中百僧分饅頭問題也是類似的題目。
南宋《詳解九章算術》中楊輝三角形是數組應用的典型案例。
3.2 實驗教學設計
實驗是C語言程序設計實踐教學中學生獨立思考與獨立設計的第一環節,離開教室的輔助,學生需要獨立完成一定的實驗題目,而中國古代數學問題的引入可以將枯燥的教學內容變得生動有趣,這樣既培養了學生的學習興趣,讓學生感受到古人的聰慧智慧,充分調動了學生的學習積極性、主動性[5],又將文化自信潤物細無聲地融入學習之中。
張丘建《算經》中“百錢買百雞”問題是基本程序結構實驗的典型題目,循環的嵌套和分支與循環的套用是題目的關鍵;“韓信點兵”問題用到了break語句;明代程大衛的《直指算法統宗》中“浮屠增級歌”“百羊問題”都是C編程的簡單實例。
割圓術和秦九韶算法是函數調用中比較契合的案例,高中數學中對這兩個知識點都有詳細的解釋,在大一C語言程序設計學習中將這兩個案例用計算機編程實現是對數學知識的傳承,古老的算法和現代信息技術融為一體,讓枯燥的程序設計課程充滿智慧與文化的氣息。
4 結束語
在將人才培養放在專業能力培養的大方向下,依然需要加強文化自信的培養。上一堂有文化、有傳承的C 語言程序設計課是培養大學生一脈傳承的新時代文化自信的重要組成,文化自信是大學生全面發展的內在要求,是培養大學生擔負民族復興重任的關鍵途徑[6]。