新しいプログラムのライブラリを作っている T です。こんばんは。
こういうチマチマとした部品を作るのは大好きである。
プログラムで何度も利用する処理は、サブルーチンや関数としてまとめられる。これらは数学の定理に似ている。幾何の証明で、一々ピタゴラスの定理を長々と書く人間はいない。「ピタゴラスの定理から〜」で済む。そういうところが、関数に似ているという話。
定理は全て、自明の公理から導かれる。公理には、互いに矛盾でない、互いが互いを証明できない、という性質がある。それでは、プログラムにおける公理というものも存在するのではないか。例えば乗算は、加算の繰り返し関数で実装できる。
a × b
の値 answer
を求める関数 multiplication
を考えてみる。
answer = multiplication (a, b);
multiplication (a, b) {
for (i = 1; i < b; i ++) { a += a; }
return a;
}
まことにつまらない例だが、公理に近いものさえ覚えてしまえば、簡単なプログラムは大抵できてしまう。膨大なコマンドに挫折してプログラミングを諦めるのは、歴史年表を語呂合わせで覚えようとして失敗するのに似ている。
あくまで素人レベルの話だが、バンバンと小さな関数を書くことが、プログラム上達の早道かもしれない。自前で関数を書いていると、そのうち面倒になってくる。そこで初めて、探すなり調べるなりすれば良い。利用頻度が高いくせに難易度の高い関数などは、必ず先人が用意してくれている。
だからといって、最初から関数をコピー・ペーストで使おうと思っても、絶対に上手くいかないんだよなあ。ピタゴラスの定理でも、最初は自分できちんと証明するのと一緒で、やっぱりある程度は自分で書かないとね。
終日病院。細胞から核タンパク質を抽出。今日は大漁。いつも同じようにしているつもりなのだが、どうも収量が不安定である。細胞質なら、そんなことはないんだけどな。