LMS行政E化暨班級社群教職員工數位歷程檔線上手冊登入
知識---淺談文字式與圖形化程式開發介面
by smf12312, 2011-09-17 21:21:35, 人氣(942)

淺談文字式與圖形化程式開發介面(上篇) 以Google App Inventor為例

文字式與圖形化程式開發介面,兩者之爭可以回溯到80年代微軟與蘋果在自家作業系統上的大戰,微軟 的MS-DOS要求操作員熟記各種程式指令(dir *.jpg /w 或是COPY A: datalog.txt C:等等),而使用者也以此自豪。蘋果的麥金塔系統則是標榜簡單的「拖、拉、放」。到了現在,一般使用者已 經很難看到純文字式的程式開發環境。

現在所謂的「程式設計」與十年前相比,已有本質上的巨大差異。舉例來說,當我們需要計算正弦函數時,只需要 呼叫對應的函式(例如sin(x))就好,裡頭的演算法長什麼樣子,不是我們關注的重點;抑或是說,我們信任這個程式環境所提供的演算法是100%正確 的,雖然被別人牽著鼻子走,但好像也只能這樣。

就拿去年10月剛推出的Google App Inventor來 說吧,這是Google針對有興趣踏入Android程式開發這個領域,但苦於無Java程式設計基礎的使用者所推出的圖形化程式開發環境。使用者只要決 定程式要有那些元件後,再進一步決定元件之間的關係就可以了。雖然這些可愛的方塊底下還是複雜的Java程式碼,但是看起來的確有親和力多了。

請看下圖的App Inventor基本元件說明:

  1. ㄈ字型的綠色方塊是Java中的事件(當某狀況發生,執行對應動作),下圖中為Button元件的onClick事件。
  2. 藍色方塊為對某元件進行設定,下圖中為「將TextBoxAzimuth元件的文字(Text)設定為…」。實際設定值由右方插槽所決定。
  3. 淺紫色方塊為取得某元件的特定屬性參數,下圖中為TextBoxAzimuth元件的高度(Height)值。

 

 

 

圖1-a  when Button.Click事件指令

 

 

圖1-b  set TextBox.Text指令

 

圖1-c  取得TextBox.Height參數指令

 

各元件之間都有像拼圖一樣的凹凸插槽,所以只要把以上三個元件彼此組合起來(要組錯也不太容易就是了),下圖中的動作代表「ButtonOK這個元件被按下時,將TextBoxAzimuth元件的高度值顯示在TextBoxAzimuth元件的文字欄位中」。

圖2  將各指令組合起來

 

讓我們比較一下上圖的程式如果用Java的話要怎麼寫:

ButtonOK.setOnClickListener (new Button.OnClickListener(){

public void onClick(View v)

TextBoxAzimuth.setText(TextBoxAzimuth.Height());

}

});

 

嗯…相當複雜,這還不包括相關元件的初始設定呢!來個實戰範例吧,如果我想要擷取手機上姿態感測器(Orientation Sensor)的值,Google App Inventor就只要像下圖一樣輕輕鬆鬆地將對應的方塊拉在一起就可以了。

圖3  姿態感測器程式 – 畫面設計

圖4 姿態感測器程式 – 程式設計

 

解釋一下上圖中到底是怎麼回事,手機螢幕上僅使用三 個TextBox(在Android中稱為TextView),當Orientation Sensor的值改變時,會即時更新各個TextBox的值,Pitch代表X軸向旋轉,Roll代表Y軸向旋轉,Azimuth則代表Z軸向旋轉(圖 5)。換句話說就是執行程式後,於任何一個方向搖動或旋轉手機都會看到值的即時變化(圖6)。由此我們可以清楚了解Google App Inventor這樣的圖形化開發介面最大的好處就是使用現成的程式模組,以非常直覺的方式就能快速的開發所需要的應用程式,除錯的機會也相對下降許多。 本程式如用Java寫的話,總行數不會少於100行。下一篇筆者將接續以LabVIEW來討論圖形化程式開發介面之高階應用。

圖5  手機軸向示意圖

圖6  程式執行畫面

本範例原始碼載點:http://dl.dropbox.com/u/11288673/OrientationTest.zip

 

後話:

熟悉Android/Java開發的朋友們請擦乾眼淚,要做到像Google App Inventor這樣高的便利性勢必要犧牲點東西。同樣功能比較之下,使用Google App Inventor所完成之Android手機應用程式有以下缺點:

  1. 檔案過大且無法移到SD卡(所以有連線但不下載的選項,以免吃光手機記憶體)。
  2. 執行效率較差,硬體規格較差的手機尤其如此。
  3. 部分功能並非完整支援,例如多點觸控與Intent。

即便如此,Google App Inventor還是大幅降低了手機開發的進入門檻,對於學校等教學單位來說是非常方便的教學環境,可讓非資訊相關科系學生也能利用手機完成各種專題應 用。換言之,如果要商用開發或是注重執行效能的專案時,還是乖乖打開Eclipse來寫Java吧。

相關連結: