ブロック線図とかUMLとかメンタルモデルとか

ブロック線図は制御工学で使われる図で、入出力を持つ伝達要素をつなげて作られる。私はこのブロック線図をプログラム作成時にも使うことがある。使えるデータと最終的に得たいデータをつなぐ処理の構造を入出力関係だけで書いてみるときに使う。MatlabLabVIEWはブロック線図みたいなのがそのままプログラムになっちゃうがまだ使ったことはない。

ブロック線図はプロセス指向なロジックの書き方だから今時でもないけど、UMLだと処理ひとつひとつに「だれがそれをするのか」という情報がついて回るので、紙の上で考えるときに使うときにはちょっとわずらわしかったりして、けっこうブロック線図を愛用している。

そうして考えたものをオブジェクト指向のプログラムに仕立てるときには結局ブロック線図に出てくる伝達要素=処理=関数のそれぞれに「実行者」を割り当ててやることになるんだけど。

オブジェクト指向至上主義な人にはこういうやり方は邪道だと思われるかもしれないけど、ものを考えるときにはフェーズや問題の種類によって使いやすい概念ツールは異なる。相対性理論が編み出された後もニュートン力学が生き残っているように、単純なツールで十分なところは単純なツールで済ませばよい。そんな異なる概念ツール〜メンタルモデルの共存をお勧めしているのが次の本:

インポッシブル・シンキング 最新脳科学が教える固定観念を打ち砕く技法

インポッシブル・シンキング 最新脳科学が教える固定観念を打ち砕く技法

人間のものの見方は形成されたメンタルモデルが規定しているから、現状を変えようと思ったら自分のメンタルモデルを変える必要があるよね、世界を変えたかったら他人のメンタルモデルも変えなきゃダメよね、といった話の本。タイトルは胡散臭いが中身はそうでもない。ただ、なんかうすっぺらさが漂う。