プログラミングを学ぶ意義

俺のまわりには文系人が比較的多いので、プログラミングをしていることを話すと天上人扱いされることがしばしばある.「私にはとても理解できる分野の話ではない」とみんなハナから思い込んでいるようだ.しかし何かしらのプログラミングを経験したことがある人は、プログラミングなんてやってしまえばたいしたことはないと感じているのではないだろうか.

人力検索はてなに「コンピュータを使うすべての人々がプログラミングを学ぶべきだと思いますか? 何故そう思うのか何故そう思わないのかなど、お考えをお聞かせください。」という項目があったので、のぞいてみた.割合からするとプログラミングをすべての人が学ぶ必要性は無いという意見が多い.ちなみに俺はすべての人がプログラミングの素養を持つことに賛成したい.理由は参照先で述べられていることとほとんど同意であるが、このエントリでは自分なりの意見を書いてみようと思う.

プログラミングの例え

まずプログラムとはなんだろう.論理の集合体のようにイメージしている.あーすればこーなる、こーすればあーなるという論理を延々と書き連ねたコンピュータの動作仕様書のようなものだ.ちなみに上の人力検索の項目ではプログラミングを自動車を作ることに例えてすべての人が勉強する必要性がないと回答した方が居ましたが、むしろプログラミングは自動車の運転技術・法則に例える方が適切な気がします.

  • 自動車 = コンピュータ
  • 運転者 = ソフトウェア
  • 環境(目的地の存在や道路・運転環境) = 入力

この図式の方がしっくりくるのではないでしょうか.ということはプログラミングができない人はコンピュータをちゃんと使えてないとは言えませんかね.論理の飛躍ですか.そうですか.そうかもね・・・*1

適用可能領域

次に考えたプログラミングを学ぶべき理由は、プログラミングの現場で必要とされる能力や方法論がそれ以外の分野でも武器として用いることのできる可能性があることだ.たとえば、あーすればこーするこーすればあーするという仕様書を書き連ねる作業は物事を筋道立てて考える力を鍛えることができそうだ.
他にもある.プログラミングでは大きな問題を細かく分割して誰にでもすぐ理解できるサイズまで刻み、単純化した細かい問題を解決した結果をズラーっと再構成することで課題を達成するといった方法論が採られる.この方法論は現実でも有用な場面が多いことは容易に想像が付く.でも実際に大きな問題にブチ当たった人で、問題を小さなサイズに落とし込んでひとつずつ潰すといったプロセスを採るのはどれだけのもんだろうか.そんなこと思いつきもせずに諦めてしまう人もさぞかし多いことだろう.*2
ちなみになんで数学を学ばなければいけないのかという問いによく論理的思考力を養うためとか言われるが、プログラミング教育はそれをより実践的・能動的に養うことができる優れた手法ではないだろうか.*3また数学教育の一部をプログラミング教育に置き換えることができたら、日本のIT技術者不足も一発解決かもしれない.

即効例

上でプログラミング教育でIT技術者不足の解決とか言ったけど、効果はそれだけじゃない.今の時代、あらゆるオフィスでパソコンが使われ、それを操作する人のほとんどはIT技術者などではない.(たぶん)そういう人たちがどんなソフトを使っているかと言えば、マイクロソフトのOfficeだったり、クリエイターだったらフォトショップやShade、CADなんかだったりだろう.
そういう現場で同じパソコン、同じソフトを使っているのに作業効率が桁違いに違う人がいる.このネタはよくid:fromdusktildawn氏のブログで取り上げられるのだが、そういう人は同じ処理をいつも手作業でやる人がいる一方で、マクロを組んで(プログラミングして)そういったルーチンワークを片っ端から自動化して作業を早く片つけるのである.
エクセルを使って経理の仕事でもする人が二人いるとしよう.*4エクセルファイルの中で会社の売り上げが記されたセルを修正する作業をする際、一人はファイルをひとつづつ開いて目的のセルを探しキーボードで正しい値に修正していく、かたやもう一人は修正前の数値などをもとに修正すべきセルを特定し自動的に修正するマクロを実行するでしょう.修正数が少なければ大した時間差にはなりませんが、一度作ったマクロは何回でも再利用できるのですから、二人に同じ作業をさせればさせるほどそれまでに同じ仕事に従事してきた時間の差は歴然でしょう.
もしコンピュータを使う仕事に従事している人みんなプログラミングができたら、とてつもなく大きな価値がそこから生まれてきそうです.

俺もid:fromdusktildawn氏に毒された身というやつなのかなぁ

補足

日本の情報教育・情報処理教育に関する提言2005にはこのエントリで言及したことを専門家がより幅広く記述した、2005年度の情報教育に関する政府への提言文書があります.このエントリに興味を持たれた方はこちらもご覧ください.
通りすがりの方、ご教授ありがとうございます.

俺の考え方はまだまだ遅れてるなぁ.

*1:ここんとこの論理はちゃんと書けそうなんだが、時間もなくいい表現が思いつかなかった.いつのまにか書き換えるかも.

*2:自分だって例外ではない.大きな問題に直面してどうすりゃいいかわかんないし、めんどくさいしで、放棄した経験あるでしょ?

*3:教育現場で生徒にプログラミング言語の文法まで覚えさせることまでするのは非効率的な気がする.そう考えるとBASICも捨てたものではない気がしなくもない.

*4:Idiosは経理の人がどんな仕事してるのかさっぱりですが