夏休みの自由研究、プログラム言語の歴史　(小学生向けプログラミング講談下書き、C言語:=仮面ライダー１号の場合)

#序
子どもに四則演算を教えるついでに、夏休みの自由研究に付き合うことに。

[「大学での初心者に対するプログラミング講義ではC言語を使うべきでない」](http://qiita.com/wholekeik/items/4b8ee0825f0b12778a3a)のかもしれないが、算数がちょっと得意な小学生は、C言語から入るのは悪いないと思う。みんな大好きロボットプログラミングだってC言語ができたほうが良いしね。
プログラミング入門にちょうど良いと思うタイミングは　、九✕九のかけ算はだいたい覚えて　お小遣いで何か買いたいものが出てきている頃。

>「100円玉が4枚あります。2人で分けると、X円ずつになる？」
「100円玉が5枚になりました。3人で分けると、Y円ずつになる？   XとYはどちらが大きい？」 
 「みんなで予算6000円でカラオケに行きます。500円割引チケットがあります。ジュース飲み放題とピザを２枚を...頼む場合、室料がZ円以下だと２時間歌い放題でおつりがきます」 etc...


こんなとき、剰余算や、分数・小数の計算をさくっとできるプログラム言語は、割り算を勉強する前の子どもたちのヒーローになれる資格がある(そろばんや電卓のことはいったんさておく)。
なので、四則演算ついでにプログラム言語を教えてみようとしたが、その際には、そもそもプログラム言語とは何かをとりあえず話しておくべきだろう。

プログラム言語周りは、多くの小学生にとっては、耳慣れない抽象概念が満載なわけで、そこを、すっと入れるたとえが欲しい。いったん親近感がわくと、大学生より小学生の方がプログラム言語のマスターは早い気がする。僕も小中学生でCもアセンブラもやった口だし。

ということ、プログラム言語って何ってことを、「C言語は、プログラム言語界の仮面ライダー１号だ」って話せる引き出しをもっておくと、
平成仮面ライダーと昭和仮面ライダーシリーズを知っている子どもへの話のつかみに使えるのでは、とちょっと調べてみた。

対象はあくまで、小学生向けにプログラム言語の話のつかみをするとき向きだが、平成仮面ライダーシリーズなどを見て育った大学生も相当するいると思われるので、大学生向け教材のコラムにも使えるかも。

#表１(昭和の歴史)
以下、概ねWikipediaの「プログラミング言語年表」の記述に従いつつ、最近のところは若干趣味を交えて表にしてみた。ご存知の通り(?)、仮面ライダーシリーズは、昭和・平成それぞれに放送されなかった時期があるので
スーパー戦隊シリーズなども適宜補うものとする。


| エポック的な年 | プログラム言語 | 対応してそうなスーパーヒーロー                                                                                    | 
|--------------|-------------|---------------------------------------------------------------------------------------------| 
| 1972年 | C言語 (デニス・リッチーらが開発)。 | 仮面ライダー (1971年4月 - 1973年2月;初代。)                                                             | 
| 1974年 | ML (OCaml/F#等の源流となる関数型言語) | 仮面ライダーX (1974年10月 - 1975年3月;手持ち武器（ライドル）を装備した初のライダー)                                 | 
| 1976年 | Smalltalk-76 (現在のSmalltalkに近づいた版) | 秘密戦隊ゴレンジャー (1975年4月 - 1977年3月;仮面ライダーシリーズの視聴率が取れなかったための代替)                    | 
| 1985年 | C++ (従前より開発のC with ClassesがC++として商用リリースされた年) |*参考 機動戦士Zガンダム(従前のガンダムの連邦対ジオンという明快な図式に対し、複雑な構図を持つ。小学校低学年にガンダムはまだ早いが。*)                       | 
| 1987年 | Perl(ラリー・ウォールがPerl1.0を開発) | 仮面ライダーBLACK (1987年10月-1988年10月;『賢者の石』など初代仮面ライダーにないモチーフを持ち、平成仮面ライダーに影響を与える。) | 

その他、Objective-Cを開発言語に採用したNeXTSTEP1.0がリリースされた年は、ドラゴンボールのTVアニメ放映開始年である、とかもあったが、小学校低学年にはドラゴンボールはまだ早い模様なので却下とした。

## 付記
 1990年代は仮面ライダーシリーズの「間(はざま)」の時期なので、略す。結果、Haskell, Python, Ruby, Java,JavaScriptm PHP等が表に登場していない。これらの言語については、表１をもとに、説明できるようにしておくと良いだろう。
 
>例、　プログラム言語もヒーローも、コンセプトやモチーフが大事なんだ。「スクリプト言語Perlは、『正規表現』などC言語では前面に出てきない機能を持ち、平成のスクリプト言語Python, Ruby, PHP等に影響を与えたんだよ。」

#表２(平成の歴史)

| エポック的な年 | プログラム言語 | 対応してそうなスーパーヒーロー                                                                                    | 
|--------------|-------------|---------------------------------------------------------------------------------------------| 
| 2002年 | C#(C/CLLとJavaの影響下にDelphi開発陣がマイクロソフトから送り出した言語)。 | 仮面ライダー龍騎(2002年2月- 2003年1月、従前のライダーシリーズの影響下、カードゲームの要素を取り入れライダー同士の戦いを導入。) |                                                            | 
| 2003年 | Scala(オブジェクト指向と関数型の双方を採用したマルチパラダイム言語。) | 仮面ライダー555 MASKED RIDER Φ's(2003年1月- 2004年1月;ライダー側のドラマと怪人側のドラマ(苦悩)の双方を描いたマルチパラダイムストーリー)|                                 | 
| 2009年 | Go(マスコットキャラクターgopherくんが、小学生のコマンドライン入門に良いかも。参考[本物の Gopher を、お見せします](http://qiita.com/mattn/items/b7889e3c036b408ae8bd) | 仮面ライダーディケイド(2009年1月 - 8月;「平成仮面ライダーシリーズ」の10作目、「10年に1度のお祭り」というコンセプトの下で平成仮面ライダーシリーズに登場する歴代の仮面ライダーが総登場)                    | 
| 2014年 | Swift(コンバイラ基盤LLVM上の覇者とすべくアップルが送り出した言語) | 仮面ライダーガイム(「2013年10月- 2014年9月) 戦国武将を全体のモチーフとし、各々の団体の代表ライダーが覇を競う勢力争いの要素を取り入れた。 | 

...平成になると、いっきにグダグダ感が。。

プログラム言語もライダーも数多すぎな上に、マルチパラダイム、並列実行、パラレルワールドなどの新概念が導入されており、小学生には敷居が高い...、でも、けっこうな数の子どもが結構複雑なストーリーの子どもが仮面ライダーを見ているんだよね。


#所感

仮面ライダーシリーズはC言語とその後継の話をする際のたとえとしては割合と良いかも。
逆にスクリプト言語周りはまったくだめ。主なスクリプト言語は概ね元号的には平成になってから登場しているので、もしかしたら、スクリプト言語はセーラームーンやプリキュアなど、女の子向けスーパーヒロインの話として、捉えられるようにした方が良いのかも。このあたりは、界隈のプリキュアおじさんの登場に期待することとして、我が家の今夏の夏休み自由研究におけるプログラム言語としてはCとGoの採用を働きかけようかと思う。