子供「どうして、お父さんのプログラミング(Python、PHP、C#など)は『文字』だけなのに、私は『絵』とか『ブロック』を使ったプログラミング(Scratch)なの?」
ある日、こんな質問を受けました。
お父さんは「TPOに応じて(最新ライブラリの対応、動かす環境、必要なマシンパワー)」変えてるからだよ。
と説明するより体感して理解してもらおうと思い、用意したのが
日本語プログラミング言語「なでしこ」
これなら、英語が分からなくても文字入力ができれば、なんとなく手続き処理が理解ができます。でも漢字。
結論から書くと
子供「ふーん、どっちも中身はほとんど同じなんだ」
私「いや、Scratchの方がネコがジャンプしたり、ゲームが作れて楽しいよ?」
子供「難しい方が、大人になったときに、もっと頭がよいことができるから、文字だけのプログラミングの方が好き」
との事でした・・・・。
一般的には「Scratch」の後は「Ruby」に変換可能な「Smalruby」などを教えるっぽいです。
いや、、英語の言語理解はハードル高いでしょ・・・
プログラミング言語「なでしこ」って何?
「なでしこ」て知ってますか?昔は「ひまわり(「なでしこ」が後継)」と呼んでました。
私は、10年ぐらい前に知りましたが、正式版公開は2005年02月です。
つまり、今年 2020年は15周年です。
Twitterのハッシュタグは「#なでしこさん」
開発中断しているかと思ってましたが、今年の7/3にオンライン会が開かれたなど、、根強いファンのいる言語です。
GUIアプリも結構簡単に作れます。
ただし学校教材として採用されなかったのは、小学生低学年に合わせた教育用の書籍がなかった事が原因じゃないかな。
当時は、
「子供のプログラミング学習に最高だ」
と思いましたが、完全にアメリカ(Scratch)に座を奪われました・・・
何やってんだよ「なでしこ」!
じゃんげんゲームを作ってみる
前回はScratchで機械学習を使って「じゃんけんゲーム」を作りました。
今回は、機械学習は使わずテキストプログラミングの初心者向けに、できる限り簡単にしています。
ようするに「IF」と「PRINT」と「文字入力」だけの単純なゲームです。
C言語で作ってみる
ここは、父親の威厳を見せるため、マウスを使わずに真っ黒い画面(Cygwin上)で作り上げてしまいます。
ソースコード
何も難しくありません。
「じゃんけんすると必ずコンピュータが勝つ」ようになっています。
ここに子供が気づけるか?
が知ってほしいポイントです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <stdio.h> int main() { char c; char a[3]; printf("じゃんけん(キーをおしてね)\n"); printf("p: パー\n"); printf("c: チョキ\n"); printf("g: グー\n"); c = getchar(); if (c == 'g') { printf("パーを出しました。ぼくのかち!\n"); } if (c == 'c') { printf("グーを出しました。ぼくのかち!\n"); } if (c == 'p') { printf("チョキを出しました。ぼくのかち!\n"); } } |
実行結果
大学で初めてC言語のプログラミングを学んだ時のように寂しい画面です。
今の時代は羨ましいなぁ・・・・。
「なでしこ」で作ってみる
命令文を知らないよ・・・・。ググりながら作ることになります。
親は予め作って制御文を覚えておいて、子供に文字入力してもらう方が身につくかと思います。
ソースコード
「{}」や「;」がないので、PythonやRubyに近い印象を受けます。
1 2 3 4 5 6 7 8 9 |
「じゃんけんぽん」と尋ねる。 答えは、それ。 もし、答えが「グー」ならば 「パーを出しました。ぼくのかち!」と表示する。 もし、答えが「チョキ」ならば 「グーを出しました。ぼくのかち!」と表示する。 もし、答えが「パー」ならば 「チョキを出しました。ぼくのかち!」と表示する。 |
「~です」「~だ」「ある」「する」などは日本語らしさを出すために付加することができるようです。
実行結果
Windows版(なでしこ version1)を使う場合は、「▶」ボタンを押したら実行画面が出てきます。
うーん、シンプルだけどC言語ほどではないですね。
スクラッチで作ってみる
これは、子供自身に作らせた方が良いでしょう。
ソースコード&実行結果
「ねこ」さんがいて可愛いけどなぁ~。
やってる事は、どれも同じです。
まとめ
実際のプログラミングには「Switch」文使ったり、エラーハンドリング等を行います。
ただしシンプルにしたおかげで、内容は小学一年生でも理解できました。
が、テキストプログラミングを教える気にはなれないなぁ・・・・。
まずは、ビジュアルプログラミングで「変数」や「乱数」を覚えてください・・・。