プログラマyasuhoの隠れ家

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

プログラミングの楽しさとは、再び(後編)


中編ではプログラミングに興味を持ったきっかけを書きました。後編ではプログラミングの楽しさについて自分なりにまとめてみたいと思います。

面倒なことが多いプログラム


突然ですが、以下のリストはBASIC言語によるソートのプログラムです。N個の配列Aに入っている数値を小さい順に並べ替えます。

100 FOR I=1 TO N-1
110   FOR J=I+1 TO N
120     IF A(I)>A(J) THEN T=A(I):A(I)=A(J):A(J)=T
130   NEXT J
140 NEXT I


プログラムを書いた人ならご存知でしょう。プログラミングは意外と面倒な作業が多いのです。


トランプを小さい数字順に並べ替えることを人間が行ったとします。人間ならば小さい数字は上に、大きな数字は下にというように、感覚的に並べ替えることが出来るでしょう。これをコンピュータにやらせようとするとどうなるか。


前編・中編で書いたように、プログラムは単純な命令の集まりです。人間のように「この中で一番小さな数は?」とか「この写真から顔だけ切り抜いて」といった感覚的な作業は苦手です。値を取り出す。比較する。交換する。並べ替えをするならば、それを一つ一つの作業に分解し、コンピュータが理解できる命令に置き換えなくてはなりません。この作業がプログラミングです。


例えば上記の120と書いた行を見てみましょう。これは「前後を比較して前のほうが大きかったら前後を交換する」ということをしています。人間なら入れ替えるのは一瞬でしょう。しかし通常コンピュータは「取り出す」「格納する」という作業しかできないものが多いのです。よって、上記リストでは一時的に値を保存するTを設けているのです。


このように、プログラミングは地道な作業の積み重ねです。一見退屈で面倒に見えるこの作業のどこが面白いというのでしょうか。

プログラミングを本当に好きになった理由


前述のソートプログラム。ちゃんと並べ替えはできますが、実はあまり効率はよくありません。このプログラムは「要素の中から最も小さな数を選ぶ」ということを繰り返しているからです。要素の数が少ない場合はあまり問題になりませんが、これが1000個もあったら?50万回あまりの比較が行われることになります。もっと効率のよい方法はないものでしょうか。


プログラムでこんなことがしたい。それをコンピュータで実現する方法のことをアルゴリズムといいます。しかし、その方法は一つではありません。プログラムを動かす環境などにより、ベストと思われる方法が変わることもあります。


プログラムでやりたいことをどうすれば実現できるか。それはどんなパズルより楽しいのです。いや、実はプログラミングがパズルそのものなのかもしれません。あれこれ考える楽しさがプログラミングを本当に好きになった理由です。


自分で考えて作ったプログラムが思い通りに動いた時は、本当に嬉しいものです。特にそれが苦労したものであればあるほど感動は大きくなります。それが人に使われて感謝されたりすると、プログラマ冥利に尽きるといった感じです。こういった喜びを味わいたいためにプログラマをしていると言っても過言ではありませんね。


ちなみにソートについては昔からいろいろな方法が考えられています。現在ではクイックソートと呼ばれる方法が最速と言われていますが、将来はよりよいアルゴリズムが考案されるかもしれません。こんな奥の深さも魅力の一つです。

プログラミングの楽しさとは


プログラミングの楽しさについてまとめると、以下のようになるでしょうか。

  1. 問題をあれこれ考えるパズルのような楽しさ
  2. 自分の作ったものがコンピュータで動いた時の喜び
  3. コンピュータやアプリケーションを思い通りに動かす快感


これは私が楽しいと考えることなので、人によっては違うかもしれません。パズル好きな人はプログラミングが楽しいかな。


ちなみに私はデバッグも大好きです。デバッグとはプログラムが動かない時に原因を探る作業のことです。問題の現象からバグを予測し、時には検証し原因を突き詰めていく過程はどんなパズルゲームより楽しいと思います。もちろん苦しい時やつらい時もあるわけですけど。

最後に


自分の体験をベースにプログラミングの楽しさについて書いてみましたが、いかがだったでしょうか。少しでも楽しさを伝えることが出来たでしょうか。こういうことを文章で伝えるのは難しいと思います。しかし、それでも私が書いているのは、プログラマの将来に危機感を持っているからです。


プログラマになりたい人はだんだん減ってきているようです。多くのニュースが伝えるだけでなく、それは実感として感じています。しかしコンピュータはソフトウェアがなくては動きません。プログラマが減っているということはコンピュータ業界が衰退していくことを意味しています。このような記事を見て一人でもプログラミングに興味を持ってもらえたら。プログラマとして、コンピュータを愛する者として、そう願いたいのです。


私のつたない文章を最後まで読んでいただき、ありがとうございました。