2019年9月23日 星期一

[Micro:bit] 從積木到語法之程式語言學習地圖:以小彼特(Micro:bit)為例

從積木到語法之程式語言學習地圖:

以小彼特(Micro:bit)為例


FB2http://gg.gg/TedLeeMicrobitFB/
URL2http://gg.gg/TedLeeMicrobit/

Line:ted2016.kpvs
Email:Lct4246@gmail.com
FB1http://gg.gg/TedLeeFB/
Bloghttp://gg.gg/TedLeeBlog/
URL1http://gg.gg/TedLeeURL/

Sep. 23, 2019
88x31.png[1]

資訊科技四軸
人人都要學程式設計嗎?為什麼?那該選什麼程式語言(Programming Languages)入門?…。以筆者橫跨EE(Electrical & Electronic Engineering,電子電機工程)、(Computer Science,資訊科學)與教育三棲背景,我們以2017-2019兩年的時間,北從基隆、南至高雄;從小學端到大學端已超過百場Micro:bit推廣師培研習、演講、工作坊、課後社團、營隊…實際雲腳台灣的第一手綜合教學經驗來看,吾人概可一言以蔽之:

現今的資訊科技(Information Technologies)教育正朝「虛實整合、軟硬兼施」所演進。

To be or not to be,要學習程式設計與否,個人推崇台南成大資工蘇文鈺教授在「用程式啟動孩子的未來」影片中所論述的觀點。
從iPhone在2007發行第一代迄今,新科技更迭的時序儼然已壓縮為十年,而且有越來越短之感。
猶記得尚在不久之前,學個硬體的EE或軟體的CS專業就能在該領域裡工作一輩子了。但曾幾何時,自走車、無人機這類軟硬整合的科技產品已進入了小學的殿堂之中了。
就筆者從EE、CS和教育三項度的觀察,現今學子對資訊科技的學習,可概以圖1之四軸向來分述之:

圖1:資訊科技四軸向。

  1. 虛實整合:舉凡虛擬空間的看到鬼AR(Augmented Reality)觀落陰VR(Virtual Reality )和真實空間的互動應用皆然。
  2. 軟硬兼施:軟體運算思維(Computational Thinking)與硬體設計思考(Design Thinking)相互搭配。
學習地圖(以小彼特為例)
本節將以軟體設計(software design)、硬體設計(hardware design)專題設計(project design)三方向來探討各別的學習路徑(learning path)。

軟體設計:在筆者所著的【軟硬整合入門】玩Micro:bit學Python工作坊@MakerPro一文中,我們提出圖2的學習地圖來指引如何學習Python的一條可行路徑。


圖2:邁向Python Pro之路。

我們採以終為始的思考方向,學習地圖以熟稔Python語言語法與結構為終極目標。
我們可先從其語法子集的MicroPython積木出發,再學習較Python精簡的MicroPython語法,逐步一窺這尾號稱蟒蛇大獸之堂奧。其中,為了提升學習興趣,我們建議採用全球學習人口已超過四百五十萬人,而頗受大眾歡迎的架構在ARM(Advanced RISC Machine) mbed軟硬體學步平台(platform)的小彼特的作為中繼站。
此外,以小彼特作為軟體程式學習進程可擘劃如下五路:
  1. 網頁程式設計:運算思維[2](用電腦解決問題)→積木程式→JavaScript→網頁前後端程式設計。
  2. 手機程式設計:運算思維→App Inventor→Android→App程式設計。
  3. 應用程式設計:運算思維→積木程式→Python→足不繁載(例如:人工智慧、物聯網、大數據分析…)。
  4. 演算法設計(algorithms design):運算思維→積木程式→演算法設計。
  5. 驅動/系統程式:運算思維→積木程式→C→C++→硬體驅動程式/系統程式設計。
至於各階段學習進程,我們建議的配套如下:
  1. 小學:不插電(unplugged)→插電(積木程式)。
  2. 中學:積木程式→MicroPython→Python。
  3. 大學通識[3]積木程式→MicroPython。
