教えること

プログラミングがエンジニアリングと科学と数学といろいろなところにまたがっている面があるから教えにくいんだよなあ、きっと。化学反応で炭酸ナトリウム製造サイクルを考えたとき、化学反応式としては教科書のはじっこにのるいくつかの反応だけで説明できるが、それを小規模に生成するプラントの設計と大規模プラントの設計はきっとまったく違う(アンモニアを循環再使用する辺りはなんとなく計算機言語チックでもある、かなあ?)。また、それらのプラントを実際に建造し、さらには運用することもまた完全に違う。Smalltalk(に限らないけど)の言語とその処理系の「数学的」定義は2ページにも満たないようなものだけど、スケールすることやちがうプラットフォーム用の設計は異なってくるし、実装は何百倍にも膨れ上がる。というように似たようなものと言えなくもない。

一番の大きな違いは、化学プラントは授業では作らないけど、プログラムはどんな小さなやつでも作って動かすことができてしまうのと、動かすことが目的のひとつになっているということだろうか。化学の実験というよりは技術・家庭に近いのかもしれん。

というわけで、落ちはない。