家長應該如何理解 “資訊教育的產品或工具”

家長應該如何理解 “資訊教育的產品或工具” :

程式是什麼?

家長應該如何理解 “資訊教育的產品或工具”

記得女兒2、3歲時,常帶她去便利商店,由於小朋友視野的關係,並沒看到大人在櫃檯的動作,有一天她要喝養樂多,剛好電話響,我拿十塊給她,我在便利商店門口講電話,她走出來後,店員叫住她,說她沒付錢,後來問她,她不知道要把十元交給店員!

這個買東西的問題可以程式化嗎?

我們來試試,先假設 進去之前就知道要買什麼東西,而且口袋有足夠的現金,這樣步驟會簡單點:

第一步 找到要買的東西,並確定架上有你要的數量,拿起來走到櫃檯!
第二步 拿出現金交給店員,店員刷貨物條碼結帳並確認是否要找錢,

第三步 找錢後,確認找錢的數量是對的,我們就可以拿起物品及找的錢離開櫃台。

到這,您可能會說,這不是買東西流程的邏輯,對,程式就是”做事的流程” ! 在特定的條件下,可以重複運作!

程式語言是什麼?它們的共同性是什麼?
以上面的例子,我們是用中文表示,可以用英文表示相同邏輯嗎? 法文、日語、… 等等,當然都可以,”只是因為我們熟中文” ,所以,中文是我們最方便表達思考邏輯的工具!

程式語言就是我們讓機器做事的表達工具!

大部分的程式語言都有 “變數” 、”迴圈” 、”判斷式”、”輸出入裝置”, mmm. 專有名詞開始跑出來了! 我們還是回到上面的例子,來看這些表達工具會有哪些共同性!

那我們進一步就假設買東西的是 甲機器人,我們來看看上述步驟怎麼用程式語言結構表示出來:

“第一步 找到要買的東西,並確定架上有你要的數量,拿起來走到櫃檯! “  “找到要買的東西” ,甲機器人要有輸入裝置,知道商店有多少貨品 (當然,現在就可以想像,機器人可以做視覺辨識,看商店實體商品去判斷,電腦視覺也可以歸類輸入裝置),我們先用比較傳統的文字輸入,這個清單輸入至機器人的某個變數,然後跟要”買的東西” 這個值比較,因為清單內容項目一定不只一個,所以要用個”迴圈”,就是讓機器人一直不停地做比較,直到比出來,接下來確定貨物數量!

這段流程邏輯已經將程式語言的共同部分都使用到了! 接下來就選擇好喜歡或熟悉的程式語言將機器人動作程式化!

以下兩段,就不示範怎麼表示成程式邏輯了,麻煩讀者自行試試!

“第二步 拿出現金交給店員,店員刷貨物條碼結帳並確認是否要找錢”
”第三步 找錢後,確認找錢的數量是對的,我們就可以拿起物品及找的錢離開櫃台”

目前業界流行的語言
我們就先以,以下幾篇文章,做一下綜合討論:

