「構造」を見る人と見ない人

オブジェクト指向言語xhtml+cssのような文書の構造と見た目を分離したマークアップは、どちらも俺の予想より普及のスピードがはるかに遅い。

両者とも以下の点で、初心者にとってハードルが高いことはわかっているつもりだ。

  • 導入、修得のためのコストが高い
  • 新規作成の時は従来の方法より工数がかかる
  • アウトプット(プログラムの時系列的な動作と表示結果)と記述が直接的に対応していない

しかし、自転車と自動車にも似たような違いがあるが、ある程度の訓練期間と費用がかかっても、みんな黙って免許を取りに行く。自動車が自転車のように運転できないことに文句を言う人はほとんどいない。

趣味仕事を問わず、これだけプログラミングをしたりホームページを作る人が増えているのに、どうして自転車のような手軽なソリューションに固執する人が多いのかが不思議である。明らかに自動車で移動すべき距離を自転車で移動したり、自動車で運搬すべき重量を自転車で運搬している人がたくさんいる。

時間が解決する問題だと思っていたが、時間も解決に手間取っている。ここには何か、俺には見えてない障害があるようだ。

オブジェクト指向と論理マークアップの共通点として、「見えないものの本質的な構造」を意識する必要がある、ということがあげられる。あるメソッドがこのクラスやオブジェクトに所属することは正しいか?この段落は分割したり移動したりする必要がないか?こういう問題を解決するには、対象とする問題の本質について考える必要がある。

そのような「本質の追求」を余分な作業と考えるかどうかで好みがわかれるのではないだろうか。物事に本質や重層的な構造があると自然に意識している人間にとっては、「物事を理解する」というプロセスの中には自然と「本質の追求」が含まれている。そういう人間には、そのプロセスを自然に記述できるオブジェクト指向言語や論理マークアップは、大変便利なツールだ。彼らにとって修得のコストは、単なる記法の修得でしかなく、覚えてしまえば問題の整理やコミュニケーション等で副次的なメリットがたくさんあると感じる。

しかし本質の追求や深層構造の理解をする習慣のない人間にとっては、それが余分な作業になる。そのプロセスを実際の作業以上に負担に感じるのだ。

おそらく、「本質」とか「構造」という言い方は自分の陣営からの見方だと思う。この表現では相手側に響かないような気もするが、何か無意識的な認知のクセみたいなもので、適性がわかれるような気がする。オブジェクト指向言語と論理マークアップを推進する人は、もう少し適用範囲を絞りこむべきかもしれない。そのメリットを直観的に理解できない人に普及することには、もう少し慎重になるべきかもしれない。

そして、Javaが変なふうに膨らんでいく原因のひとつがこれなのかもしれない。