2008/09/16

Hello World

ソフト屋の仕事シリーズその4。
最後に書いたのが5月。趣味のプログラムに走ってしまい更新していませんでした。久々に書いてみたい。

ソフト屋の、一番のお仕事といえばやはりプログラミングです。プログラミングとはコンピュータに作業の手順を教えること。
なぜ人が指示したとおりにコンピュータが動くかと言うと、そういうふうに作られているからといってしまえばそれまでなんだけど、コンピュータが以下の要素を持っているからであると言えると思う。
・何百、何万行もあるメモ帳
・次に読むべきメモ帳の行番号を覚えている場所
・メモ帳に書かれている命令を実行する能力

メモ帳には最初、人間がいろいろな命令を書き込んでおきます。コンピュータは最初の行からそれを読み、1行読むごとに次の行を読み進めていきます。
各行に書き込むことのできる内容は様々で、例えば「メモ帳の100行めに10って書いといて」とか、「200行目の中身が50になってたら、次に読むべき行は1000行目ですよ」とかいろいろできます。特に2番目の例は重要で、この能力のおかげでコンピュータは普通の機械とは違い『場合によって動作を変える』ことを実現しています。
この、メモ帳に書かれた命令の羅列がプログラム。命令をどういった順で並べるのかを考える作業がプログラミングということになります。

パソコンもプログラムによって動作しています。
パソコンの画面は細かい点がそれぞれ違う色を出してウインドウや文字や絵が表現されているけど、これもコンピュータが「左上の点は青を表示」「その隣はグレーを表示」とか一行一行メモ帳を読みながらちまちまと処理しています。
キーボードの読み込みも「キーが押されてたら次は2000行から読み始めてね」「押されたのがAだったら今度は2500行に行ってね」とかいう感じでコンピュータそのものは非常に地味で単純な作業をひたすら繰り返してます。
そんなことでパソコンが動くのか?とちょっと心配になるかもしれない。でも大丈夫なのです。なぜかと言えば、例えば1GHzのCPUなら1秒間に10億もの行を読み、実行することができるから。
細かく単純な作業を無数に組み合わせて、パソコンは画面を表示し、音を出し、キーボードやマウスの監視をし、ネットワーク通信を行っています。そんな風にしてパソコンは動いている。すごい。


さて、その1その2その3で説明してきたような手順により、何を作るかが明確になったところで実際にプログラミングの作業に入ります。

 if (eKeyCode == KEY_UP) {
  if (ucVolume < VOL_MAX) {
   ucVolume++;
   SendMail(TASK_SENDMESSAGE, MES_SET_VOLUME, ucVolume);
  }
 }

C言語ならこんな具合。
こうやって設計を見ながら実際にプログラミング言語で動作を作り上げていくことを「実装」と呼びます。

機能の実現のためにどう書くべきか考え、まとまればひたすらキーボートをタイプしてコードを書き連ねて行きます。動作を確認できるところまで作りこんだら実際に動かしてみる。
うまく動かなければダメな原因を突き止めて直していく。上に書いたぐらいの短いコードでも、『==』を『!=』と書いてしまったり『>』と『<』を間違えたりというちょっとした事でまったく動きが変わってしまうポイントが何箇所もあります。
プログラミングのミスのせいでまったく意図していない、わけのわからない動作をすることもあります。いわゆる『バグ』っていうやつです。
バグはプログラムを書いていく限り必ず生まれると言われてます。プログラマがどんなに真面目でも天才でもメガネでも、どこかでミスしてしまうらしい。詳しくは品質工学とかそういう本を読むと載ってると思う。

設計書をにらみながら、発生するバグをちぎっては投げちぎっては投げ、「どこまで出来た?」とか言ってくる上司をかわしつつコードを書く。
実装作業はプログラマという職業をやっていて一番苦しく、そして一番楽しいところなんじゃないだろうか。昔は「プログラマ30歳定年説」とかあったけど今はもっと伸びてる気がします。仕事でやれるうちは続けたいな。


過去の記事
その1 マイクロコンピュータ
その2 要求定義
その3 設計