第2回岡山カーネル勉強会

先週の土曜日に、第2回岡山カーネル勉強会に行ってきました。
岡山駅についたのが9時40分頃で、10時に理科大に着くかどうかわからなかったのでタクシーに乗り、タクシーの中から、ひらさんに電話をして先にはじめてもらうように頼みました。
すると「enoさんを迎えに駅に行ってたから、便乗すればよかったのに」と言われました。便乗しておけばよかった。理科大に着き、会場のある建物へ入り、エレベータでその階に上がると、ベンチに若者が座っていました。それがpimentさんでした。会場の部屋に鍵がかかって入れなかったので、ひらさんに電話をすると、こちらに向かう途中とのことでした。その時は、なんか忘れ物でもあったのかなと思ってました。
今回はスケジューラの講演でした。講演はひらさんの2M3Sの形式で行われました。しかし、短い時間で講演できるような工夫がいくつかされていました。たとえば、コード画面にすべてのコードを貼り付けるのではなく、重要な部分だけをピックアップするなどの加工を行ったり、コミュニケーション画面を聞き手からのアウトプットに使用せず、コードを貼り付けて、読まなくていいところを省略する手順の演習に使用していました。それでも予定の2時間いっぱいかかりました。
講演の中で自分が面白いと思ったのは、goto文の話でした。美しく構造化されたコードは、大規模になってくるとパフォーマンスが落ちてくるので、あえてgotoを使って汚くコーディングする、そうすると効率よく動くという話でした。プログラムには、例えばコメントがきちんと書かれたような、読みやすいという意味での美しさと、そうでない美しさ*1があるそうです。コメントなら、製品としてのプログラムを書いたとき、開発者が説明責任を果たすために書くものだそうです。ひらさんはただ読みやすいだけのコードは嫌いだそうです。なぜなら、プログラムとは本当はバイナリのことであり、動作するのが目的だからです。
自分もこれに共感しました。「プログラムを理解するときは目的を考えろ」とよく言われますが、この言葉に以前からもどかしいものを感じていました。プログラムとは、コンピュータを動作させるための命令です。ですから、目的を考えるのではなく、動作を考えるのでなければなりません。プログラムというものは、仕事を変え、生活を変え、世界を変えるかもしれません。逆に人間を支配したり、害を及ぼしたりするかもしれません。しかし、それはあくまで、動作した結果としてそうなるのであって、動作しなければ決してそうなりません。プログラムの目的は、第一義には、あくまで動作以外ありえません。だからこそ、目的としての動作と、手段としての命令を考えれば、プログラムは理解できるはずだと思います。そういった話で少し盛り上がりました。
講演が終わった後、パスタ屋で懇親会をやりました。ひらさんが、今朝はスピードオーバーで罰金15,000円取られて遅れたんですと教えてくれました。ご愁傷様でした。それから、読学のススメは、サイト全体で、1日数千アクセス以上あるらしい。ひらさんは自宅サーバにしたいそうですが、厳しいんじゃないかなあ。

*1:ひらさんが以前ブログで書いていたコアデザインのことですかと聞いたところ、少し違うということでした。