1.IEEE公布2016年熱門程式語言排行榜:C語言最熱門、大數據相關語言成長快 (數位時代)
2.2017 最佳程式語言 Top 10 (原文網址:https://ifun01.com/8C8CCFE.html)
3.2018 最具就業前景的 7 大程式語言,Java、Python、JS 無懸念?(原文網址:https://kknews.cc/other/r8jqpr4.html)
4.成為頂級黑客前必學的程式語言!
5.全球最流行三大程式語言:學會一門全家小康

家長應該如何理解 “資訊教育的產品或工具”

若讀者先去看這幾篇參考文章,如果不是程式背景,應該已經昏了!

我刻意挑了從 國際知名的工程機構做的排名、從職缺薪資做的排名、工程師數量、2018預測、純工程技術(Computer Science),不同角度去看”受歡迎的程式語言”,我們先抓三個這幾篇文章交集較多的語言做比較 — C、Javascript 、Python !

先跟各位提,筆者從開始拿人家錢寫程式,比重最高的是 C ,大概歷經30年! 看官們也許會問,為什麼要交代這個,因為如果是少林派出身難免會覺得太極拳太過柔弱! 像我就覺得Java 是個超級”肥” 的程式,因為他被設計時,最重要的目標是要跨平台,所以加了很多轉換機制,然後又被”Oracle 控制” ….,就一肚子不高興。很陰謀論吧! 😊 但現況是很多語言是國際大廠在背後操盤。

好像扯遠了,要說的重點是—不同訓練出身,角度會不一樣!

程式寫久了,看文章、或程式,就猜得出出身! 😊

C 因為很簡要,所以應用範圍很廣,再加上在編譯器最佳化相較於其他語言相對容易,所以幾乎作業系統的底層都以C 為主,或韌體語言(Firmware) 也以C 為主,因為效率高! 筆者自己就有類似經驗,曾經待過的公司,要用C++ ,取代原來的 C 架構,作為驅動程式(Driver) 主要語言,最後是成功全部轉換了,後來內部就發現驅動程式效率上不去!

但也是因為簡要,所以要發展大型軟體用C ,像大型資料庫,就會花很多人力資源,簡單講就是多花很多錢! 筆者提這的目的是? – 各程式語言有他很合適的應用領域,這跟很多條件有關,不逐而一!

Python、Javascript 這兩個語言近幾年很受歡迎,當然受歡迎的原因不一樣。Python 是受AI 題材影響,但Python 是廣泛的應用在 科學領域、open source projects(各種開放軟體專案)、大數據、…etc!

Javascript 這兩年特別受歡迎,有幾個很大的原因,一個是 作為原生App的主要語言或框架,另 一是HTML5 成為網站主流,還有一個是跟 NodeJS 結合,NodeJS 在物聯網Gateway 上展現了很好的特性,微軟 特地提了 Typescript 將 Javascript + NodeJS 整合一起!

筆者提這三種語言剛好代表了三種角度: Computer Science 電腦科學基礎 – C 語言 ,科學、開放軟體社群及專案 – Python , Javascript – 行動軟體、業界大廠支持!

什麼是圖形化(或視覺化)程式語言,及近期進展:

我們還是先列參考連結:
1.Visual programming language (跟中文 Wiki,這篇英文WiKi比較新且完整)
2.視覺化程式設計語言 (中文 Wiki)
3.視覺化程式語言的未來 , https://www.ithome.com.tw/voice/93114
4.堆積木寫程式:Google Blocky
5.MIT 為孩子量身打造的程式語言 – Scratch 貓爪
6.Google 玩遊戲學程式中文化線上課程 Blockly Games
7.Scratch (programming language) 英文介紹, Scratch 中文介紹,英文的還是比較新而且完整!

因為這幾篇算很完整的介紹,我用節錄的方式將我要表達的重點整理給大家

“視覺化程式設計語言(Visual programming language,以下簡稱VPL),又稱『圖形化程式語言』、『視覺化程式編成語言』。係使用者利用圖形化元素進行程式設計;相異於文字式程式設計。VPL以視覺表達為基礎,利用『文法』或是某種『輔助標記』進行圖形與文字的排列。許多VPL建基於『方塊與箭頭』的概念之上,以方塊或螢幕上的物件為本體,以箭頭相連接,以直線段與弧線段代表相互之間的關係。
更進一步的分類VPL,依據類別與視覺表達延伸的使用,分為:圖示式程式語言、表格式程式語言以及圖表式程式語言。視覺化程式設計環境(Visual programming environments)提供圖形與圖示的元素讓使用者操弄,以便符合特定空間文法以進行程式建構。
一種經視覺化轉換的程式語言是利用視覺表達疊套在非視覺程式語言作成。視覺化程式的視覺表達天性是沒有文字式程式語言的例子可供比擬的。
視覺化程式設計在目前的發展是嘗試整合視覺化程式設計的研究,一是對於狀態式程式設計進行線上除錯,二是程式產生自動化與文件產生自動化。另外還有資料流程式語言所帶來的平行自動化,那將會是未來一項重大的程式設計挑戰。[1 “ (From 視覺化程式設計語言)
“Mitch Resnick於2012年11月在TED進行了〈Let's teach kids to code〉演說,許多人對其中的Scratch感到無比興趣,在這之前,Google亦發布過Blockly。坦白說,視覺化程式語言不是新鮮貨,然而或許會是程式語言未來發展的一個主力方向,也帶來了一些反思程式設計本質的機會。” (from https://www.ithome.com.tw/voice/93114)

“這兩年來,在科技大廠各巨頭與新聞媒體的推波助瀾下,興起了人人學程式設計的風潮,基於「XX應從小開始」的不敗口號,自然也不能放過讓孩子們從小學程式設計的可能性,相關產品中,最小年齡層甚至有五歲左右就可以開始使用,無論操控的實際硬體是什麼,為了讓孩子們編寫程式方便,大多搭配平板電腦或手機,然後使用積木圖像來代表各個程式設計語法,可使用拖拉方式來組合、建構程式。

在這類以積木圖像代表程式語法的視覺化語言中,最為人所知的就是Scratch,它甚至推出了更簡化的ScratchJr,五歲孩子就能使用的產品中,它就是其中之一,近兩年來,也迅速成了各教育單位推動從小學程式設計的利器。

Google亦發表過視覺化程式語言Blockly,同樣也是積木式建構語法,並主打著針對更高年齡層的學習者而設計,可轉換為JavaScript、Python、XML等語法。

此外,LEGO積木機器人從第一代RCX到現在的EV3,都可以搭配視覺化程式語言來編寫程式,因為直覺簡單,幾乎已成了各機器人營隊的首選配備。

在《Code Complete 2》中,提到:「生動的隱喻說明更廣泛的現象,而你可以運用它們提升自己對軟體開發過程的了解」,視覺化程式語言,實際上是一種圖像式的隱喻,突顯出軟體設計中組合與建構的過程,積木是孩子們自小就熟悉不過的玩具,積木式的圖像搭配觸控式螢幕,創造出目前最貼近孩子們生活中的經驗連結,不可否認地,這確實是有助於降低接觸程式設計的門檻與排斥,孩子們確實可在不知道的情況下,從事程式設計的動作。

實際上,視覺化程式語言並不是新東西,在〈Visual Programming Languages - Snapshots〉這篇文章中,Eric Hosick收集了幾十種視覺化程式語言的擷圖與相關鏈結,我實際在進行EV3設計的過程中,有個遙遠的記憶竟然慢慢清晰了起來,「這感覺活像以前在學校使用電子電路圖設計軟體,那些資料線(Data Wires)不就像是電路?這玩意兒不只是設計給孩子們使用的!」” (From https://www.ithome.com.tw/voice/93114)

什麼是實體運算工具,對程式學習有幫助嗎?

因為 C 的聖經 (Bible) ( C語言之父Dennis Ritchie和另一位技術專家Kernighan合著的這部不朽之作:
C程序設計語言(第2版·新版) Brian W.Kernighan, Dennis M.Ritchie 本書經常被人簡稱為「K&R C」(K和R分別是兩位作者姓氏的頭字母) ,第一個程式 就是 要 大家 印出 “Hello World!) ! 所以,很多程式教學的課第一堂就教 “Hello World” ,這本 Bible , 1978 第一版, 1989 第二版! 至今,已經近40 年,1978 年的幾千萬台幣的電腦效能還不如現在的便宜的山寨手機,那還要教 “Hello World” ?

其實是要的,因為 “Hello World” ,在教的不是 “寫程式”,是教 “怎麼樣產生第一支程式” ! 但是,y94
現在人手一機(應該是好幾 機) 的環境,在手機螢幕或電腦銀幕,產生 “Hello World” 的心理期待,跟你在 1978 甚至 1990 年代 一個幾萬元的PC 上,看到你的第一個程式—Hello World,差距十分大吧!

英國 BBC 國家廣播公司做了一個計劃叫 Micro:bit ,進行一個非營利的程式教學教具演進計畫,這教具也叫 micro:bit ,對我們這些程式老頭,就是開發板! 現代人對開發板陌生及畏懼的程度,對我們這些程式老頭是很大的心理反差! 其實想想也沒錯,現代人對馬車也是如此! ☹

等等,你想要說 “實體運算工具” 就是開發板 ? ….mmmmm “是的” ☹

但英國人很認真的做了實驗調查,” BBC micro:bit在周年時發表有重要影響的調查結果: 有90%的學生說micro:bit可以幫助任何人學習編碼” ,還有以下數據:
•90%同意BBC micro:bit有幫助,對於任何人都可以編碼這件事
•88%同意BBC micro:bit幫助他們看到編碼沒有他們以為是那麼困難
•45%的受訪者表示,他們將來肯定會以ICT /計算機科學為主要學習主題,高於使用BBC micro:bit之前的36%。 對於女孩來說,這一點更加突出,從BBC微型使用率的23%上升到39%,增長了70%
其實,若是熟悉 教學開發板的市場人士,應該不意外這趨勢,因為 Arduino + Scratch 已經成功地讓非IT 電機背景人士,大量進入這領域,帶領出這幾年創客風潮! 在台灣國中、小及高中、職,也有很高的接受度!

所以,如何好好的使用這些工具及既有教材在程式教育上,才是重點!

若有興趣 micro:bit 計畫,可參考
1.BBC 正式推出微型電腦「Micro:bit」,免費供百萬名學童學習程式
2.Microbit 硬體架構介紹
3.micro:bit 軟體生態系統介紹

家長要懂”程式設計”嗎? 怎麼看待小孩的程式學習進度

“2013年,美國公益組織Code.org發起「一小時玩程式」運動,頓時席捲世界,橫跨180多國、使用45個語言,辦過20萬場活動,參加人數超過22.5億人,堪稱是史上最盛大的全球學習活動。 在台灣,只要上「一小時玩程式」網站(Hour of Code in Taiwan),就能在「冰雪奇緣」「星際大戰」等主題遊戲中,體驗寫程式的樂趣。” (From https://www.gvm.com.tw/article.html?id=32001)

以上是 國內媒體對 一小時玩程式 活動的介紹!

筆者最近有個心得 -- 任何的教育機構,都不能滿足小孩的特殊需求! 意思就是,您的小孩有特殊能力才能,學校老師及學校環境不能也不會幫父母提供偏離80/90 % 學生的學習內容! 這時,要嘛培養小孩有自學能力,要嘛,父母要知道如何找外部資源! 若您的小孩有興趣及才能在音樂、美術上,一般家長會覺得自己有機會、能力找外部資源,雖然自己不是專家,但可以判斷外部資源對不對! 但對 “程式” ,敬而遠之!

一、兩小時的學習,家長可以騰的出來嗎? 參加 「一、兩小時玩程式」這樣的活動,知道現在的程式教育工具跟方法 ! 之後,若小孩有這樣的課程,可以跟小孩一起進行,也知道如何跟老師溝通! 這段時間,筆者因為各式活動關係,看到不同背景的成人,都可以在短短兩、三個小時內,一個上午或下午,學習玩(或 完) ” 圖形化(或視覺化)程式語言” --- Scratch or Blockly 或加上 “實體運算工具” ! 另一個在這裡要提出來的觀察是 – 這些 圖形化(或視覺化)程式語言 的背後,目前不是 Python 就是 Javascript !

這有兩個層面的意思:
1.在完成Scratch 3.0 和Blockly 的 Open Source 專案是用 Javascript ,另外,還有許多模組是用Python ,讓Scratch 和 Blockly 去使用!
2.另一個是圖形化程式語言可以直接轉換成 文字語言(Javascript 或 Python )


我們就以 Hello World來看兩個 例子:

1.Micro:bit 的 Blockly 轉成 Javascript

家長應該如何理解 “資訊教育的產品或工具”

家長應該如何理解 “資訊教育的產品或工具”
2.Scratch 3.0 轉成 Python
家長應該如何理解 “資訊教育的產品或工具”

家長應該如何理解 “資訊教育的產品或工具”

眼尖的讀者可能發現一些問題,在這就先不解釋!

在使用Scratch 教學的老師不只一位,提起一個有趣但需要考慮如何降低這類問題的產生,學生在學Scratch 一個段落後
,要轉換至文字程式,十分不適應,因為圖形化程式語言太方便! 所以有圖形及文字語言切換,會降低轉換上的不適應!

“程式設計” 在筆者受教育階段,可以視為是才藝或技術,就像音樂、美術、舞蹈。漸漸的這兩年教育界及某些大型企業希望逐漸成為基本知識、或技能,就像語文、數學! 我們不討論對或錯! 就如第一段所舉例在生活中教小孩流程及邏輯思考,就是必要也是基本教育內容,只是要不要套上”程式設計工具”,讓這技能或能力更進一步! 就像我們會想要用好文章、文學作品、古文去增加小孩的語文能力!

我們繼續用語文學習做類比讓大家在面對程式教育時有通用邏輯 (我們現在也是在做思考流程規劃 😊)

變數、流程控制(判斷式、迴圈)、輸入出裝置、資料型態 就像語言學習中 – 單字、語法、聽力、說力、造句 等等基本學習原素,熟到一個程度就可做表達、作文、詩、詞、… (用程式設計的表現: 解數學題目、寫小型遊戲程式、網頁) 等等較複雜且初步有往專業能力的進展。

當然,語言學習中,小朋友有些人接下來就會在演講、作文(甚至 是新詩、歌詞、等等專業能力發展) 展現較好能力,在程式設計中,可能就會是在遊戲程式、網路程式、雲端程式、低階控制(如機器人、控制板)、系統設計(如:設計一個MP3 撥放器) …etc! 在這階段不管語言學習或程式設計,盡量讓小朋友作不同領域接觸,因為是性向及能力了解及開發,除了持續打好基礎,也是了解自己的過程!

當語言能力持續發展,也許投稿、寫小說… (程式能力 是完成大型雲端程式、有專業水準機器人、…) 等等有可能轉變成謀生的專業能力,年紀越小到這階段,就筆者的想法是希望小朋友有更廣泛的學習,最好已經可以自我規畫學習進程及目標而且有自制能力去完成,說這段或許是多餘,因為越小年紀會到這階段,通常單純只有父母及學校的驅動力是做不到的,小孩的自我驅動力早就表現出來!

希望聊到這,有對看文章的父母有幫助,因為下一個階段就是”碼農” – 決定自己一輩子做程式碼開發,跟農夫一樣辛勤工作! 上述階段其實都跟幾歲到達,父母擔心及尋求外部幫助的負擔不同。 但因為網路資訊的發達,程式開發要到專業階段相較於語文學習,甚至機率上高很多,這時反而是自學能力及自制能力決定之後是否走得長久!

最後鼓勵各位父母主動去了解及體驗程式教育,畢竟言教不如身教,有點老掉牙卻是對小孩表達”終身學習”的態度最棒的”教學”!




家長應該如何理解 “資訊教育的產品或工具”
大陸的超商已經開始實施無人商店..台灣講來都會跟進的

W2004_123456 wrote:
家長應該如何理解 ...(恕刪)



邏輯真的需要從小培育~

W2004_123456 wrote:
家長應該如何理解 “...

在使用Scratch 教學的老師不只一位,提起一個有趣但需要考慮如何降低這類問題的產生,學生在學Scratch 一個段落後
,要轉換至文字程式,十分不適應,因為圖形化程式語言太方便! 所以有圖形及文字語言切換,會降低轉換上的不適應!

(恕刪)



我女兒現在就是用Scratch在做小遊戲。

我完全沒概念現在小學生學的東西好多元。。。
龍癡癡地著望著魔羯半响,手上抱得更緊,低聲道:「妳的臉紅得真好看……。」
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!