編者按:在科技發展日新月異的今天,信息技術教學已經遠離了開、關機還需要反復講解的時代,三歲孩童熟練地擺弄著iPad已非奇事。自策劃了“Scratch來了”這一專題之后,編輯深刻感受到研究程序語言的老師的可愛,他們的執著、他們的探索,使得程序教學不再那么枯燥,煥發出勃勃生機。因此,雜志特別策劃了這一專欄,將陸續刊發一些程序教學領域有代表性的教學實踐。也期待更多老師投身到程序教學中去,通過自身的踐行,推動程序教學的復興。
● 什么是MIT AppInventor
AppInventor的中文意思是“應用程序發明家”,是谷歌公司在實施谷歌實驗室(Google Lab)項目中的一部分,稱為“Google AppInventor”。Google AppInventor是谷歌公司致力于完全在線的可視化編程而打造的一項Arduino手機應用程序開發工具。當時,該項目的負責人Hal Abelson是麻省理工學院的一位計算機科學教授。2011年,受到蘋果公司的影響,谷歌公司決定廢棄大批的側枝研發項目專注于發展手機移動領域的技術和應用平臺,其中就包括Google AppInventor項目。2012年,麻省理工學院(MIT)正式接手谷歌公司的AppInventor項目,將其更名為“MIT AppInventor”,并繼續進行研發且對公眾開放使用。MIT AppInventor的官方開發網站:http://appinventor.mit.edu/,如圖1所示。
目前,MIT AppInventor第二版(簡稱:AI2)已在內測階段,并且支持應用程序在手機和平板上的開發,其內測網址為:http://ai2.appinventor.mit.edu/,第二版掃描二維碼可以下載,如圖2所示。
● MIT AppInventor的特色
1.在線開發功能
MIT AppInventor應用開發平臺的“在線開發”功能是其一大特色。該開發平臺是基于一個網站的形式架設在谷歌服務器上的;用戶只需注冊一個Google ID(即谷歌郵箱的賬戶)和可以訪問谷歌服務器的網絡就可以隨時登錄該平臺進行應用程序的開發,而用戶創建的應用程序工程都將保存在該平臺上(或谷歌服務器上)。只要有網絡,用戶就可以隨時隨地把握突然閃現的靈感,并進行設計以開發相應的應用程序。
MIT AppInventor第二版開發網站則可以直接在平板電腦,甚至是手機上開發App軟件(即應用程序),但前提是必須安裝有谷歌服務器組件,如圖3所示。
2.可視化設計界面
MIT AppInventor吸取了VisualBasic(VB)的控件式界面設計思想。在MIT AppInventor的設計界面中,用戶基本上用鼠標就可以實現程序界面的設計,與VB的設計界面十分相似,左側“Palette”為所有組件面板,包含了基本組件、媒體組件、傳感器組件、屏幕布局組件、樂高機器人組件等,而且這些組件都已經封裝好了。
圖4是MIT AppInvnetor的應用程序設計界面。中間“Viewer”為屏幕視圖,顯示安卓手機上應用程序中各組件的位置布局情況。中間“Components”為組件欄(顯示已添加的組件),顯示當前屏幕中添加的組件。右側“Properties”為組件屬性欄,可設置該組件相應的屬性。右上角“Open the Blocks Editor”為功能面板,用于定義組件的動作。
3.積木式編程界面
對許多人來說,開發軟件的使用本身并不難,困難的是掌握該軟件的編程語言。MIT AppInventor的積木式編程界面則正是針對這一現象而設計的,降低了技術門檻。即使是中學生或者小學生,只要有靈感就可以進行程序開發。
AppInvnetor的編程界面中,有三類積木面板,從左到右分別是:Built-In(標準組件)、MyBlocks(自定義組件)、Advanced(進階組件),如圖5所示。
4.在線模擬器
MIT AppInvnetor平臺還提供了在線模擬的功能。在完成編程之后,可以點擊右上角的“New emulator”按鈕啟動模擬器,再點擊“Connect to Device”按鈕將程序載入已啟動的模擬器中,用戶就可在模擬器中調試應用程序,如圖6所示。
● MIT AppInventor典型范例
MIT AppInvnetor的優點之一是通過幾個簡單的控件和相應的電子積木的搭建,就可以實現一些有趣的應用程序。以下的案例“小鋼琴家”,通過7組Button(按鈕)和7組Sound(聲音)組件就可以模擬鋼琴的7個音級,如下頁圖7、圖8所示。
在下頁的圖8中,“Screen1.Initialize”是指Screen1(屏幕1)的初始化事件,里面嵌套了foreach循環語句分別對7個Button的Height屬性和Weight屬性進行初始化設置;整個“小鋼琴家”程序的核心是分別用7個Button的Click事件分別控制7個音級聲音的播放。可以看出,作為一款類似的圖形化編程語言,其界面與Scratch類似,更加接近于Ardublock。
● MIT AppInventor的教學策略
MIT AppInventor的教學可以放在Scratch之后,VB之前。學生在Scratch的學習中,已經開始熟悉和掌握程序設計的幾種基本結構,形成編程的基本意識。而AppInventor的應用程序開發更貼近生活和實際應用,可讓學生的創造性思維在學習Scratch的編程經驗基礎之上,有更高的鍛煉和發展空間。與此同時,與VB界面設計十分相似的AppInventor開發環境,也為學生學習VB程序設計做好了鋪墊。
Google公司設計AppInventor項目的初衷,是降低應用程序開發的技術門檻,讓更多的人,甚至是小學生都可以發揮自我的創造力,體會應用程序開發的樂趣。在AppInventor教學中,學生創造性的思維更為重要,教師要善于刺激學生的創造力和想象力的發揮。
● 課程開設可能遇到的問題及解決
問題1
由于大陸沒有Google服務器,因此在開設AppInventor課程時,可能會經常性地遇到網絡的擁塞,學生甚至無法注冊Google ID,以至于課堂教學難以開展。
解決方法1:目前,已經有AppInventor應用程序開發的離線包,教師可在學校架設AppInventor服務器或者直接在學生機上假設個人服務器,便于順利地開展AppInventor教學。AppInventor離線包下載地址:http://www.appinventor.com.cn/thread-3267-1-1.html。
解決方法2:目前,國內已有十幾所學校(包括臺灣)開設了AppInventor課程,其中浙江師范大學附屬中學已經架設了國內首個AppInventor服務器,只需要簡單的注冊就可以登錄使用。浙江師范大學附屬中學AppInventor服務器地址:http://app.ourschool.cn。
問題2
AppInventor開發的應用程序,目前只支持安卓系統,對基于安卓系統的其他系統不一定支持,如小米公司開發的MIUI(米柚系統)。
解決方法:若是購買到不支持的手機或平板,可以選擇刷系統(刷機)。
問題3
目前,國內的中小學不支持學生帶手機,沒有設備如何調試應用程序。
解決方法1:條件好的學校,可以選擇合適配置的平板電腦來開展教學。
解決方法2:利用AppInventor開發平臺自帶的模擬器軟件,但該模擬器并不完善,如無法模擬感知加速度。
AppInventor項目的負責人Harold Abelson(MIT教授)曾說過:“App Inventor編寫的應用程序或許不是很完美,但它們卻是普通人都能做的,而且通常是在幾分鐘內就可完成。”然而,盡管AppInventor是一種面向所有人的“所見即所得”的開發工具,但仍然需要投入足夠的時間來學習研究才能夠更順暢地使用和教學。同時,目前國內開設AppInventor課程的學校并不多,相應的案例、資源也還很欠缺,因此對于AppInventor課程的開設還存在很多的看不見的困難與問題,仍需要教師及開發者的相互幫助、相互交流,才能使MIT AppInventor的應用程序開發更接地氣。