こんばんは!塾長の松下です。
プログラミング教室の認知度が高まってきました。
あと1年ですからね、小学校でプログラミング教育が必須化されるまで。
ところでお母さん、お父さん、「プログラミング教育」と聞いて、どんなイメージが思い浮かびますか?
もしも次のようなイメージだったら大きな誤解です。
それは10年以上も前の話しで、今は違います。
Contents
わかり易く進化したプログラミング
プログラミングを習っている小学生を見ると、
「うわ、スゴイなぁ。」
「まっ黒な画面に、文字ばっかり、英語ばっかり、記号や数字だらけ・・・そんな難しそうなこと、よく分かるよなぁ・・・」
と思われる人も多いでしょう。いえいえ、誤解です!
現代のプログラミング教育は、もっと分かりやすく進化しています。今はこんなイメージです。
難しい英語や記号の羅列は見当たりません。見やすい画面の中で、すべて日本語でプログラミングができます。
ビジュアルプログラミングとは!?
「Scratch(スクラッチ)」というプログラミング環境をご存知でしょうか?
Scratch(スクラッチ)はプログラミングに必要な命令や関数がアイコンやボタンになっています。操作方法や命令や記号を覚えていなくても「見れば使える」ような画面になっています。
スマートフォンを使うとき、いちいち操作マニュアルなんて読みませんよね。ボタンや画面のアイコンを見れば、だいたいの使い方が分かるからです。子供が使うゲーム機などもそうですよね。スマートフォンはとても高機能なので、プログラミングと同じくらいの操作数が必要なのですが、皆さん、あまり気にせず簡単に使っていますよ。
このように「見れば使える」環境でプログラミングすることを「ビジュアルプログラミング」と呼びます。「ビジュアル」=「見た通り」というところから、そう呼ばれています。
見れば分かるくらい直感的に操作できて、しかも、プログラミングに必要な素養を、ちゃんと学ぶことができる。それがスクラッチです。
教科によらずコンピューターを使いこなせる
プログラミングが楽になると、それだけ早く「習った知識を使いこなす」ことに集中できます。
小学校や中学校で習った知識を、どんどんプログラミングに応用していけます。
例えば、保健体育の教科書にはBMI(体重 [kg] ÷(身長 [m] )× 身長 [m] )が載っています。これを使ったらどうでしょう。自分の体重と身長を入力すれば「痩せ型」「普通」「肥満」を判定してくれるソフトが作れそうです。
算数で習った図形を描くことや、比例や反比例の表やグラフを描くこともできます。音楽で習った曲を演奏させることもできれば、理科で習った湿度の計算もできます。
実は文部科学省が本当に必須化したいのはプログラミングではなくて「プログラミング的思考」の教育です。特定のプログラミング言語の文法や記号を覚えさせるのではなくて、コンピューターを使って問題を解決したり、何かを創り出したりすることを体験させる事がしたいのです。
早くコンピューターを活用させたいのですから、文法や記号を覚える苦労は、できるだけ無い方が良いのです。多くの教育委員会でスクラッチの導入事例がある理由が正にここです。
プログラミング言語の「難しさ」って何!?
そもそも、プログラミング言語の難易度とは、何でしょうか?
時々コンピューターに詳しそうな人が、
「スクラッチは簡単だけど、C言語は難しいよね。」
などと言います。一般にプログラミング言語の難易度は、
- 人間の言葉に近いプログラミング言語 = わかり易い
- コンピューターの言葉に近いプログラミング言語 = 難しい
という風に考えられます。
コンピューターの言葉は0と1だけで作られています。0と1だけの言葉は機械しか理解できないので「マシン語」「機械語」と呼ばれています。つまり「0と1のマシン語だけでプログラムをつくること」がもっとも難しいプログラミングです。
流石に0と1だけでは不便すぎるので、人間が理解できる言葉や文法でプログラミングできるようにしたのが、一般に言われている「プログラミング言語」です。
難しいプログラミング言語ほど、人間語からマシン語に翻訳する手間が少なくて済むので、高速に動作し、コンピューターの隠れた機能や性能まで引き出すことができます。わかり易いプログラミング言語は、翻訳に時間がかかって動作が遅く、コンピューターの標準的な機能しか使えません。
詳細は省きますが、マシン語に比べたらC言語やJavaはわかり易いプログラミング言語に分類されます。Pythonはさらにわかり易いです。とは言え、英語や記号を使い、覚えるべき文法や定石が多いので、やはり小学生には難しいでしょう。興味の強い子でも高学年からです。
一方、スクラッチは超わかり易いプログラミング言語と言えます。覚えることが少なく、マウス操作がメインなので、小学校の低学年から始めることができます。
プログラミングの難易度を比較
それでは実際にプログラムを書いてみて、プログラミング言語の難易度を比較してみましょう。
1から100までの和を求めるプログラムで比較
下の図表は1から100までの整数の和を求めるプログラムです。
変数を1、2,3・・・と変化させるたびに足していく計算です。
Scratch(スクラッチ)、Python(パイソン)、C言語で比較しました。
Scratch(スクラッチ)は12個のブロックを使った7行のプログラムです。ただしマウスで組み立てました。キーボードを打ったのは、数字の0や100を指定する時と、表示させる文字列「1から100までの合計は」を入力する時だけでした。プログラムの実行はボタンをクリックするだけです。
Pythonは4行のプログラムです。基本的に英語です。左のスクラッチと見比べれば、最初の1行は「合計を0にする」ことが推測できます。しかし2行目は難しそうです。繰り返す処理のfor文の文法と、整数1~100を用意して1つずつ取り出す文法を組み合わせて for x in range(1, 101, 1); と書いてあるのですが、初心者にこの行を説明するだけで、千文字以上の説明が必要になります。プログラムの実行には、コマンドを使う必要があります。そもそもほとんどの人はWindowsパソコンでコマンドを使ったことが無いでしょう。
C言語は9行のプログラムです。やっぱり英語です。1行目からして意味が分からないでしょう。初心者にこの1行目を説明するために、はやり千文字以上の説明が必要です。実際、C言語の多くの入門書では、この行の説明は面倒なので後回しにします。プログラムの実行には、マシン語へ翻訳するコマンドと、実行コマンドの2つを使う必要があります。
ちなみに、ゲームを作るプログラミング教室ではJava(ジャバ)というプログラミング言語もよく使われます。今回のプログラムならJavaはC言語が最も近いでしょう。
小学生にとって文法が厳しいプログラミング言語は混乱のもと
上の例で見たようにスクラッチに比べると他のプログラミング言語は文法が厳しいです。
例えば、画面に「こんにちは。」という文字を表示させる場合を考えてみます。
C言語やJavaなどでは、だいたいこうなります。
printf(“こんにちは。”);
小学生にこれを書かせて実行させようとすると、
- 命令が覚えられない!
- 命令の綴りを間違えて動かない!
- ( )を忘れて動かない!
- ダブルクォーテーションを忘れて動かない!
- ( )や” ”の対応が取れてなくて動かない!
- セミコロンをつけ忘れて動かない!
- セミコロンと間違えてコロンにして動かない!
- エラーがたくさん表示されてパニックになる!
などという不幸が続きます。
「こんにちは。」と表示させたいだけなのにルールが多すぎます。
「こんにちは。」というプログラミングが完成する前に「さようなら。」と机をひっくり返してしまうでしょう。
一方で、スクラッチの場合は簡単です。
- 上図のブロックをマウスで選択する
- ブロックの( )に「こんにちは。」と入力する
これだけです。
そもそもセミコロンやカッコといった文法が無いので間違えにくいです。
「ビジュアル」なら、見たものを直感的に使ってプログラミングができます。
しかも操作の大半はマウス操作(タッチパネル操作)です。
キーボードを使うのは、数字や文字を指定する時だけです。
なぜプロはスクラッチを使わないのか?
スクラッチがそんなに良いモノなら、プロも使えばいいじゃないか?
そんなふうに逆の意味で誤解されないように、今度はビジュアルプログラミングが苦手なことを紹介しておきましょう。
プロが使うプログラミング言語と比べてしまえば、次の点が劣ります。
- 動作が遅い(人間に比べたら超速いです)
- プログラムを部品として再利用できない
- 他の人のプログラムと通信できない
- つくったプログラムを商品化できない
プロの世界では、どれも大きな問題になります。
しかし小学生や中学生がプログラミングを学ぶ上では、ほとんど問題になりません。
まとめ
Scratch(スクラッチ)という現代のビジュアルプログラム環境なら、小学生でもすぐにプログラミングを始められます。命令や文法を覚える負担が少なく、ミスも出にくいため、コンピューターを使った創作や実験、問題解決にすぐに取り掛かることができます。
こうした従来のプログラミング言語には無かった特長から、小学校のプログラミング教育で採用されることが多いです。そして、これらまもますます採用されるでしょう。
余談 アルゴリズム
1~100の整数の和を求めるプログラムは色々な書き方ができます。
もっとも原始的というか、プログラムらしくないのが次の計算式を書いてしまうことでしょう。
1+2+3+・・・+99+100
もちろん、これは悪いプログラムです。人間の仕事がちっとも楽になっていないからです。プログラムにするくらいなら電卓をたたいが方がその場で答えが出ます。
そして応用もできません。もしも「10000までの和を求めよ」ならば、お手上げになってしまいます。一方、上で見たプログラムなら、100を10000に、あるいは101を10001に変更するだけで実現できます。
しかし、実は上のプログラムも優れているとは言えません。
高校生ならば1~nまでの整数の和の公式 $\frac{n(n+1)}{2}$ を知っています。
これを使えばプログラムをさらに短くできます。しかも繰り返しを必要とせず、1回の計算で答えが出せます。
この様に、同じ計算をするプログラムでも、どのような数式を使うかで、計算の効率や速度が大きく変わってしまいます。「10000までの和」で言えば、およそ10000万倍の差がついてしまいました。
プログラミングに利用する計算式のことをアルゴリズムと言います。
コンピューターの性能を進化させるのはCPUやGPUの性能アップだけではありません。アルゴリズムの進化でもコンピューターの性能が飛躍的に高まることがあるのです。コンピューターの歴史には数学の歴史も深く関係しています。
良いプログラマーとは、良いアルゴリズムを考えられる人のことでもあります。
良いプログラマーが増えれば、コンピューターの処理が速くなり、しかもエネルギーの節約にもなります。
名古屋市天白区の植田で塾を探すなら、日進市赤池で塾を探すなら、個別指導のヒーローズ!!
★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL
――――――――――――――――――――――
個別指導ヒーローズ 赤池校
〒470-0125
日進市赤池1丁目3002 福岡ビル2F
TEL:052-808-0552