張慧妍
摘要:高中信息技術課程的培養(yǎng)目標是提高學生的綜合信息素養(yǎng),與大學計算機科學教育相銜接。本文分析了目前高中教育階段程序設計課程在編程語言選擇和計算思維能力培養(yǎng)方面的不足,提出了一種適合高中生學習編程概念的Alice可視化編程語言,探討了使用Alice語言培養(yǎng)高中生初步計算思維能力的可行性和實踐方法。
關鍵詞:程序設計語言;銜接教育;Alice編程;編程概念;計算思維
中圖分類號:G632 文獻標識碼:A 論文編號:1674-2117(2016)22-0019-04
引言
2006年3月,美國卡耐基梅隆大學計算機科學系主任周以真教授給出了計算思維的定義。她認為,計算思維是運用計算機科學的基礎概念去求解問題、設計系統(tǒng)和理解人類的行為,包括了涵蓋計算機科學之廣度的一系列思維活動。[1]計算思維活動是和“讀、寫、算(Reading, writing and arithmetic——3R)”同等重要且適合每個人的“一種普遍的認識和普適的技能”。
目前,包括美國、英國在內的眾多國家,信息素養(yǎng)與計算思維能力培養(yǎng)已經成為中小學信息技術教育的新趨勢和重要教育內容。計算思維在我國也引起了越來越多教育教學者的關注,很多學者提出應強化對大學生及中小學生計算思維能力的培養(yǎng)。在高中階段,培養(yǎng)高中生的計算思維就是要培養(yǎng)他們“像計算機科學家”那樣去思考問題,并將這些問題滲透到信息技術的每一個角落。美國ACM計算機課程IEEE-CS2001總結了學習信息技術的四種方法,認為“編程先行(programming-first)”是一種行之有效的方法。[2]而程序設計語言是程序設計(編程)最主要的工具之一。因此,本文以程序設計語言為切入點,針對目前我國高中教育階段程序設計作為非核心課程的現(xiàn)狀,探析一種既適合高中生學習編程概念又適合高中生計算思維能力培養(yǎng)的程序設計語言。
一種適合高中生的程序設計語言
1.程序設計語言的選擇
目前,我國高中信息技術課程學習的編程語言主要是Visual Basic,而針對高中生的信息技術競賽多采用C++或Java語言。雖然這些語言都適用于學習面向對象的編程概念,但基于目前高中信息技術課的教學現(xiàn)狀以及高中生的綜合信息素養(yǎng),學生學習這兩種語言的整體興趣并不高,而且對許多編程概念只“知其然,而不知其所以然”,求解實際問題的能力也不甚理想。這種局面與程序設計語言的選擇有很大關系。首先,Visual Basic和C++/Java是目前高校學生學習的主流程序設計語言,語法學習難度較大,而且語言本身的抽象程度也并不完全符合高中生的認知能力,不適合高中與大學計算思維能力培養(yǎng)的銜接教育。其次,雖然這些語言都能夠提供可視化的編程環(huán)境,但程序代碼本身的文本編寫模式和文本輸出模式很容易讓學生認為編程是一種枯燥無味的事情,從而影響他們深入學習編程的積極性。鑒于此,本文從以下四個方面選擇程序設計語言。
(1)對象先行
從廣義上看,程序設計語言主要有命令式、面向對象、函數(shù)式、邏輯式和并發(fā)式等范型,而目前高校使用的主流程序設計語言是面向對象程序設計語言,如C++/Java。因此,為了更好地滿足高中與大學計算思維能力培養(yǎng)的銜接教育要求,筆者選擇了面向對象的程序設計語言。
(2)高度抽象
基于高中生的綜合信息素養(yǎng)和認知能力,選擇的程序設計語言應是一種比C++/Java更高抽象層次的可視化編程語言。該語言應語法簡單,操作便利,能極大減輕學生學習語法的負擔,提高學生使用程序設計語言與計算機進行交流的能力,從而激發(fā)他們學習編程的動力。
(3)學習編程概念
在滿足高度抽象的基礎上,為了初步培養(yǎng)學生的計算思維能力,這種程序設計語言應不影響學習基本的編程概念,如類、對象、封裝、方法、事件與事件處理、變量、表達式、控制語句、遞歸和并發(fā)等。
(4)培養(yǎng)計算思維
基于高中生的認知能力,能夠通過編程培養(yǎng)高中生用程序設計語言分析問題、解決問題的能力,從而逐步訓練計算思維是選擇這種程序設計語言的最終要求,即能夠充分呈現(xiàn)計算思維的思想或計算思維的核心概念。
2.Alice——面向對象的三維可視化編程語言
Alice(http://www.alice.org)是Carnegie Mellon大學免費提供的一個可以用來學習設計與編程的面向對象的可視化編程語言。用Alice學習編程就是建立自己的虛擬世界,在其中添加各種三維模型(Alice已提供大量預定義的三維模型),然后編寫程序(類似于電影劇本)指揮這些三維模型做出所需的動作,從而在虛擬的三維世界中快速地創(chuàng)建故事、游戲或類似卡通的交互式動畫程序(如上頁圖1、圖2)。Alice是一種適合高中生學習面向對象編程概念的高度抽象的可視化編程語言,能很好地滿足高中與大學學習編程的銜接教育要求。
(1)滿足對象先行
Alice語言的最新版本是完全面向對象的。在Alice創(chuàng)建的虛擬世界中,每一個三維模型(人、動物或建筑等)都是一個可見的對象。此外,Alice本身是使用Java語言編寫的,用Alice編寫的程序最終會被轉換成Java程序運行。因此,學習Alice語言可為將來進一步學習Java或C++語言奠定良好的基礎。
(2)滿足高度抽象
Alice設計了一個拖拽式的可視化用戶界面,學生可以在屏幕上拖動程序中的組件(如對象、方法、語句等),而不會出現(xiàn)語句結構或標點符號等語法錯誤。一個使用Alice的程序員更像是一個導演或一個木偶操縱者,通過鼠標拖拽屏幕上的語句和對象就能編寫一個交互式程序,且運行過程具有即時反饋性。從程序設計語言的角度來看,Alice是一種比C++/Java抽象層次更高的程序設計語言,極大地提高了學生與計算機的交流能力,因此更容易激發(fā)他們學習編程的興趣與欲望。
(3)學習編程概念的極佳選擇
學習編程實際上是學習怎樣合理地安排一系列的指令從而實現(xiàn)一個任務。Alice雖然是一種高度抽象的可視化編程語言,但并不影響學生學習和理解面向對象的基本編程概念,如類(class)、對象(object)、繼承(inheritance)、方法(method)、發(fā)送消息(sending message)、控制結構(control structure)、運算符(operator)、表達式(expression)、事件處理(event handler)等。Alice程序是由很多行描述對象動作或修改對象屬性的代碼組成,代碼可以組織在Do in order和Do together模塊中,以此來告訴Alice哪些動作是順序發(fā)生的,哪些動作是同時發(fā)生的。此外,由于Alice編程是一種基于劇情或故事的可視化程序設計方法,能把抽象的編程概念用形象的方式呈現(xiàn)給初學編程的人,因此它更符合高中生的認知能力。
使用Alice編程培養(yǎng)初步的計算思維能力
利用Alice編程熟練地掌握計算機科學的基本編程概念是高中生逐步培養(yǎng)計算思維能力的一個有效途徑。ACM前主席Denning教授系統(tǒng)地總結了計算的7類原理,即計算、通信、協(xié)調、記憶、自動化、評估和設計。每個類別都從一個獨特的視角去觀察計算本身,并且在計算領域具有“普遍性”“復現(xiàn)性”和“廣泛影響性”,它們構建起一個理解計算內涵的框架。教育部高等學校大學計算機課程教學指導委員會編制的《大學計算機基礎課程教學基本要求》從8個方面描述了計算思維(增加了“抽象”)。[3]筆者將Alice編程學習與這8個類別的計算思維表達體系建立了關聯(lián),如下頁表所示。
結論
本文針對高中生的綜合信息素養(yǎng)和認知能力,初步探析了Alice這種適合高中生學習面向對象編程概念和初步培養(yǎng)計算思維能力的三維可視化編程語言。計算思維核心概念的培養(yǎng)需要經歷長期的訓練和塑造過程,不可一蹴而就。實踐表明,通過Alice編程熟練地掌握計算機科學的基本編程概念不僅可以為高中生培養(yǎng)初步的計算思維能力提供一個有效途徑,而且也能為其未來到大學深入學習C++/Java語言奠定良好的教育基礎。