仙石浩明の日記

2006年4月22日

開発環境とプログラミング能力

開発環境の進化が、 プログラマのプログラミング能力を退化させていると思う。 私は、いわゆる統合開発環境というものを使ったことがなく、 いつでも emacs を愛用している。 しかも画面サイズは 20年来 80桁x24行のままである。

プログラミングは、メモを書きながら設計したあと、一気に書く。 設計さえきちんとできていれば、途中で手が止まることはあまりない。 食事も忘れて何時間も没頭することがよくある。 そして書き終えてたらコンパイル。 タイプミスとか変数宣言し忘れとかで出たコンパイルエラーを ひとつずつ修正。

で、コンパイルに成功したら実行させる。多くの場合、これで動く。 一通り動作確認して、期待しない動作をするところがあっても、 ほとんどの場合ソースを参照するまでもなく原因に思い当たる。 たいていの場合、デバッガを使うまでもなく、 ソースを見直すだけでどう修正すべきかも分かる。

という話をすると、奇異な目で見られてしまう。(^^;)
目視だけでデバッグと題するページで、 私と同じような感覚の人を見つけて安心した。

たいていの人は、デバッガでステップ実行させて、 実行中の変数を参照したり、 値を変えてみたりしてプログラムを修正するのだという。 たしかに頭の中でプログラムの動作を追うより、 デバッガを使って実際に動かしてみるほうが楽かもしれないが、 それでプログラミングスキルが伸びるのだろうか?

まるで、将棋を指すとき対戦用の盤面とは別に、 相手の指し手の可能性を検討する盤面を脇に置いて、 次の一手を検討しているようなものではないか。 そんなことをしていたら、 次の一手を考えるのに膨大な時間がかかってしまうし、 頭が鍛えられないので上達も難しいだろう。

プログラミングも同じ事。 頭の中に仮想的にデバッガを構築して、 無意識の思考でプログラムを実行させることができなければ、 いつになってもプログラムを見通す洞察力は身につかないだろう。

Filed under: プログラミングと開発環境 — hiroaki_sengoku @ 11:24

5 Comments »

  1. 私もエディタとprintfだけで十分です。(^^)
    この問題は”木をいぢりながら森を直感でイメージできているか?”だと考えます。
    デバッガで目の前だけを追う癖がつくほどに視野は狭くなり、いくら部分を修正し、
    最適化しても、そのために全体の論理が捻れてしまってはバグは尽きないでしょう。

    Comment by 寺尾創 — 2006年4月22日 @ 19:08

  2. trackbackありがとうございます。
    > しかも画面サイズは 20年来 80桁x24行のままである。
    それはさすがに凄いですね…。
    私のほうは、プログラムは28年近くやってますが、最近はquinary display(5画面)で開発してます。
    それはそうと、書かれている記事の本文に非常に共感を覚えました。何かご縁があれば、お仕事を一緒にしてみたいです。

    Comment by やねうらお — 2006年4月22日 @ 19:29

  3. こちらも周りを見ても8bit時代の貧弱な環境からスタートした人とWindowsからスタートした人で大きく差が開いていますね。
    ステップ実行は私もほとんどしないたちなのですが、8bit時代のマシン語いじってた人間は間違えれば暴走する、というのになれすぎて、流れを読むのは当たり前となっています。
    何でステップ実行でデバッグしないの?といわれるんですが、ステップ実行しまくる人よりはるかに早く、そしてバグも少ないので問題はないですね。
    そもそもスクリーンエディタをはじめて触ったときこんな便利なものがあったら堕落すると思いましたけど。

    Comment by とおりすがり — 2006年4月27日 @ 00:37

  4. 私がはじめて使ったスクリーンエディタは WordMaster (WordStarを単純化したテキストエディタ) でした。はじめてスクリーンエディタというものに触れて、行頭に行番号をいれずに、しかもリターンキーを打たずに入力できることに無茶苦茶違和感を覚えました。
    リターン打たずにカーソルキーでほかの行に移れるなんて!! と落ち着かない気分だったのを今でも覚えています。

    Comment by 仙石浩明 — 2006年4月28日 @ 08:14

  5. プログラミング能力 関連情報

    昨日と今日のエントリを書くに当たって,参考にしたものを挙げておきます. 永野和男 / プログラミングを通して学ぶ「論理的な思考力と問題解決能力」: 「プログラミングの経験は論理的な思考力や、順序だてて問題解決する能力を育成することが知られています。」から始まる

    Comment by たけひこ日記 — 2007年9月4日 @ 05:49

RSS feed for comments on this post.

Leave a comment