(2021.9.14 記)
(プログラミング初心者向け)
2020年度から小中高の授業でプログらミングを扱っていくようで、しかも大学の入試試験にも一般科目で出題されるらしい。
また、副業やフリーランスとしてのプログラマもよく見るようになり、この日本社会においては今プログラミングスキルを求める人が多くなっている気がします。
ただし、「プログラミングスキル」は「ロジカル思考力」が身についてから活きてくるスキルであり、一般的にこの思考力を「プログラミング脳」と呼んでいます。
つまり、プログラミングができるようになりたかったら、まずはこの「プログラミング脳」を作らないと始まらないということです。
スポーツで例えるなら、プログラミング脳=筋力のような関係で、まずは筋トレから!といった感じです。
そこで今回は、プログラミングを教える立場にいた経験をもとに、プログラミング初心者の方向けに、プログラミング脳のつくり方や鍛え方を述べていこうという内容です。
※人によって差があり、ロジカル思考が最初からできる人と、どれだけやってもできない人がいます。ですので、誰でもプログラミングができるわけではありません・・・
0.プログラミング(プログラミング言語)とは
そもそもプログラミングとは、コンピュータにしてもらいたいことを書き並べることで、いわばコンピュータに対する指示書のようなものを書く作業と言えます。
この指示書の書き方といったものがプログラミング言語になってきます。
ですので、書いてある指示書の内容は、どのプログラミング言語でも変わりません。
指示する場面に合った言語を取捨選択しているに過ぎない、という感じです。
コンピュータはというと、実際のところ指示書を上から順に実行しているだけです。
ですので、「コンピュータにしてもらいたいこと」に対して、そのスタートからゴールまで順序立てて指示書を記載する能力が、「ロジカル思考力(プログラミング脳)」となります。
指示内容が複雑になるにつれて指示の仕方も複雑になってくるのですが、その内容をどこまで順序だてて書き起こせるかという能力度合いがプログラミング脳の力となります。
ですので、プログラミング脳が鍛えられてくると、より複雑な指示書が書けるようになる、といった感じと私は捉えています。
その最終形がプログラマなのかな?と。
次項から、プログラミング脳のつくり方と鍛え方について述べていきます。
1.プログラミング脳のつくり方
順序だてて物事を考える力を身に着けること、が大切になってきます。
手始めに行うといいと思うのが、「数学パズル」と呼ばれるものです。
順序だてて考えないと解けない数学のパズルなので、これをやりまくれば自ずと身に着くと思います。
最近だと「プログラミング脳を鍛える数学パズル」という、ピンポイントな代物もあるので、これらをいくつか解いてみるといいでしょう。
2.プログラミング脳の鍛え方
より実践的なプログラミング脳へ近づけるためには、実際にプログラミングに触れるのが早いと思います。
が、いきなりガチガチにコードを書くのはハードルがめちゃくちゃ高い・・・
このギャップが多くの人を苦しめてきた感があります。
しかし、最近だと教育系でよく目にするのが「Scratch」というアプリケーションです。
プログラミングで言ういわゆる文法(条件分岐とか、ループ文とか)をパズルのブロックのようにして、パズルを組み合わせるようにしてプログラムを作る「ブロックプログラミング」と呼ばれる代物です。
Obnizの時にこのブロックプログラミングに触れた際、「これめちゃくちゃ初心者にわかりやすいな」と感じたので、ここでもオススメします。
要は、プログラミング言語特有の”クセ”がなく、ロジカルに文法のパズルを組み合わせていくだけで動作するので、純粋にロジカルな思考力を鍛え磨いていけます。
以下がScratchのサイトで、一応Web上でも動作するので、実際試しに何か作ってみると分かり易いと思います。
サイトは、こちらより飛んでいけます。
以下が、そのサイトのトップページです。
上部ヘッダの「作る」から、実際のコーディングができます。
最初に起動すると「チュートリアル」が見れます。
自信のない人は一度見ると良いでしょう。
以下画面が実際の起動した様子です。
「コード」のタブから文法のパズルを選び、組み合わせて指示書を書き、この右のネコ?のような生き物を動かしたり変化させたりして遊びながらプログラミング脳が鍛えられるわけです。
色々弄って遊んでみてください。
地味に楽しい・・・(笑い)
(もし面白そうなのが作れたら動画載せておきます。)
3.最後に(プログラマに必要なもの)
ブロックプログラミングでもある程度複雑な処理ができるようになったら、あとは”言語”そのものに触れて言語の”クセ”を理解すれば、プログラマへの扉が見えてきます。
ブロックプログラミングの各ブロックを、各々のプログラミング言語で書き換えてあげるというイメージですね。
そこまで行けるようになったらプログラマです、やったね!
以上。
(不明点あればコメント頂ければ、可能な限りお答えします。)
コメント