①プログラムはいろんな事を考えて作ります

2022-3-18
パソコンのパーツ プログラムとは、コンピュータ(CPU)が理解できる言葉(機械語)で手順(命令群)を書いたものです。コンピュータ(CPU)は0と1(デジタル:2進数)しか読めず、機械語も0と1なので人間も0と1でプログラムを書かないといけません。しかしそれは大変難しいので、プログラム言語(Java言語★1やスクラッチ★2)で書いて、これを翻訳(コンパイル)し機械語にして実行しています。
 さらにコンピュータができること(機械語)はごく簡単な一つの処理の命令が、複数種類あってこれを組み合わせて命令します。よってコンピュータが分かるレベルまで、より細かく手順を分解し、仕組みを作らなければ動きません。では実際にプログラム化する手順をご紹介します。

「自分と敵が交互に攻撃する」をプログラム化するためには…
①「交互に」とはどういうことだ? → 攻撃順番を数字で決めよう
②「攻撃順番の保存」が必要 → 0を自分、1を敵の順番にしよう
 (攻撃順番の保存をする箱変数といいます)<大事な概念>
③「攻撃順番」変数に名前が必要 → 自分の順番・turnという名前にしよう
④最初は自分の攻撃から始めよう → 最初に攻撃順番に0を入れよう
⑤攻撃している間、相手は何してる? → 普通は防御をしてるはず
⑥ここまで考えて明確になったら、まず「スクラッチ」★2で作ってみます
スクラッチでIF(小学校や一般のプログラム教室が行っているのがここまでですね)
⑦次に「Java言語」★1で同じことを作ってみます
Java言語でIF(中学校以上で本来ここまでやることを想定しています)
⑧「攻撃順番の変更」を数式「1-turn」にすることで、さらにシンプルにできます
Java言語でIF 例えばturnが0の時「1-0」で1に、turnが1の時「1-1」で0に変更できます
 こういう使い方はプログラマならよくやるのですが、経験の少ない方では指導できないですね。

 このようにプログラムは命令の使い方を覚えるだけではダメで、言葉に表現されていない裏の処理を考え、それらをどう使って全体の流れを作るか(ゲームとして遊べるか)を考えて作る経験が必要です。しかも何度も繰り返すことでしか、身につきません。
 ネットや本の知識だけで独学で学んでいくと、それなりに動く物も作れますが、他の人から見ると何をやっているか分からないプログラム「スパゲッティプログラムになりがちです。初めてのことを学ぶときは何でもそうですが、プログラミングは経験者のアドバイスを受けながら学ぶことを、特にお勧めします。

【文中補足説明】
★1「Java言語」世界で一番使われている高水準言語。言語ごとに得意な分野がある。

★2「スクラッチ」無料のビジュアル言語。簡易的なので作りやすいが、大事な知識が身につかない。
スクラッチでIFhttps://scratch.mit.edu/
 
 本校でも3月末までの限定で、プログラム体験とご入学でAmazonギフト券をプレゼントするキャンペーン中です。プログラムでゲームを作る手順を、ぜひお楽しみください。

プログラムの学び方は確立していませんが、

2022-03-14
 世界中でプログラミング教育が行われていますが、効率的な指導方法は確立していません。しかし、いくつか訓練法はあります。私の経験知で言えば、
①タイピングを練習
②開発環境を整える
③完成した短いプログラムをまねて入力
④入力を見直し(デバッグ)、完全に動くようにする
⑤処理内容を見直し、手順を理解する
⑥自分なりに新しい要素を追加し、動くようにする
⑦別の機能のプログラムで③~⑥を繰り返し練習
⑧いちからオリジナルプログラムを完成させる

 このようにプログラミング習得には実際に入力し、試行錯誤しながら理解するしかないと思います。その際にコンピュータでも分かるレベルまで、細かな手順に分解し、単純な表現(国語)や計算方法(算数)、物理・科学法則(理科)、正しい英単語(英語)などを使い、プログラムを作ります。そのために知識を学び直すことで、これまで学校で学んできた公式等の使い方を知り、計算方法や自然法則を画面上に再現します。
 さらに意見交換するためにコミュニケーション方法も鍛えられ、それで引き出されたアイデアや意見、また先人のプログラマーたちが構築してきた書き方を教えられることで、より単純で、バグの少ない優れたプログラムに洗練されていきます。

 しかしプログラム知識習得には、大変時間がかかります。私もそうでしたが、合点がいくまでは何が何だか分からない状態が続きます。が、突然霧が晴れたように分かり出すと皆さん言います。週1回程度であれば、自分で自由に作れるまで半年近くの覚悟は必要です。
 逆にもし身につけられれば、ライバルは追いついて来ず強力な武器となります。さらに1つのプログラム言語を学ぶと、他の言語も容易に習得できます。

 ごく近い将来に、AIやロボットに身近な仕事が次々と奪われていきますが、それに対抗するために必要といわれているのが、自ら新しいものを生み出せる「創造性」、自分で考え行動できる「問題解決力」、そのための「論理的思考=プログラミング的思考」と言われています。
 日本を含め世界中でプログラミング教育が行われる目的はこの習得といえます。これまでの正解を選ぶための教育法では新たな課題への対処法は育成できませんが、プログラミングならば訓練→育成ができるのです。プログラマーにならなくてもその考え方を仕事に活用できますから、スペースX・テスラのイーロン・マスク、グーグルのラリー・ペイジ、アマゾンのジェフ・ベゾス、フェイスブックのマーク・ザッカーバーグ……今をときめく経営者がプログラマー出身なのも偶然ではありません。ですから子どものうちからプログラムを学ぶことには、大きな意味があります。

 福岡の小中学校の話を聞くと、ほとんどのプログラミング授業は停止していますから、プログラミング教室に通う方がいいと思います。最も数が多い「ロボット・ものづくり系教室」は手先の器用さの影響が大きく、初期費用も高くなりがちなので、授業内容をよく聞いて指導力を納得して選んでください。

 本校でも3月末までの限定で、プログラム体験とご入学でAmazonギフト券をプレゼントするキャンペーン中です。プログラムでゲームを作る手順を、ぜひお楽しみください。