新人技術者のためのロジカル・シンキング入門(2) ―― プログラミングにおける良いデータ構造
【4】アカデミックな知識について
ここで,ソフトウェア工学でいうところの本来(?)のデータ構造の議論についてひと言.大きな書店の情報科学のコーナを訪れると,「データ構造うんぬん」という題名の書物がいろいろと並んでいます.筆者はコンピュータ・アルゴリズムの専門家ではありませんから,そのすべてに精通しているわけではありませんが,実装において不可欠と思われるデータ構造の検討方法が書かれている本はあまりないように思います(そもそも,アルゴリズムの専門家とは関心分野が違うのだから,筋違いな要求だと言われればそれまでだが...).
● 力点はシステムによって異なる
本稿で紹介したようなデータ構造の管理方針を読んで,「ずいぶん変わったやりかただな」と感じられた方もいるかもしれません.ここで紹介した管理方針はあくまでも1例なので,読者のみなさんが開発を行う際には自分のシステムに合ったデータ構造を考えるようにしてください.自分のシステム設計のデータ構造を決める場合,まず実現しようとするアルゴリズムや機能などがどのような性質のデータを必要としているのかを十分に考察してから始めていただきたいと思います.
例えば,組み込みシステムのプログラムであっても,メモリ量を十分にとれるシステムもあります.そのような場合,ローカル変数によるスタック・オーバフローを心配する必要はありません.
また,スタティック・データの領域確保は,本稿のように呼び出し元で最初に確保しないという設計もありえます.例えば,ライブラリの中の初期化処理において,最初に領域を必要なオブジェクトの数だけ確保しておき,終了処理で削除する方法などが考えられます.
要するに,システムによってデータ構造設計時の力点の置きかたやテスト方法は異なります.みなさんのシステムに適したデータ構造を考える際には,ここで紹介したような管理方針の趣旨をよく理解したうえで,自分のシステムに合ったデータ構造を確立してみてください.