メモ

6歳の子どもに「関数型プログラミング」を教える方法


プログラミングの考え方にはオブジェクト指向と関数型の2種類があります。オブジェクト指向に比べると理解しにくく挫折しがちな「Functional programming(関数型プログラミング)」について、あるコンピューターサイエンスの学者が6歳の息子とゲーム形式で会話したことをブログでつづっています。6歳の子どもが興味を引き付けられた関数型プログラミングに関する会話は、子どものプログラミング教育のロールモデルを示唆するものになっています。

Conversations with a six-year-old on functional programming | blog :: Brent -> [String]
https://byorgey.wordpress.com/2018/05/06/conversations-with-a-six-year-old-on-functional-programming/

ヘンドリックス・カレッジの数学科・コンピューターサイエンス学科で教鞭をとるブレント・ヨーゲイ教授は、Janis Voigtländer氏の「(PDFファイル)Types for Programming and Reasoning」というfree theoremsに関する論文を読んでいるときに、やってきた6歳の息子に「パパ、何を読んでいるの?」と聞かれました。どこから説明したらよいのかわからないと戸惑ったヨーゲイ教授はストレートに「free theoremsについての長いお話を読んでいるんだよ」と答えましたが、息子から返ってきたのは予想通り「free theoremsって何?」という答えでした。

教育者であるヨーゲイ教授は、息子の疑問に答えようとしばらく考えて、「function(関数)が何かわかるかい?」と言い換えると、当然ながら「関数ってどんなもの?」という返事。これに対するヨーゲイ教授の回答は、「関数とは、入口から何かを入れると反対の出口から何かが出てくるマシンのようなものだよ」というたとえ話で関数を説明するものでした。


「例えば、数字を入れたら1つ大きな数字が出てくるかもしれないね。3を入れると4が出てくる、6を入れると7が出てくる」とヨーゲイ教授が説明すると、理解できた息子は関心を持った様子だったとのこと。そこでヨーゲイ教授はさらに「関数マシンにはタイプがあるよ。だから、数字を入れると数字が出てくるし、数のリストを入れると数が出るかもしれない」と話すと、息子はワクワクしながら「もしかして言葉を入れることもできるの?」と尋ねたそうです。

ヨーゲイ教授は「もちろん!言葉を入れると言葉を出せるだろうし、関数マシンに関数マシンを入れて関数マシンを出すこともあるかもしれないよ」と続けると、「関数マシンに関数マシンを入れられるんだ!」という新しいアイデアに息子は驚いたそうです。このような会話の中で、ヨーゲイ教授は「free theoremsとは、中に何が入っているのかはわからないけれど、タイプだけはわかる関数マシンに関するもの」だと結論付けたそうです。

たとえ話を使って子どもに理解しやすいような説明をするだけでなく、別のアプローチで理解を深めてもらいたいと考えたヨーゲイ教授は、「いいゲームがあるんだ。それは『関数マシンゲーム』と呼ばれるものだよ」とゲームをすることを提案しました。「パパが関数マシンを考える。君が関数マシンに入れる数を決めると、関数マシンは何か答えを出す。それから、関数マシンがどんなものかを君があてるんだ」とゲームを説明すると、息子はすぐにルールを理解してゲームが始まったそうです。


「λx.x+1」(入れた数に1を足す)、「λx.x-3」(入れた数字から3を引く)、「λx.2x」(入れた数を2倍する)という関数についてはすぐに答えが見つかったそうですが、「λx.6」(何を入れても6を返す)という関数には大いにてこずったとのこと。「関数マシンが入力を気にしない」というアイデアに至るのに苦労しつつも最終的に答えにたどりつけたそうで、この様子を見ていたヨーゲイ教授は、微積分の授業で積分定数(C)にてこずる多くの学生の姿を重ねたそうです。

その後、ヨーゲイ教授と息子はドライブやお風呂でも関数マシンゲームを繰り返し、息子は「λw.English noun.plural(w)」(入れた単語を複数形にする)という関数をクリアしたり、「λx.min(x+2,10)」(入れた数に2を加えた数と10のうち小さい方を選ぶ)などの複雑なものも解き、自分で好きな「関数マシン」を作ったりするようになったとのこと。ヨーゲイ教授は、free theoremsが何かを説明する中で、関数についてたとえ話で学び、関数マシンゲームで遊びながら関数の概念を理解させた経験を、「最良の育児の日」になったと述べています。

・関連記事
普通のパズルではない「正規表現クロスワード」がBBCラジオに登場 - GIGAZINE

ソースコードを見てどのプログラミング言語なのかを特定するクイズ「Language Identification Quiz」 - GIGAZINE

サイバーセキュリティになれる頭脳があるか判別できる6つの暗号解読テスト - GIGAZINE

「数学の概念」を視覚的かつ美しく表現したグラフィックいろいろ - GIGAZINE

コンピュータを進化させてきた偉大なるアルゴリズムまとめ - GIGAZINE

世界で最も難しいパズル10選 - GIGAZINE

質問を繰り返すことで論理的な考え方を身につける「ソクラテス式問答法」の実践方法とは? - GIGAZINE

数学の広大な分野の広がりを収めた一枚の図「The Map of Mathematics」 - GIGAZINE

in ソフトウェア,   メモ, Posted by logv_to