...

五つの誤解 五つの誤解

by user

on
Category: Documents
8

views

Report

Comments

Transcript

五つの誤解 五つの誤解
Part 1
熊さんのプログラムはなぜ完成しないのか?
バグ/デバッグをめぐる
五つの誤解
横丁のご隠居は町一番の物知り。ある春のうららかな午後,大工の熊さんがノート・パソコンとみ
やげのりんごを持ってご隠居のところへやってきました。いつもはプログラミングに行き詰まって
暗い顔をしてくる熊さん,今日はやけにうれしそう。しかし熊さんは,自分がバグ(プログラムの
不具合)やデバッグについて大きく誤解していることに,まだ気付いていません──。
熊さん(以下,熊):
ん,よくプログラミングしてるヒマあったなァ。
ども! ご隠居,いい日
仕事,最近はヒマなンかい?
よりじゃござンせんか!
これみやげのりんごっ
熊:とんでもない! うちの棟梁(とうりょう)の
評判がいいせいか,仕事は忙しいっスよ。でも,
ス。見 かけは悪 いが減
農薬でうまいっスよ。
ここ数日ちょいとヒマができたんで,久々にち
ょこちょこっとプログラミングをやったんスよ。
横 丁 のご隠 居 (以 下 ,
ご隠居):お,熊さん,
で,もうすぐ完成ってトコで,ちょいとご隠居
のところへうかがおうかと。
いつもすまねェな。で,
ご隠居:ほう,それでいつもと登場の仕方が違
今 日はやけに“にこや
か”じゃねェか。
うってコトかい*1。で,プログラミングが順調
でウキウキ気分の熊さんが今日は何の用かな?
熊:へェ,自分のプロ
グラムがもうすぐ完 成
ちょうど酒屋にツケを払っちまったトコでな。
熊:イヤだなァ,ご隠居。お金を借りる相談な
しそうなンで,心 が晴
ワケないじゃないスか。実は,デバッガの使い
れ晴れとしてるんスよ。
ご隠居:おや,お前さ
方をお教えいただけねェかと思ってまして。
ご隠居:(表情が少し硬くなる)お前さん,デ
デバ
図1●バグをめぐる五つの誤解
40
H 2001年4月号
ッガ
1号
図2●Visual Basicの「デバッグ」メニュー
バグ/デバッグをめぐる五つの誤解
バッガを使いたいってのかい?
熊:いけませんかィ? あっし程度の腕だと,自
分の作ったプログラムのあちこちでバグ(プロ
グラムの不具合)がチョコチョコっと顔を出し
やがって,なかなか自分だけではつぶしきれね
ェんス。その点,デバッガって殺虫剤みたいな
ものっスよね? 油虫にシュシュシュシュシュっ
て吹きかけるようにして使えば,バグなんかあ
っという間にイチコロだと聞きましたぜ。それ
ができりゃ,あっしのプログラムも即完成だと
思ってるんスけど。
ご隠居:(顔をしかめて)どこのだれから聞い
たか知らねェが,熊さんはデバッガを万能殺虫
剤みてェに思ってるってワケかい? こりゃア,
時間をかけてじっくり誤解をといてかなきゃい
イント」の指定,(2)1行ごとに実行させる「ス
テップ実行」
,(3)「ウォッチ式」による変数の
けねェな…(図1)
。
値の監視,くらいのモンさ。
*1 熊さんとご隠居は,1999年3月
号特集「Visual C++なんてこわく
ない」
,2000年3月号特集「なぜあ
なたはプログラムを書 けないの
か?」に続き,日経ソフトウエア
では三度めの登場です。
*2 VBの よ う な 統 合 開 発 環 境
( IDE: Integrated Development
Environment)のほとんどでは,
デバッガはメニューから呼び出す
一機能として提供されています。
熊:でもプログラムってこう,理路整然とした
モンじゃないスか。だったら,フィルタみたい
なものでバグを見つけ出して取ることくらい,
今どきの開発ツールならお茶の子さいさいじゃ
ねェんですかね?
熊:でもご隠居,デバッガ(debugger)って
その名の通り,バグをなくすためのソフトのは
ご隠居:ふん(鼻で笑う)
。試しに,お前さん
のVBでフォームにボタン貼り付けてから,リス
ずじゃないスか。ほら(と持ってきたノート機
を取 り出 す),あっしが今 回 使 っているVB
ト1のコードを書いてごらん。できたかい? じ
ゃ,実行してみ。
(Visual Basic)のデバッガなんて,何やら難
しげで,いかにもご利益満載に思えやす*2(図
熊:ちゃんと動いてますぜ(図3)
。
ご隠居:でも,このプログラムはバグがあるか
2)
。いかにも「デバッガでバグなんて一掃しち
らアウトだ。
ゃえィ」って感じじゃないスか。
ご隠居:ぜーんぜんマトはずれ。じゃ聞くがな,
熊:へ? エラー・メッセージは出ないし,ちゃ
んと動いているじゃないスか。どこにバグがあ
このメニューに「バグ取り開始」って項目があ
るかい?
るんで?
ご隠居:ダイアログの内容が違っとる。日経ソ
熊:えっと…ありゃりゃ,ありませンね。ヘン
フトウエアの発売日は毎月8日じゃなくて毎月
だなァ,そんな項目があったら,それを選ぶだ
けでバグが取れて便利なのに。
24日だ。
熊:そ,それがバグ? プログラムの出来不出
ご隠居:あるワケねェさ。デバッガっつーのは
夢の万能薬なんかじゃなく,もっと単純なツー
来とはぜーんぜん関係ないじゃないスか!
ご隠居:それがどうした? ユーザーが「このプ
ルだ。VBのデバッガにできることは,せいぜい
ログラムはウソをついてる」と感じる以上,こ
(1)特定行で実行を一時停止する「ブレークポ
れも立派なバグなンだよ。
Option Explicit
Private Sub Form_Load()
Command1.Caption = "日経ソフトウエアは…"
End Sub
Private Sub Command1_Click()
MsgBox "毎月8日発売です!"
End Sub
リスト1●このプログラムのバグはどこだ?
図3●リスト1のプログラムを動かした様子。この画
面でバグが何か,わかる人にはわかるはず
H 2001年4月号
41
Fly UP