鄭歡++陳勇
摘要:視覺化程序設(shè)計軟件,有助于提升學(xué)習(xí)者的學(xué)習(xí)興趣,降低學(xué)習(xí)者的學(xué)習(xí)困難。為此,信息技術(shù)與教育領(lǐng)域的研究者開發(fā)了許多程序設(shè)計軟件,如Alice、Scratch、Lego Mindstorms、RAPTOR、Game Maker、Baltie、Jeroo等等,它們具有可視化和敘事性等功能,受到了社會的廣泛關(guān)注。
關(guān)鍵詞:程序設(shè)計軟件;可視化;敘事性;功能
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)17-0089-04
Application and Development of Visual Programming Software
ZHENG Huan, CHEN Yong
(School of education, Shanghai Normal University, Shanghai 200234, China)
Abstract: Visual programming software can help learner improve interest in learning and reduce the difficulty of learning. Researchers in the field of information technology and education have developed a lot of programming software, such as Alice, Scratch, Lego Mindstorms, RAPTOR, Game Maker, Baltie, Jeroo etc, they have some functions of visualization and narrativity. And these visual programming software received a wide attention of the society.
Key words: programming software; visualization; narrativity; function
1 程序設(shè)計的發(fā)展歷史
19世紀(jì)的50年代到60年代初,程序設(shè)計為手工藝式的,從而高德納把程序稱為藝術(shù)品。在19世紀(jì)60年代末到70年代初,隨著程序發(fā)展規(guī)模的不斷擴(kuò)大,出現(xiàn)了軟件危機(jī)。一方面需要大量的程序軟件系統(tǒng);但另一方面,程序軟件的設(shè)計周期長,可靠性差。一直以來,程序設(shè)計的核心是:編寫出的程序結(jié)構(gòu)清晰,程序語言簡單、易閱讀、方便修改的程序設(shè)計軟件。然而,在當(dāng)時的程序設(shè)計模型中,也面臨著錯誤隨著代碼的擴(kuò)大而級數(shù)般的擴(kuò)大的困難,甚至到了無法控制的地步。這個時候就出現(xiàn)了一種新的程序設(shè)計模型——面向?qū)ο蟪绦蛟O(shè)計,由此也產(chǎn)生了一批支持此技術(shù)的程序設(shè)計語言,比如C++或Java?,F(xiàn)如今,程序設(shè)計軟件又發(fā)生了許多變化,呈現(xiàn)出了以可視化與敘事為顯著特征的發(fā)展趨勢,受到了程序設(shè)計軟件學(xué)習(xí)者的廣泛關(guān)注。
2 程序設(shè)計軟件的發(fā)展及其特征
由于像C++或Java類似的程序語言設(shè)計類軟件所反映的教學(xué)內(nèi)容過于抽象、概念復(fù)雜、語言編寫規(guī)則繁多、編程容易出錯等原因,導(dǎo)致了現(xiàn)在的學(xué)習(xí)者對程序設(shè)計的學(xué)習(xí)興趣越來越低。在過去的十幾年里,信息科學(xué)教育研究者發(fā)展了很多視覺化的程序設(shè)計軟件,為學(xué)習(xí)者提供富有樂趣的程序設(shè)計環(huán)境,如:Alice、Scratch、Lego Mindstorms、RAPTOR、Game Maker、Baltie、Jeroo等,可以幫助學(xué)習(xí)者充滿興趣地學(xué)習(xí)程序設(shè)計。為學(xué)習(xí)者降低了學(xué)習(xí)程序設(shè)計的難度,讓學(xué)習(xí)者在學(xué)習(xí)程序設(shè)計時能夠獲得學(xué)習(xí)興趣,這也是現(xiàn)今可視化程序設(shè)計軟件成功的關(guān)鍵所在。
隨著社會的發(fā)展,視覺化程序設(shè)計軟件已經(jīng)在信息科學(xué)教育界中受到極大的關(guān)注。因為相比于以前程序語言編寫抽象、復(fù)雜的教學(xué)軟件,這些視覺化的程序設(shè)計軟件具有以下的共同特征:
1)具有敘事和可視化功能的特征。能夠吸引初學(xué)者的興趣,便于進(jìn)行教學(xué)活動;學(xué)習(xí)者在學(xué)習(xí)過程中可以收獲很大的樂趣和信心,對學(xué)習(xí)者產(chǎn)生事半功倍的學(xué)習(xí)效果。
2)簡單、易操作。它們并不過多地要求使用者需要過多的程序設(shè)計技能和知識,只需要使用者的想象力,并且通過點擊和拖拽鼠標(biāo)就基本上可以完成程序設(shè)計。
3)重在培養(yǎng)初學(xué)者的邏輯性思維。這些程序設(shè)計軟件有助于提高學(xué)習(xí)者讀對程序設(shè)計的認(rèn)識,并培養(yǎng)初學(xué)者程序設(shè)計的邏輯性思維。
4)適用于初學(xué)者。這些視覺化程序設(shè)計軟件最大的特征就是降低了初學(xué)者以前學(xué)習(xí)程序語言設(shè)計的難度,避免了對復(fù)雜的程序設(shè)計語言的編寫。因為這些軟件能把一些抽象概念形象地展現(xiàn)出來,為進(jìn)一步學(xué)習(xí)難度較大的C++、Java打下良好基礎(chǔ)。
3 視覺化程序設(shè)計軟件的分類
雖然,現(xiàn)如今開發(fā)的程序設(shè)計軟件都基本具有視覺化特征,但在某些功能上還是存在著差異。鑒于此,對程序設(shè)計軟件進(jìn)行了簡單分類:
1)敘事功能的程序設(shè)計軟件(narrative tools):讓初學(xué)者通過程序設(shè)計語言編寫一個故事情節(jié),如:Alice,Scratch和Jeroo。
2)特定輸出實現(xiàn)的程序設(shè)計軟件(specialized output realizations):用非文本的方式提供程序操作的回饋,譬如多媒體等方式,如:Lego Mindstorms,JES。
3)流程功能的程序設(shè)計軟件(flow-model tools):通過程序語言組件的連結(jié),用以呈現(xiàn)計算的程序,如:RAPTOR,Iconic Programmer,VisualLogic。
4)分層語言的程序設(shè)計軟件(tiered language tools):讓初學(xué)者在進(jìn)一步學(xué)習(xí)中,可以逐漸使用更復(fù)雜的版本,如:Baltie,ProfessorJ,RoboLab。
4 常用視覺化程序設(shè)計軟件介紹
依照應(yīng)用的常用性,針對目前適于教育領(lǐng)域中常用的程序設(shè)計軟件進(jìn)行簡單的介紹。
4.1 Alice
Alice(http://www.alice.org)是由美國卡耐基·梅?。–arnegie Mellon)大學(xué)開發(fā)的以學(xué)習(xí)者為中心的程序設(shè)計軟件,也被稱為3D交互式圖形編程環(huán)境(3-D Interactive Graphics Programming Environment),其作用是讓學(xué)習(xí)者在設(shè)計3D動畫的同時學(xué)習(xí)事物轉(zhuǎn)向的程序設(shè)計概念,適合初學(xué)者使用。Alice提出了這種支持面向?qū)ο蟪绦蛟O(shè)計的三維虛擬世界動畫教學(xué)軟件,具有敘事和可視化的功能??突っ仿〈髮W(xué)開發(fā)Alice的主要目標(biāo)是:用以幫助更多的青少年學(xué)會如何在3D的環(huán)境下編寫計算機(jī)程序,并希望在學(xué)習(xí)Alice這一軟件的基礎(chǔ)上,青少年能夠?qū)W習(xí)更為復(fù)雜的Java和C++編程。
Alice最顯著的特點就是支持圖形化程序設(shè)計,并能夠生成三維虛擬世界中的對象,然后可以將場景的設(shè)計同程序設(shè)計結(jié)合起來。Alice根據(jù)功能劃分為5個區(qū)域(如圖1所示):1)對象樹。在這一區(qū)域中顯示的是場景中出現(xiàn)的對象。2)World 窗口。把對象添加到這一窗口,可以進(jìn)行場景設(shè)計。3)事件區(qū)。這一區(qū)域是對事件的響應(yīng)而進(jìn)行的編程。4)函數(shù)方法細(xì)節(jié)區(qū)。這一區(qū)域顯示的是每個對象的屬性、方法和函數(shù)。5)代碼編輯區(qū)。通過把對象的屬性、方法、函數(shù)拖拉到這一區(qū)域,然后根據(jù)提示,并自動生成相應(yīng)的代碼。Alice提供互動、立體的模擬環(huán)境,所有的物體都具有前后、左右和上下六個方向,并提供程序語法的標(biāo)簽,學(xué)習(xí)者不需要輸入程序碼,只要利用鼠標(biāo)拖拽的方式將成式語法標(biāo)簽放到界面右下的程序編輯區(qū)即可完成程序設(shè)計編輯。
Alice系統(tǒng)為學(xué)習(xí)者提供了一種全新的方式去學(xué)習(xí)程序編程。尤其是對初學(xué)者而言,避免了對復(fù)雜的程序設(shè)計語言的編寫。因為在Alice程序設(shè)計中,一些抽象概念可以形象地展現(xiàn)出來,所以初學(xué)者在學(xué)習(xí)Alice的過程中,就能更加直觀地理解和學(xué)會類、對象、方法及事件驅(qū)動等概念,并為進(jìn)一步學(xué)習(xí)C++和Java程序設(shè)計語言打下良好的基礎(chǔ)。在美國,現(xiàn)今有300多所高等院校將Alice納入了初學(xué)編程的課程中。有的小學(xué)把Alice編程課程放在小學(xué)高年級(5、6年級)的Science課中,從小培養(yǎng)孩子學(xué)習(xí)編程的興趣與能力;不僅如此,在美國政府部門的大力支持下,很多中學(xué)和大學(xué)中,也將Alice編程課程作為選修課,面向?qū)幊逃信d趣的學(xué)生開設(shè)。像Intel、Oracle、Google等公司也設(shè)立了各種獎項,以此鼓勵中、小學(xué)生開展具有創(chuàng)意的Alice編程。
4.2 Scratch
Scratch(http://scratch.mit.edu/)是由麻省理工大學(xué)(Massachusetts Institute of Technology, MIT)的媒體實驗室終身幼兒園組(Media Lab Lifelong Kindergarten Group)開發(fā)的一套可視性程序語言的開發(fā)平臺,旨在讓程序設(shè)計語言初學(xué)者不需先學(xué)習(xí)語言語法便能設(shè)計創(chuàng)作產(chǎn)品。作為可視性程序語言,初學(xué)者不用擔(dān)心語言文法,可以透過探索、實驗去學(xué)習(xí)創(chuàng)造交互式故事、動畫等技術(shù)。Scratch包含視覺化和敘事的兩種特征,學(xué)習(xí)者可以用來創(chuàng)作互動式故事、動畫、游戲、音樂和藝術(shù),并在網(wǎng)絡(luò)上分享自己設(shè)計的每個作品。
Scratch的界面主要分為四大板塊(如圖2所示):舞臺、角色列表、程序指令區(qū)和程序編輯區(qū)。Scratch的主要特色在于它適用于初學(xué)者學(xué)習(xí)程序設(shè)計,學(xué)習(xí)者只需利用鼠標(biāo)點擊和拖拽的方式進(jìn)行程序設(shè)計,完成可視化編程。不需要牢記任何指令碼或編寫復(fù)雜的程序碼,解除了學(xué)習(xí)者在程序語言輸入方面的困難,有助于提高學(xué)習(xí)者讀對程序設(shè)計的認(rèn)識,并培養(yǎng)學(xué)習(xí)者的邏輯思維。因為Scratch是一款面向少年兒童的程序設(shè)計軟件,其創(chuàng)作的程序簡單、易操作,而且界面的卡通形式也能夠吸引兒童的興趣,運(yùn)用Scratch創(chuàng)作的作品進(jìn)行教學(xué)活動,在兒童認(rèn)知發(fā)展初期有著事半功倍的效果。
4.3 Lego Mindstorma
目前的研究表明,使用機(jī)器人可以幫助程序設(shè)計學(xué)習(xí)者更易理解計算機(jī)類課程中抽象的基本概念。1986年,丹麥的LEGO(樂高)公司和美國麻省理工學(xué)院的媒體實驗室(Media Lab)進(jìn)行的一項“可程式積木(Programmable Brick)”的合作案。1996年LEGO公司發(fā)布了Mindstorms機(jī)器人開發(fā)和編程工具包。而Lego Mindstorms(http://www.lego.com/zh-cn/Mindstorms/support)則是集合了電動馬達(dá)、傳感器、可編程主機(jī)、Lego Technic部分(輪軸、插銷、橫梁、齒輪)的統(tǒng)稱。
Mindstorms是由益智玩具中可編程的傳感器模具(programmable sensor blocks)的發(fā)展而來。樂高機(jī)器人套件(LEGO Mindstorma Robotics Invention System)是面向?qū)C(jī)器人有興趣的大人和12歲以上的小孩而設(shè)計的一個教育玩具。Lego Mindstorms的第一個零售版本Robotics Invention System(RIS)于1998年上市。目前的最新版本是2013年上市的Lego Mindstorms EV3。在免費(fèi)的EV3編程軟件中,擁有25個好玩的任務(wù),EV3軟件是給機(jī)器人編程,賦予機(jī)器人生命的關(guān)鍵,使用者只需編寫一個程序,就可以讓機(jī)器人按照指定的路徑前進(jìn),讓機(jī)器人服從使用者的命令。
Lego Mindstorma是一套可以對其進(jìn)行編程的機(jī)器人拼裝套裝(如圖3所示),它能賦予使用者創(chuàng)建和指揮專屬于自己的樂高機(jī)器人的非凡能力。目前的最新版本Lego Mindstorms EV3套裝中包含了使用者需要的一切,根據(jù)不同的編程設(shè)置,其控制的機(jī)器人可以移動、行走、說話。總而言之,使用者可以利用直觀的編程軟件(例如:智能 EV3第三代機(jī)器人程序塊或智能設(shè)備)來自由地指揮機(jī)器人。
Mindstorms平臺最初由于LEGO機(jī)器人缺乏與高等教育相符的程序設(shè)計環(huán)境,也缺乏對大學(xué)水平的程序設(shè)計語言(如:C++和Java)的支持,所以并不適用于高等教育。十幾年以后,隨著Mindstorms使用群體的日益擴(kuò)大, Mindstorms平臺為C++和Java開發(fā)了有效的程序設(shè)計環(huán)境,從而讓更多的高校開始選用低價的LEGO機(jī)器人作為其教學(xué)的平臺。
1)麻省理工學(xué)院(Massachusetts Institute of Technology)的電子技術(shù)和計算機(jī)科學(xué)系專門開設(shè)了自主機(jī)器人設(shè)計課程。學(xué)生可以在這門課程中,運(yùn)用之前學(xué)到的編程知識,通過搭建物理模型,進(jìn)行編程并自由地控制機(jī)器人的活動。最后再以比賽的形式完成實驗,查看學(xué)習(xí)效果。
2)卡耐基·梅隆(Carnegie Mellon)大學(xué)作為第三方利用自身資源,開發(fā)了Robot C程序設(shè)計環(huán)境,如今Robot C已成為LEGO機(jī)器人最流行的程序設(shè)計語言之一。
3)加利福尼亞州立大學(xué)(California State University)在相應(yīng)的課程中,使用物理模型來促進(jìn)學(xué)生對程序設(shè)計結(jié)構(gòu)的理解,使用LEGO機(jī)器人作為了他們的教學(xué)實驗平臺。
到2006年,在LEGO公司發(fā)布Mindstorms NXT機(jī)器人套裝時,機(jī)器人在計算機(jī)教育中的作用已得到了普遍認(rèn)同和歡迎。
4.4 RAPTOR
RAPTOR(http://raptor.martincarlisle.com/)是一種流程軟件形態(tài)的程序設(shè)計軟件(如圖4所示)。RAPTOR是一種基于流程圖的可視化程序設(shè)計軟件,并提供發(fā)展算法的一種可視化環(huán)境,從而讓學(xué)習(xí)者在可視化程序設(shè)計的環(huán)境中進(jìn)行算法的撰寫,并為程序和算法設(shè)計的基礎(chǔ)課程的教學(xué)提供了一種實驗環(huán)境。學(xué)習(xí)者通過鼠標(biāo)拖拉左側(cè)的流程圖符號至右側(cè)流程圖編輯區(qū),可以隨時增減流程圖符號或改變流程圖符號的位置,使其在撰寫的過程中不斷地進(jìn)行思考、安排和控制。
RAPTOR作為一種可視化程序設(shè)計的軟件,已經(jīng)為以卡內(nèi)基·梅隆大學(xué)等為代表的世界上20個以上的國家的高等院校使用,在計算機(jī)基礎(chǔ)課程教學(xué)中,也取得令人滿意的效果。在RAPTOR的可視化操作環(huán)境中,使用者無須單獨編譯和執(zhí)行,只需在其環(huán)境中執(zhí)行相應(yīng)的算法流程,所以使用RAPTOR來解決問題,就可以讓原本抽象的概念變得越加清晰。這說明程序運(yùn)作的邏輯順序不必再利用傳統(tǒng)程序設(shè)計的文字環(huán)境來進(jìn)行設(shè)計和調(diào)試,可以直接在RAPTOR可視化的表達(dá)環(huán)境中進(jìn)行,這也能夠極大減輕使用多種軟件時帶來的學(xué)習(xí)負(fù)擔(dān)。對初學(xué)者而言,RAPTOR并沒有強(qiáng)制要求自上而下的分解程序設(shè)計目標(biāo),而是讓學(xué)習(xí)者嘗試著逐步去開發(fā)代碼,利用交互的圖形庫,創(chuàng)造出更有趣的算法。
4.5 Game Maker
Game Maker(http://www.yoyogames.com/)是由Mark Overmars使用Delphi語言開發(fā)的視覺化程序設(shè)計軟件(如圖5所示)。Game Maker是一款可靈活編程、擁有圖形界面、以2D游戲設(shè)計為主的游戲開發(fā)軟件。Game Maker允許學(xué)習(xí)者使用圖形、按鈕和文本創(chuàng)作游戲,而無需學(xué)習(xí)復(fù)雜的諸如C++或Java編程語言,并可以在游戲設(shè)計過程中,附帶上精美的背景、動畫、音樂和聲音效果。學(xué)習(xí)者只需要拖拽圖形、輸入文字、點擊很少的幾個按鈕,選擇一些控制選項,游戲很快就可以編寫成功。憑借這些優(yōu)點,Game Maker極大地促進(jìn)了歐美乃至全世界獨立游戲界的發(fā)展。
Game Maker是個專為設(shè)計游戲而制作的軟件,不同于其他程序設(shè)計軟件的是它將復(fù)雜的游戲功能融于簡單的操作方式,適合提供給程序設(shè)計的初學(xué)者使用。因為Game Maker主要是為 2D 游戲而設(shè)計的程序軟件,它提供貼圖、移動、游戲規(guī)則以及其他多種功能,所以初學(xué)者只需通過拖拽Game Maker界面上的選項,就可以讓初學(xué)者輕松設(shè)計和制作一個中型以下簡單游戲。通過Game Maker提供的有趣環(huán)境和設(shè)計過程,讓學(xué)習(xí)者從中學(xué)會游戲設(shè)計的概念、技巧和流程;學(xué)會物體、事件等程序設(shè)計概念。當(dāng)學(xué)習(xí)者對程序設(shè)計的概念越來越熟悉之后,學(xué)習(xí)者就可以使用越來越多的程序設(shè)計語言,從而可以創(chuàng)作更高水平的游戲。
4.6 Baltie
Baltie4C# Pro(http://www.sgpsys.com/en/)是一款視覺化和分層語言式的程序設(shè)計軟件(如圖6所示)。學(xué)習(xí)者使用鼠標(biāo)點選上方軟件列表中的符號選項進(jìn)行程序設(shè)計,適合程序設(shè)計的初學(xué)者使用。初學(xué)者可以使用Baltie的互動模式和圖形區(qū)域進(jìn)行程序設(shè)計;較高水平的程序設(shè)計學(xué)習(xí)者則還可以結(jié)合語法命令和圖像區(qū)域的C#語言進(jìn)行程序設(shè)計。學(xué)習(xí)者通過使用Baltie軟件,可以學(xué)會邏輯、條件和事件等程序設(shè)計概念。
Baltie是面向圖形的可視化編程軟件。相比于Balties會幫助使用者很快意識到什么是計算機(jī)、如何掌握和計算機(jī)程序而言,使用Baltie可以更加鍛煉使用者的邏輯思維,它并不要求使用者需要過多的程序設(shè)計技能和知識,只需要使用者的想象力。
4.7 Jeroo
Jeroo(http://www.jeroo.org/)也是一款具有敘事功能的程序設(shè)計軟件。Jeroo適合初學(xué)者使用,學(xué)習(xí)者可以選擇Java、C++和Python等任何一種程序設(shè)計語言應(yīng)用于Jeroo中,讓學(xué)習(xí)者根據(jù)自己的實際情況學(xué)習(xí)事物轉(zhuǎn)向的程序設(shè)計概念。Jeroo的左側(cè)提供編輯來源碼的區(qū)域;它的右側(cè)則呈現(xiàn)程序編輯的結(jié)果;它的下方則顯示目前程序設(shè)計的狀態(tài)信息(如圖7所示)。根據(jù)信息科學(xué)領(lǐng)域中的研究者的研究結(jié)果顯示,Jeroo能夠顯著提高學(xué)習(xí)者在學(xué)習(xí)程序設(shè)計的興趣與自信心;使用過Jeroo的學(xué)習(xí)者幾乎都指出:Jeroo是一套值得他們?nèi)ネ扑]別人學(xué)習(xí)的程序設(shè)計軟件,并且適合作為學(xué)習(xí)Java程序設(shè)計語言之前的學(xué)習(xí)軟件。
5 結(jié)束語
程序設(shè)計軟件越是簡單易學(xué)、易操作、可視化和智能化,越是能獲得初學(xué)者的喜愛。因為對于非計算機(jī)專業(yè)的使用者而言,他們只需要有一定的計算機(jī)操作認(rèn)知基礎(chǔ),只需要花較少的時間和精力就可以掌握程序設(shè)計的基本知識,最好不需要用復(fù)雜的語言編程就可以實現(xiàn)大部分交互作用,減少他們學(xué)習(xí)程序設(shè)計軟件的認(rèn)知負(fù)荷。面向?qū)ο蟮目梢暬绦蛟O(shè)計軟件在現(xiàn)代程序設(shè)計思想中占有很重要的地位,未來程序設(shè)計軟件將會以一種可視化,更易表達(dá)現(xiàn)實世界,更易為人編寫的功能得到進(jìn)一步發(fā)展,其使用將不再只是為專業(yè)的編程人員服務(wù),人們完全可以用基礎(chǔ)的程序設(shè)計知識來完成編程。
參考文獻(xiàn):
[1] 百度百科.程序設(shè)計[EB/OL].[2015-05-28].http://baike.baidu.com/link?url=y9EcZAkE9DfB7Ju7n5270UjsBNtREaxE5l6wt 9jvOSzac6q1znwEz_Vsx558dqW1WG0VGD1e-bq5T7Yu8JHkzK.
[2] 陳蕓. 利用Alice三維虛擬世界進(jìn)行程序設(shè)計入門教學(xué)[J].計算機(jī)教育,2007(9): 160.
[3] 陳勇,楊宛穎,張月. Scratch動畫軟件:功能、特點與應(yīng)用[J].電腦知識與應(yīng)用,2014(8):5519.
[4] 陳勇.信息技術(shù)基礎(chǔ)[M].上海:上海交通大學(xué)出版社,2014.
[5] 百度百科.樂高機(jī)器人[EB/OL].[2015-06-02].http://baike.baidu.com/view/1590087.htm.