ビジネス WinDbg入門 Windowsカーネル分析ノート


コーディングの基礎

 コーディングはアイデアの表現プロセスであるといわれ、この場合、コーディング以上に、アイデアが重要であることが強調されます。しかし、アイデアが決まれば、表現プロセスが重要な意味を持ってきます。ソフトウェア技術者の出番です。ここで、ソフトウェア技術者に要求されることを考えてみましょう。

 要求されるのは、アイデアを理解する能力でしょう。アイデアは自分で考え出したものかもしれません(パッケージ販売など)。他人が考え出したアイデアを表現することもあるでしょう(受託開発など)。いずれにしても、アイデア(仕様)を理解し、それをコーディングすることになります。大切なのはなんでしょうか。C++の詳しい文法でしょうか。ポインタや配列の知識でしょうか。

 理解した内容がそのままストレートにソースコードになることが望まれます。筆者は、たとえば、Windowsの新機能や問題点を多くの人と話し合っているとき、"その問題のソルーションはああすればソースコードに落ちるな"と考えてしまうことがあります。この思考プロセスを冷静に振り返ると、一種の"データの抽象化作業"を行っていることがわかります。データ抽象化については、この記事を参照してください。

 言語機能はそれが適応されるコンテクストとともに学ぶこと。これはStroustrup氏(C++設計者であり、実装者)が常に強調することですが、この線に沿った教育用記事とソースコードを公開している人を紹介しておきましょう。

 その人は、Chuck Allison氏です。同氏の記事の説明は分かりやすく、公開されているソースコードもそのまま現場(アイデアの表現)で応用できるでしょう。私たちが現在読んでいる論文はAllison氏の勧めで起草したものである、とStroustrup氏は「Acknowledgements」で述べています。Allison氏は、Stroustrup氏を尊敬し、Javaを語る場合も、Stroustrup氏の視点を重視しています。

 コーディングの基礎。それは表現しようとするアイデアを理解することです。CとC++をはじめとするほとんどのプログラミング言語には、"関数"というものがあります。関数は一般的には、"あるデータを受け取り、それを基に必要な処理を行った上で、結果を返す"と定義されていると思います。ところが、Stroustrup氏は、"関数は、プログラムを組織化するための道具"と説明しています。つまり、アイデアを分かりやすく表現するための道具、と考えているのです。また、Stroustrup氏は、C++の醜い構文は意図的に醜くした(つまり、設計した)、と述べています。JavaやC#をはじめとする現代のほとんどのプログラミング言語に多大な影響を与えているC++の誕生と発展の過程にはいろいろな事情があります。C++の歴史や発想に本格的に触れてみたい方は、この連載リストに含まれているC++関連連載を多少時間を掛けて読んでみるとよいでしょう。

次回はコーディング技術を学ぶための参考図書を紹介します。"言語文法を学ぶ"ということではなく、"言語の表現発想"を学びましょう。
前へ | 次へ


 WinDbgアプリケーション開発独習講座  ホーム


Copyright©豊田孝 2004- 2008
本日は2008-11-22です。