難しいことは難しくしておくべきかもしれない

Matzにっき(2007-06-04) :RubyよりPHPを好む初心者

本当は難しいことを簡単にできるように思わせるのはかえって罪のような気がする。

ここでも少し書いたのですが、実装を容易にするのは、基本的にプログラマの生産性を上げるためです。ただ、気をつけなければいけないのは生産性を向上するというのは、生産性が向上する前でも、十分実用的なコードを書いていたプログラマの生産性を向上させると提供者・IDEメーカーは言っているのであって、大抵の場合、努力なしである日突然魔法が使えますと言っているのではないのです。(例外はあります。。。)

ただし、IDEやフレームワークが持つ機能は誰に対しても平等に提供されるので、それらの背後で動く仕組みを理解して使うか、魔法として使うかは使う側次第であって、魔法として使ってしまった場合には、必ずと言っていいほど問題が発生します。ループの中で数万回もnewしてオブジェクトのインスタンスを作り、そのうちメモリがいっぱいなり、スワップのインアウトが激しくなり、CPUロードが高くなりすぎて動かないシステムを作ってみたり、何も考えずにORマッパのツールでアドホックなクエリを作って、DBに適切なインデックスが設定されていなかったり、そもそも適切なクエリーでないために、DBの検索や更新に激しく時間がかかり、それを「xxはタコ」とか言ってRDBMSのせいにしてしまったりするのは、魔法によってあまりにもその中で何が行われているか見えないためだと思います。

大事なのは、それらが魔法ではなく、技術の積層によって実現されていること、その技術が何でどう使えばいいのかを、IDEやフレームワークの利用者たるプログラマが正しく理解しておくべきです。その上で便利なったねと言って、これらの技術を使うのであれば問題はそうそう起きません。

したがって、プログラミング初学者には、それらが魔法ではなく、技術の積層だと言うことを教えていく、理解してもらう必要があると思います。自分が魔法使いではなく、技術者であると言うことを理解してもらうには、難しいことは難しいままにしておくのも悪いことではないと思います。

結局のところ、私があれこれ考えると、基礎は大事と言うところに話が落ちてしまうのですが、その基礎が大事だと言うことを、今自分は魔法使いだと思っている人たちに、手痛い失敗ではなくて、もう少し周りがひどい目に遭わない方法で気付いてもらうにはどうすればいいんだろう。

コメントを残す