硬體設計:小彼特板載了一顆ARM的Cortex M0 CPU,也很適合拿來做電子電路(electronic circuits)微控制器(microprocessors)介面週邊(peripherals)嵌入式系統(embedded systems)…等硬體方面的學習。建議的學習路徑為:

專題設計:設計思考[4]→電子電路[5]Arduino→Makers/機器                                                                                                                                   樹莓派(Raspberry Pi)
MicroPython程式開發:從積木到語法[6]
本小節將以流星雨(the matrix rain)作為MicroPython積木與語法互轉的展示範例,並在第三方(third party)的軟體模擬器(simulator)上顯示其執行結果。最後再說明專案的儲存及上傳到小彼特主板的流程。

題目:本範例是要學習雙迴圈控制,以達成在5*5的LED點矩陣(dot matrix)[7],以由左至右---內迴圈(inner loop)、重複數次---外迴圈(outer loop)的方式顯示25顆紅色LED的明滅變化。範例程式碼「6.流星雨.xml」可由此下載

積木撰寫平台:連入積木網後即可開始程式積木的堆疊,如圖3所示



圖3:在積木網上拖拉積木自動生成語法程式。

在模擬器上前測:將在積木網自動生成的程式碼貼到線上模擬器Create with code,如圖4所示。


圖4:在Create with code網站上前測。

上傳小彼特後測:在Create with code或積木網上將程式的.hex檔下載(download)至主板上,如圖5所示



圖5:將.hex下載到主板後測。

專案存檔:在積木網上將含有積木資訊的程式存成.xml檔,如圖6所示。其中,可在Create with code網站上將專案儲存為只有純文字(plain text)語法程式碼為.py檔,如圖7所示。



圖6:將專案存儲為.xml檔。

圖7:專案存儲為.py檔。

最後,我們在此文也整理了小綠人動畫、電子賀卡、電子寵物、溼巴豆、體感魔音琴、主廚上菜、情話悄悄說、智慧計數器、點亮光明燈另外九個學習範例供讀者參考與練習。
結語
從上一小節所演示的過程讀者應可感受到以積木入門會比由語法開始學寫MicroPython來的稍稍無痛。待我們可以積木工具來表達運算邏輯(即電腦解題流程)後,再逐步遷移到語法規則應該比較容易學會MicroPython。而且剛寫好的程式馬上就能在小彼特上看到執行結果是比較直覺的。而這種「手感」(其實是邏輯感)就是累進程式功力的基石。
此外,筆者是從硬梆梆的80x86低階組合語言(assembly language)學習過來的,和現在許多讀者通識型白紙式的背景不同。然而,學習的主體仍是學習者本身。學寫程式要做甚麼?要學哪種程式?要從積木還是語法開始學?…,我們認為這並沒有一定的標準。鍾鼎山林,各有所好,找出一個較適合自己的學習方法才是在AI世代中至關重要的學習。至於怎樣才是適己的,也只有多方嘗試與探索後才能得知了。

参考資料
  1. 六種授權條款
  2. 本來非資訊相關科系是可以不用有程式設計的基礎,但尤於科技日進,資訊工具的入門門檻變低,程式設計已由專業朝向通識的全民運動了。
  3. Computational Thinking。
  4. Design Thinking。
  5. 鱷魚夾接線→杜邦線接線。
  6. 在Make Code平台上,MicroPython始終是社群(communities)的力量在更新(update)維護(maintenance)。(相對的,JavaScript端及其積木是由微軟所負責,其完整性自是毋庸致疑。筆者在這個介面上常會發現有意外之喜的巧思。)有趣的是自從第一版積木和語法互轉的功能被莫名地拿掉之後,再也沒有恢復的跡象。這在原本積木先行、語法隨之的學習策略上斷然失衡!
  7. 也可外接像WS2812B的RGB全彩可程式化(programmable)燈條(strip)