プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

プログラミングを学ぶことに、どんなメリットがあるの?

プログラミングを学ぶことで得られる最大の効果は、論理的思考力だと思う。

久しぶりに、オバマ大統領が2つの話題でTwitterを賑わした。ひとつはもちろん追悼式典会場における自分撮り記念写真の可否問題で、もうひとつは「皆にコーディングを学んで欲しい」という発言だ。

「コーディング教育など無用だ」。そう主張する人に伝えたいこと | TechCrunch Japan

誰もがプログラミングを学ぶべきだとは思わない。人間の思考とはかけ離れている(ように見える)プログラミング言語をこねくり回して、何らかのプログラムを作るという作業は誰にでも喜びが得られるものではないと思う。これは一種のパズルゲームで、これに興味が持てないのであれば、たぶんプログラミングは苦痛にしかならないんじゃないかな。

とはいえ、別にプログラミングに興味はなくても、コンピュータやプログラムの動作原理を理解し、プログラムの作る方を学ぶことには意味があると思う。

どういう意味があるかと言うと

物事の本質を見極められるようになる

コンピュータは非常に単純な仕事しかできない。大雑把に言えば、コンピュータができることは

  • メモリからデータを持ってくる
  • 計算する
  • 計算結果をメモリに入れる
  • 条件により実行順序を変える

ことだけだ。何かをしたかったら、実現したいことをこのレベルまで細分化し、理解しなくてはならない。コンピュータの資源は有限だから、できることと出来ないことを考えて、本当にやりたいことを見極められるクセが自然につく。

論理的思考力が高められる

プログラムの大部分は論理でできている。数学でいうところの証明問題に近い。単純な仕事しかできないコンピュータで複雑な仕事をこなすには、細分化された手順を階層化して組み立てる必要がある。これを頭の中にイメージしてプログラムコードに落としていけるようになれば、もうあなたはプログラマだ(笑)

こういった作業を繰り返すうち、物事を論理的に考えられるようになる。プログラミングに限らず、論理的な思考方法はいろいろな所で役に立つはずだ。

うまくコンピュータやプログラムを使えるようになる

引用元の記事にもあるが、エンジンの作り方を知らなくても車の運転は出来る。しかし、自動車の動作原理を知ることで、以前よりうまく自動車を運転できるようになる可能性がある。燃費がよくなり、車も壊れにくくなるだろう。

プログラミングを学ぶことで、コンピュータがプログラムがどうやって動くかが分かるようになる。そうすると、自分が作ったプログラムでなくても、プログラムの振る舞いが想像できるようになる。使っているコンピュータやプログラムに何かトラブルが発生した時に予測できる範囲が広がる。以前より効率的にコンピュータを使えるようになるんだ。

最初に書いたように

誰もがプログラミングを学ぶべきだとは思わない。興味が持てた人でないと、続けるのはツライと思う。

ただ、学ぶことのメリットは間違いなくあるし、たとえ途中でやめてしまったとしても、学習したことがムダになることはないと思う。特に思考法については新たな知見が得られるんじゃないかな。興味があったら、ぜひやってみて :)