自從計算機編程產生以來,算法設計就占據了重要地位。以一個著名的例子為證:大詩人拜倫的女兒愛達編制了世界上第一個完整的程序,此舉是為了實現同事的一個設想而拿程序來實驗算法的。可見,算法設計是在程序設計之前,成為了程序設計的基礎。但令人遺憾的是,計算機編程被納入教學之后,算法設計在很長的時期內卻沒有得到應有的重視。尤其是中小學編程教育的前一發(fā)展階段,是以計算機語言的語法教學為主體的,算法的概念得不到確立,甚至不少教材對它竟忽略不計。
在中小學教育中,從計算機語言向算法設計轉變,是隨著計算機教育轉向信息技術教育開始的。在2000年的《中小學信息技術課程指導綱要(試行)》中,明確提出了算法設計思想的重要性。新一輪的信息技術教材也開始以算法設計為核心內容之一,以問題解決的算法設計與編寫實現為思路實施教學。2004年,高中新課程開始實施。在高中數學新課標及新教材中,開始以10個課時左右的時間來開展完備的算法教學,算法概念、算法描述、程序實現都有所涉及。然而,在高中信息技術新課標及其新教材中,算法卻有所減弱。在必修課中,算法僅作為計算機編程解決問題的一個環(huán)節(jié)簡要涉及。在“算法與程序設計”這門選修課中,算法相對比較完備,但受選修課的影響面窄等客觀因素制約顯得分量輕了許多。值得慶幸的是,高中必修課正在倡導的基于“工作需求”的“方法與過程”的學習,倒是與生活算法很是切合。
隨著高中信息技術課程的cOA3FyG1JHsTmygqkCKRjhfKfAmEtlvi9Z/a1dZQMeE=改革,各地中、小學課程的改革也逐漸浮出水面,算法與程序也日益得到重視。尤其是在信息技術課程核心受到質疑或者仍然需要不斷探索、完善的情況下,算法在“方法”與“過程”的規(guī)律性上所表現出來的強勢,就很值得我們看重了。對于在傳統(tǒng)的計算機編程算法的概念之外的形態(tài)與作用,無論是稱生活算法,還是叫工作需求,或是其他名稱,都不是關鍵。關鍵是,我們要在利用它的時候注意它的另一個重要認知維度——人的思維方式與計算機的思維方式之區(qū)別。
我在講課時,經常舉一個關于程序紊亂的故事:管理你生活起居的機器人的程序亂了,在你沉睡時竟把你搬到了學校,然后恭恭敬敬地遞上牙刷……學生笑過之后,一起討論機器人智慧的來源和思維單調性原因的所在。無論多么智能的程序,分解到最后仍然是一種人為算法的預定,多復雜的變化都應有所準備,總體上仍然是在執(zhí)行一種“串行”結構。但是,人的思維卻并非如此,是類似“并行”的結構。所以,人能夠隨時分散思維、跳躍思考、靈感突現……試問,有多少人的周末能夠按計劃度過?即使沒有別人突然的打擾,自己的突然決定也會把自己的算法修改得面目全非。在日常生活中,我們有很多時候預見性、過程性都是復雜多變的,不少事往往也有始無終。這與現階段的計算機算法有著非常明顯的差異。我們要從(生活)算法去認知、學習、工作,還需要對算法的概念進行基于人的不同的思維方式發(fā)展與界定。所以面對機器智能時代,要關注大腦的活躍是不是會受到機器化的抑制,感性的東西是不是越來越少,遵規(guī)循律是不是越來越多。希望我們能夠重視對機器“思考”方式的革新,讓機器“思考”的方式更加人性化。以求我們思考的機器化也得到更具親和力的發(fā)展,永葆我們思維豐富的天性。
總之,在中小學信息技術課程中,我們要注重從計算機的優(yōu)勢特點來思索算法設計的發(fā)力點,要發(fā)揮計算機的處理速度快、能存儲、會判斷、自動化強等優(yōu)勢來補充、改善我們的生活與行為算法,并且以我們的思維方式不斷去影響、發(fā)展和創(chuàng)新更具智能化、人性化的算法。
蒼山點題
如果我們不反對做事需要有一定的方法,并且需要經歷一個過程才能得出結果的話,那就不會反對我們的生活的確與算法有很大的關系。我們學習的恰恰就是各種各樣的生活算法的設計方法,或者說要實踐各式各樣目的的算法歷程。這就需要一種不斷培養(yǎng)自己的能力,尤其是基于或借助現代化技術來更好地設計與實現自己的算法,并得出良好的結果,這樣的能力在現代社會生活中很重要。但正是由于技術具有多面性、局限性和發(fā)展性,需要我們的算法及其設計能力都要不斷地更新與發(fā)展。不論算法在形式上如何發(fā)展,但有一點不變,即它永遠是智慧的產物,其發(fā)展必將與智慧越來越親和。