劉硯
摘 要:程序設(shè)計(jì)課程的教學(xué)改革一直在持續(xù),大量的新方法、新概念被運(yùn)用,為課程改革提供助力。本文立足程序設(shè)計(jì)思想的發(fā)展變化,對當(dāng)下程序設(shè)計(jì)課程教學(xué)現(xiàn)狀進(jìn)行分析,并提出應(yīng)對的方法,以期為程序設(shè)計(jì)課程教學(xué)改革提供新思路。
關(guān)鍵詞:程序設(shè)計(jì)? ? 教學(xué)改革? ? 編程思想
程序設(shè)計(jì)是一門開展教學(xué)時(shí)間較長的計(jì)算機(jī)類專業(yè)核心課程,各職業(yè)院校在程序設(shè)計(jì)方面的師資及教學(xué)資源都具有一定的儲備,也積累了很多教學(xué)經(jīng)驗(yàn)。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,程序設(shè)計(jì)語言也在快速更迭,相關(guān)的課程內(nèi)容也在同步更新。從早期的Fortran、Basic、C、C++到其后的Java、C#,再到現(xiàn)在最為流行的Python等,程序設(shè)計(jì)理念也不斷革新。筆者依據(jù)編程思想的發(fā)展變化,分析程序設(shè)計(jì)課程應(yīng)重點(diǎn)把握的要點(diǎn),對當(dāng)下程序設(shè)計(jì)課程出現(xiàn)的問題與挑戰(zhàn)進(jìn)行分析,并探討課程改革的切入點(diǎn),以期為同類研究提供新的思路。
一、程序設(shè)計(jì)思想概述
(一)面向過程的編程思想
在越來越多的應(yīng)用中,計(jì)算機(jī)的用途被不斷拓寬。當(dāng)計(jì)算機(jī)不再僅僅是數(shù)學(xué)運(yùn)算的工具,而可以處理更多復(fù)雜的業(yè)務(wù)時(shí),語言也必然需要升級。高級程序設(shè)計(jì)語言被創(chuàng)造出來,更多的人能夠與計(jì)算機(jī)對話,更多的資源投入計(jì)算機(jī)程序設(shè)計(jì)過程,也就意味著有更多的思想注入其中。在程序設(shè)計(jì)的實(shí)踐中,工程師們結(jié)合工作與生活中積累的智慧,創(chuàng)建了面向過程的程序設(shè)計(jì)思想,按照業(yè)務(wù)邏輯自頂向下逐步解決問題,這是一種“自然而然”的思考模式,在很多場景中這種思想十分有效,這也成為很長時(shí)期內(nèi)主流的開發(fā)思想。
(二)面向?qū)ο蟮木幊趟枷?/p>
當(dāng)業(yè)務(wù)邏輯變得越來越復(fù)雜,軟件維護(hù)的成本控制的難度也在快速加大,代碼的復(fù)用性和擴(kuò)展性經(jīng)受著極大的考驗(yàn)。面向?qū)ο笏枷霗M空出世,沖擊了傳統(tǒng)的編程思路,在實(shí)踐中顯示出與眾不同的優(yōu)勢。這是一種從更高的角度審視問題,在大自然中汲取靈感,繼承、封裝與多態(tài),用簡潔的概念詮釋復(fù)雜的機(jī)制、基于本質(zhì)的探索歸結(jié)的方法。
二、程序設(shè)計(jì)課程的著力點(diǎn)分析
程序設(shè)計(jì)思想的發(fā)展過程,一方面基于計(jì)算機(jī)應(yīng)用的需求變化,另一方面也顯示了人類求新求變的更高的追求。教師在程序設(shè)計(jì)課程的教學(xué)中,對于程序設(shè)計(jì)思想的發(fā)展過程應(yīng)予以涉及。
(一)計(jì)算機(jī)硬件基礎(chǔ)
了解硬件才能更好地了解軟件。在程序設(shè)計(jì)課程學(xué)習(xí)過程中,對于計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的理解水平在一定程度上會影響對于軟件系統(tǒng)知識的理解深度。這與計(jì)算機(jī)的發(fā)展過程具有緊密相關(guān)性。
(二)程序設(shè)計(jì)的意義
學(xué)習(xí)程序設(shè)計(jì)之前,先要了解程序設(shè)計(jì)的意義,明確學(xué)習(xí)路徑的設(shè)計(jì)模式。編寫程序一開始自然是為了解決某些問題,比如科學(xué)家通過復(fù)雜的數(shù)學(xué)運(yùn)算來計(jì)算導(dǎo)彈的運(yùn)行軌跡,或者開發(fā)一套系統(tǒng)工具為計(jì)算機(jī)用戶提供輔助。但是程序設(shè)計(jì)的意義不僅僅在于解決問題本身,更在于其過程。在進(jìn)行程序設(shè)計(jì)的過程中,需要根據(jù)用戶的需求,將問題抽象,需要分而治之,還需要理清邏輯。通過上述過程,能讓程序設(shè)計(jì)者與問題的領(lǐng)域距離更近,可以進(jìn)行更多跨界的嘗試,鍛煉邏輯思維能力。
(三)提高編程水平的方法
編程水平的提高離不開實(shí)踐,這和其他語言的學(xué)習(xí)有異曲同工之處,語言的習(xí)得必定要運(yùn)用。實(shí)踐的方法有很多,基本離不開三件事:模仿、記憶、創(chuàng)新。這不是很特別的方法,但一定是有效的。仔細(xì)探究下去,會發(fā)現(xiàn)語言的學(xué)習(xí)不外乎以下這些步驟和過程。從最開始的拙劣的模仿,經(jīng)過一段時(shí)間的練習(xí),會形成有效的記憶,運(yùn)用基本的語句會更加熟練,但是還會有很多部分不甚理解。再經(jīng)過更長時(shí)間的重復(fù)練習(xí),可以嘗試改寫甚至創(chuàng)建全新的程序,完全自主地運(yùn)用自己的思想,從而達(dá)到新的階段。每一步都需要扎實(shí)的實(shí)踐,這是無法跳過的必然路徑。
(四)懂得程序之美
程序設(shè)計(jì)不是冰冷的字符集合,可以是有溫度的美的呈現(xiàn)。如果學(xué)習(xí)者在一開始就選擇優(yōu)美的程序進(jìn)行模仿學(xué)習(xí),將更容易獲得鑒賞美的能力,之后在不斷的實(shí)踐中,發(fā)現(xiàn)更多的美,再進(jìn)一步創(chuàng)建新的美。
三、程序設(shè)計(jì)課程教學(xué)現(xiàn)狀分析
(一)弱化硬件基礎(chǔ)教學(xué)
開設(shè)程序設(shè)計(jì)課程的專業(yè),并未設(shè)置計(jì)算機(jī)硬件基礎(chǔ)的先導(dǎo)課程或?qū)嵺`環(huán)節(jié),學(xué)生缺乏對計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的基本了解。這樣的現(xiàn)象并非罕見,在編程熱的當(dāng)下,計(jì)算機(jī)硬件并未受到應(yīng)有的重視。而對計(jì)算機(jī)有基本了解的人們應(yīng)該意識到,軟件與硬件是缺一不可的,在學(xué)習(xí)時(shí)也是如此。不了解計(jì)算機(jī)硬件的原理,就無法從更深層次上理解程序的作用,將直接影響學(xué)習(xí)者能夠?qū)W習(xí)到的知識的深度。
(二)忽略課程意義的闡述
為了提高課程教學(xué)的效率,精簡課程內(nèi)容,達(dá)到速成的目標(biāo),有部分程序設(shè)計(jì)課程“直奔主題”,讓學(xué)生直接上機(jī)實(shí)踐,認(rèn)為在實(shí)踐中獲得經(jīng)驗(yàn)才是有益的。實(shí)際上,缺少對課程意義的理解,學(xué)生即使“熟練”地寫出了代碼片段,也不能表明其具有更高水平的設(shè)計(jì)思維。缺乏必要的導(dǎo)語,忽略為學(xué)生闡明課程的意義,將無法讓學(xué)生清晰地了解課程的知識會對其產(chǎn)生的影響,從而影響學(xué)生主動地接受學(xué)習(xí)相關(guān)知識。
(三)缺乏有效的練習(xí)
程序設(shè)計(jì)課程的練習(xí)題目是需要科學(xué)設(shè)計(jì)的,而不是簡單的量的堆積。目前的相關(guān)教材很大部分仍沿用傳統(tǒng)的習(xí)題內(nèi)容,無視不同程序設(shè)計(jì)語言之間的差異,忽略不同編程思想的適用場景,沒有科學(xué)的循序漸進(jìn)和統(tǒng)一的業(yè)務(wù)邏輯設(shè)計(jì)。這是由于沒有將習(xí)題的設(shè)計(jì)看作教學(xué)的重要環(huán)節(jié)。這樣的練習(xí),無法形成有效的實(shí)踐。有的教師試圖使用題量來征服學(xué)生,認(rèn)為量變產(chǎn)生質(zhì)變,然而僅僅是量的堆積,缺乏針對性的指導(dǎo),刷題的結(jié)果也只是事倍功半。
(四)輕視編程中的美育
程序設(shè)計(jì)課程普遍在工科專業(yè)中開設(shè),因此有人認(rèn)為程序設(shè)計(jì)以解決問題的效率為最高追求。在課程教學(xué)中,更多側(cè)重于問題的解決之道,很少提及程序設(shè)計(jì)過程中還有美的存在。這樣的課程設(shè)計(jì)往往不講求程序示例的優(yōu)劣選擇,只將經(jīng)驗(yàn)擺出,或是借鑒其他教材中的范例,不做選揀,只要解決問題即可,沒有考慮代碼的可讀性,也不在意代碼的規(guī)范性,更不理會思想的多樣性。這樣的程序設(shè)計(jì)教學(xué)盡管看上去完成了任務(wù),卻為學(xué)生的進(jìn)階之路制造了諸多障礙。學(xué)生一旦習(xí)慣于散漫的編寫方式,忽略代碼的規(guī)范性和可讀性,在工作中將難以適應(yīng)嚴(yán)格的開發(fā)標(biāo)準(zhǔn),而再糾正的成本會成倍增加。
四、程序設(shè)計(jì)課程教學(xué)改革思路
(一)開設(shè)計(jì)算機(jī)硬件實(shí)踐課程
在計(jì)算機(jī)應(yīng)用基礎(chǔ)類課程中應(yīng)增加計(jì)算機(jī)硬件知識教學(xué)內(nèi)容的占比,或者在條件允許的情況下開展計(jì)算機(jī)硬件實(shí)踐周活動。目的是讓學(xué)生充分了解計(jì)算機(jī)硬件的基礎(chǔ)知識及工作原理,借助實(shí)驗(yàn)板讓學(xué)生動手操作機(jī)器指令的輸入,并觀察和分析程序運(yùn)行的過程。學(xué)生在實(shí)踐的過程中,通過對實(shí)驗(yàn)的操作與分析,能夠更好地吸收抽象的教學(xué)內(nèi)容,并且深入地理解軟件與硬件協(xié)調(diào)一致的機(jī)理,這對其后續(xù)的程序設(shè)計(jì)課程的學(xué)習(xí)能夠產(chǎn)生積極影響。
(二)提高教師的理論水平
程序設(shè)計(jì)課程的教師不僅需要具有過硬的操作能力,也需要具有較高的理論水平。因?yàn)榻處熑粝雽W(xué)生闡明程序設(shè)計(jì)的內(nèi)涵,并非僅僅會寫程序就可以了,還需要在大量實(shí)踐的基礎(chǔ)上凝結(jié)更多的思考,對程序設(shè)計(jì)有著合理且獨(dú)特的見解。這也要求教師不能剛看完幾本編程書籍、編寫了若干程序片段就匆匆上崗,應(yīng)當(dāng)以謙卑的精神,不斷地學(xué)習(xí),持續(xù)地思考,不輟地實(shí)踐,方能給予學(xué)生更優(yōu)質(zhì)的引領(lǐng)。
(三)科學(xué)編選練習(xí)題目
教師對于因循守舊的練習(xí)題目要果斷拒絕,要充分了解不同編程語言的特性,循序漸進(jìn)地編選習(xí)題,要提供不同層次的題目以滿足不同層次學(xué)生的需求。習(xí)題還應(yīng)保持?jǐn)U展性,這與軟件開發(fā)根據(jù)需求不斷地優(yōu)化設(shè)計(jì)、擴(kuò)展新的用途的實(shí)際相符。教師不應(yīng)出于簡化工作的考慮設(shè)置標(biāo)準(zhǔn)的解答,要鼓勵(lì)學(xué)生創(chuàng)新思想和分享,發(fā)現(xiàn)更巧妙的思路,這也是學(xué)生學(xué)習(xí)如何形成自己的最佳實(shí)踐的有效途徑。
(四)注入美的教育
美的教育不應(yīng)只局限在文學(xué)、藝術(shù)類課程中,任何一門學(xué)科都有各自的獨(dú)特之處和精致點(diǎn),這便是美的源泉。
在進(jìn)行程序設(shè)計(jì)過程中,代碼也可以是優(yōu)雅的。教師首先應(yīng)當(dāng)了解優(yōu)秀的代碼的樣子,然后才能為學(xué)生提供美的范例。學(xué)生通過比較可以直觀地了解優(yōu)秀的代碼美在何處,其美在于形式,更在于思想,是內(nèi)與外的和諧統(tǒng)一。每一段代碼的編寫都應(yīng)踐行對美的追求,不是空談,而是扎實(shí)的實(shí)踐。學(xué)生在課程中獲得的審美能力,將幫助他們在生活中發(fā)現(xiàn)更多的美。
程序設(shè)計(jì)課程的教學(xué)不是新的課題,卻仍是需要關(guān)注的。因?yàn)橹v求效率,人們傾向于刪繁就簡,卻丟掉了最寶貴的思想內(nèi)涵。而把一門課程當(dāng)作一門藝術(shù)去追求,或許可以打開新思路。
參考文獻(xiàn):
[1]柯琦,胡小春,李國祥,等.Python程序設(shè)計(jì)教學(xué)改革探討[J].科技視界,2021(27).
[2]陳貞.新工科背景下“Python程序設(shè)計(jì)”課程教學(xué)改革探討[J].西部素質(zhì)教育,2022(3).
[3]黃志成.以提高編程技能為核心的程序設(shè)計(jì)教學(xué)改革研究[J].辦公自動化,2021(23).
[4]王芳,張睿,司玉杰.以提升程序分析與設(shè)計(jì)能力為導(dǎo)向的C語言程序設(shè)計(jì)教學(xué)改革研究[J].計(jì)算機(jī)教育,2020(9).
[5]謝凱,李靚,馮文祥.項(xiàng)目驅(qū)動模式下的面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)改革研究[J].電腦知識與技術(shù),2019(15).
(作者單位:天津輕工職業(yè)技術(shù)學(xué)院)