換種方式學程式設計:如何訓練你的機器人

EluQ發表於2013-03-12

伯樂線上注:2013-3-12 上午我們在@程  序員的那些事微博推薦了這篇非常有意思的文章,拋開程式語言,拋開計算機,Dr Techniko 講述了他是如何通過遊戲來教孩子們學會程式設計的一些基本原則。感謝@EluQ 的熱心翻譯,以下是全文。

 

上週日,我教六個5到7歲的小朋友學習程式設計。“用什麼程式語言?”你可能會問。其實我沒有用程式語言,至少不是你所知道的。事實上,我就沒有用電腦。取而代之的,我發明了一個叫做“怎樣訓練你的機器人”的遊戲。在我解釋怎麼玩這個遊戲之前,請讓我說說我的動機。

當我19歲讀大一的時候,我在MIT(麻省理工學院)學習了程式設計。那並不是因為家裡沒有電腦或者我壓根沒聽說過程式語言。而是因為:①我認為程式設計是件枯燥的事 ②沒人告訴我為什麼我要為此煩惱。事實上,我的高中計算機老師告訴過我,“你沒必要浪費自己的時間去學習怎麼程式設計。現在我們有了視覺化工具去構建程式。程式語言已經過時了。”那是1994年,他提到了Visual Basic。對我來說,幸運的是,在MIT幾周的時間內,這件事就煙消雲散了。但一個人是不是非要等到大學才能接受適當的教育呢?

學習如何程式設計正成為今天我們能教給孩子們最有用的新技能。我們的生活比以往任何時候都更加依賴於我們給計算機指示的命令程式有多麼智慧。計算機掌握著我們的個人資料,它們為我們做決定,它們為我們互相通訊,它們正逐漸成為我們大腦的延伸。如果我們不把學習程式設計作為童年的一部分,我們永遠不會進化。正如著名的未來學家 Ray Kurzweil 說的,“唯一你應該擔心你孩子學習的第二語言是程式設計(語言)。”

怎樣訓練你的機器人

這個遊戲操作如下:每一個孩子作為“機器人指揮者(robot master)”,他們的媽媽或者爸爸作為他們的“機器人(robot)”。我給每個孩子一本“機器人語言字典”並且告訴他們這是他們的機器人能理解的語言。這本字典有“向前移動左腿”,“左轉(turn left)”,“抓起(grab)”,“放下(drop)”等符號。

robot language dictionary

遊戲的目標是讓機器人們穿越障礙訓練場,撿起一個球並把它帶回來。孩子們需要寫一個程式來告訴機器人怎麼做那些事。每次他們寫一個程式,就交給他們的機器人,然後機器人就執行程式。為了這麼做,我給了每個孩子一支筆和一張紙,讓他們從(機器人)字典複製符號來寫出他們的程式,然後交給機器人們動起來!

How To Train Your Robot

每個機器人拿回球的時候,有趣的事情就開始了。現在我讓孩子們發明他們自己的動作和符號,新增到字典中並且教會他們的機器人們。對於孩子們想出的(符號等)是沒有限制的。

 

這是我最喜歡的程式(一個五歲的小女孩寫道):

How To Train Your Robot

我設計這個課程去教一些電腦科學與程式設計非常基本的原則:

  • 程式語言僅僅是另一種與實體交流的方式。(通過程式)
  • 程式是自動操作事物的祕方。

但是,令我感到驚喜的是孩子們學會了多少。(在30分鐘的時間內,)他們自己就弄明白了下面這些東西:

  • 程式引數化:為了替代寫10遍“向前走1步”,他們在“步”符號前面寫了10(一個五歲的孩子想出來並且問我她能否這麼做)
  • 創作:將一套動作編組(“左腿向前,然後右腿向前並做這個組合10次”)
  • 抽象:“繞圈跑,然後說‘我暈了’,然後叫這個為‘跑暈’程式並且執行100次。(出於某些原因,孩子們喜歡讓他們的父母重複做超過100次同樣的事)”
  • 單元測試:他們會寫一個測試程式讓他們父母移動幾步,讓父母執行程式,然後修正並且再次執行程式,最後再加入一些步驟直到達到目標。

我現在已經開課兩次了,並且我看到了相同的模式,當孩子們玩得快樂時,在程式設計時他們會變得非常聰明並且有創造性,這堅定了我的信念。許多父母計劃在生日聚會時玩這個遊戲。如果你對怎麼設定遊戲有疑問,毫不猶豫得寫下來吧。你可以在 www.facebook.com/drtechniko. 找到我的聯絡方式。

在這篇文章中,你也能看到如何教授這門課程的指南和資料。

我希望我們今天學到了一些有用的東西。

Dr Techniko

 

 

相關文章