「良い」プログラミング手法/言語/教育とは

プログラミングの手法、プログラミング言語、プログラミング教育など、プログラミング周辺の話題で、いつもどこかでだれかが争っているわけですが、あんまり興味がないんですよね。自分の欲しい情報に向かうノイズになるので、ちょっと視線の横にどけておきたい気はしますが、それ以上ではありません。

無為だという自覚があって井戸端会議をしているのは楽しいんですよね。でも、よく言われますが「自分は〇〇が好きだ、そうじゃないものは嫌いだ」という話がほとんどなんですよね…まあ、建設的な意見を戦わせている場所なら、わたしも興味あります(結構、激しい論戦をしている場合でも、建設的なケースもありますし、そういったものは長大なやりとりでも、一応目を通したり、あとで読めるようにしておくように気を付けています)。つまり、見た目で煩そうかどうかだけでは有意義かどうかもわかりません。当たり前ですが、内容を見ましょう。

本人は本気で建設的な批判をしているつもりでも、視野が狭いだけの場合も多いです。全知全能でもない限り、わたしも含めてこれは誰でも起こりうるので、反応したかったらしたらいいし、鬱陶しいなら無視すればいいのです。あなた自身のリアクションに正しいも間違っているもありません。とにかく、無条件に良いものなんかあるわけないのです。

加えて、視野が狭かったりコミュニケーションの方法が稚拙だったりする場合でも、それ自体は非難されるべきものでもないとわたしは考えています。それを理由に複数人で罵倒したりするのはもってのほかかと。誰でもそうなりうるんですから、冷静に対処しましょう。しっかり指摘すべきかどうか、優しく諭すのか、ケースバイケースでしょう。多くの偏見は、単純化への誘惑から起こると思っています。

プログラミング手法/言語/教育に関しては、それが「抽象化」を使って何かを行うための道具であるという性質を考えると、どうしても政治的な面を考慮に入れざるを得なくなってきます。要するに、多くの人間が採用すればするほど、そのことによってそれらの手法/言語/教育が、より力を持つことになる、という意味です。抽象化の先には、再利用性、可読性(=説明が容易かどうか)などが見据えられていて、それらの性質を活かすためには、その手法/言語/教育が多くの回数、様々なケースで、たくさんの頭脳によって使われる必要があるわけです。特定の瞬間、場所、人間が1回使うだけの道具であれば、それが「良いかどうか」など気にするでしょうか?

大変興味深いのは、プログラミング手法/言語/教育に関しては、数学的な観点から考えた「良さ」も存在しうるという点です。いやいやむしろ、そちらが主だろう、と考える方は、わたしとはいい友達になれそうですが、世の中で多数派の意見だと考えるのはいますぐやめた方が賢明です。むしろそういった「良さ」を敵視する人々もいますよね。大変残念ですが、今までのコミュニケーションの方法が良くなかったのかもしれないですね。でも、それもしかたないことです。その時その時で、それぞれが信じることをやるしかないのです。ただ、わたしは、あまり人々が争っているところは見たくない、というのが本音ではあります。