インターン担当hinanoです!
今回の記事では、そもそもプログラミング学習って何を勉強するの?ということについて考えていきたいと思います。
プログラミングの本質とは何か?
現在アイエスエイプランではインターンを開催しているのですが、
「何の言語を使ってプログラミングをするのですか?」
という質問がたくさんあがってきます。
どの言語を使ってプログラミングすることにこだわることもよいですが、そもそもの使用言語に依存しないプログラミング学習の本質とは何かということについて少し考えてみました。
結論から言うと、プログラミング学習の本質は「アルゴリズムを組む」ことにあると考えています。
少しずつ解説していきます。
まず「プログラミングとは何か」から立ち返ることになりますが、プログラミングとはコンピューターを動かすための命令を指示することです。
ですので、プログラミングに必要なことを要素分解しておくと、
①命令の内容を考える
②命令を指示する
の2つに大きく分かれると思います。
各要素について
次に、この2つについて更に細かく見ていきます。
①命令の内容を考える
最初にこれを実行して、次にこれを実行して、この時はこうしてこの時はああして・・・という実行の手順を命令の内容を考えるフェーズ(工程)で組み立てることになります。このフェーズでの作業を「アルゴリズムを考える」と言います。
②命令を指示する
命令の内容を頭の中で考えただけではコンピューターは動いてくれないので、①で考えたアルゴリズムをコンピューターに伝える必要があります。そこで、人間がコンピュータに指示を伝えるための手段として必要なものが「プログラミング言語」であり、命令を指示するために利用します。
どちらが重要か?
では、この2つを比較したときに、どちらがより重要になるでしょうか。
第1回の記事で言語の違いは「なまり」のようなものだという話をしました。(リンク)
例えば、日本語で何か伝えたいことが決まっていたとしたら、それを標準語で伝えるか大阪弁で伝えるか博多弁で伝えるかということは、本質的には重要じゃないですよね。どの日本語で伝えるかを重要視するよりかは、「何を伝えるのか」という中身や構成の方が大事になってくるのは簡単に想像できることかと思います。
その話に当てはめて考えてみると、①でアルゴリズムが考えられれば、その後の②のどんな言語を利用してのコードの書き方ルールについては、些細なものなのではないでしょうか。
最後に
小学校の授業でもプログラミングが必修となりましたが、これも、小学生に求めていることは「プログラミング言語を利用してでのコードがかける」ことではなく「アルゴリズムを考えられるようになる」ことを重視しての教育課程にて、つまり、「ロジカル(論理的)に物事を考えられるようになる」ことが社会的に重視されているからなのでしょうね。