ルール14コードには種類が4つある
ここで、過度に単純化されてはいるものの依然として有用な、コードについて考えるためのモデルを紹介しよう。解かなきゃいけないプログラミング上の問題が、「やさしい」と「難しい」の2種類あると想像してほしい。
「やさしい」問題とはどういう問題か、もう察しがついていると思うが、とりあえず一般的な例をいくつか挙げよう。「数値の配列から最大値と最小値を求める」「ソートされた二分木にノードを挿入する」「配列から奇数の値を取り除く」あたりだ。
「難しい」問題も、簡単に見分けられる。例えばメモリーの確保で、要は「C言語の標準ライブラリーであるmallocとfreeの実装」だ。後は「スクリプト言語の構文解析」「線形制約問題ソルバーの作成」とか。
さて、ここで定義した「やさしい」と「難しい」は、実際には連続的範囲内の2点にすぎず、範囲の端の極点というわけでもない。例えば、2つの数の和を求めるとか、「やさしい」問題の例よりさらにやさしい、自明な問題もある。また、ジャーナリング†1ファイルシステムをゼロから作るとか、「難しい」問題の例よりずっと難しい問題もある。
†1 訳注:ジャーナリング(journaling)とは、データ書き込み時に、ジャーナル(journal)と呼ばれる変更履歴のログを別途保存すること。ジャーナルには書き込む実データや実データの属性を記述したメタデータを含めることができ、ジャーナルを利用してある時点の状態へロールバックしたりできる。
でも、この「やさしい」と「難しい」の2点は、有用だ。「やさしい」と「難しい」の間には、プログラマーが日々解決している問題のほとんどが存在している。参考までに、ぼくはここで挙げた例の全部について、解法を書いた。いや全部じゃない、ジャーナリングファイルシステムをゼロから構築するってのは除く。とはいえ、それもやってみれば面白そうだが。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access