«前の日記(2007年08月19日) 最新 次の日記(2007年08月21日)» 編集

Matzにっき


2007年08月20日 [長年日記]

_ アンカテ(Uncategorizable Blog) - 日本が世界に誇るまつもとゆきひろ氏の大きな穴

えーと、要するに「いびつなことはいいことだ」ということなのかな?

私が日本を代表してるような表現は正直こっぱずかしいのだが、 「Windowsのことがわからないおっさん」という表現は 実はあんまりはずれてないかも。

ただし、わからないのは主にWindowsプログラミングであって、 日常的な操作や設定くらいは(人より回り道することはあっても)なんとかできる。

でも、ワードやエクセルやパワーポイントは今でも使えない。

_ [言語] Karsten Wagner's Blog: Better exception handling

Javaは明示的に宣言してない例外がハンドルされていないと コンパイル時にエラーになる。これはこれで素晴らしい機能だけど、 結果としてプログラムコードを繁雑にしてしまう(ことがある)。

元々は以下のようにシンプルなコードだったのだが、

String readData(File file) {
  BufferedReader in = new BufferedReader(new FileReader(file));
  String data = in.readLine();
  in.close();
  return data;
}

コンパイルできるためには例外を捕捉しなければならない。

String readData(File file, String default_value) {
  String data;
  BufferedReader in = null;
  try {
    in = new BufferedReader(new FileReader(file));
    data = in.readLine();
    in.close();
  }
  catch(FileNotFoundException e) {
    return default_value;
  }
  return data;
}

しかし、これでもまだダメだ。close()がIOExceptionを出すかもしれない。 で、最終版はこんな感じ。

String readData(File file, String default_value) {
  String data = default_value;
  BufferedReader in = null;
  try {
    in = new BufferedReader(new FileReader(file));
    data = in.readLine();
  }
  catch(IOException e) {}
  finally {
    if (in != null) {
      try {
        in.close();
      }
      catch(IOException e) {}
    }
  }
  return data;
}

例外の捕捉漏れを検出して、正しいコードを書かせようという言語機能が むしろコードを繁雑にして、「元々やりたいこと」を例外処理に埋没させてしまう危険性がある。 また、こんなに繁雑だとそもそも例外なんか使いたくない(Cみたいにエラーコードにしちゃう) という気にさせられてしまうんじゃないかなあ。それだとむしろ退化を促進しちゃう。

まあ、こんなことするくらいなら上にIOExceptionを投げちゃえばいいのかもしれないけど。

一方、Rubyではこうなる。

def read_data(file)
  begin
    file.readline
  ensure
    file.close
  end
end

でも、これは例外をそのままスルーしてるんで、 上記のJavaコード(最終版)と比較するのは反則かもしれない。

_ [言語] A lack of productivity is killing Smalltalk.

Dolphon開発終了にインスパイアされたエントリふたたび。 「Smalltalkが生産性に欠ける」というのは、 またずいぶん大胆なエントリタイトルだと思う。

が、ここでは「言語としてははるかに劣るJavaが、 その言語としてのなじみやすさや クラスライブラリの蓄積によって 『普通のプログラマ』の生産性を向上させることにより、 Smalltalkエキスパートよりも低コストでのソフトウェア開発を可能にした」という ことが重視されている。

数少ない「選ばれた人」の生産性がいくら高くても、 圧倒的に多い「普通の人」の(安い)生産性にはかなわない、 という視点か。

完全に同意はしないものの、「普通の人に優しい」というのは、 Rubyが唯一LispやSmalltalkに勝っている点だけに、 個人的にはアリな視点だと思う。

_ The Most Excellent and Lamentable Tragedy of Richard Stallman − Edward O’Connor

Stallmanの欠点は他人の感情を理解しない点だと思う、という話。

StallmanはEmacsのある機能を修正することを、 EmacsメンテナのStefan Monnierに依頼した。 しかし、Stefanには娘が産まれたばかりなので、時間が取れなかった。

Stallmanの返答は

I am sorry to hear it. Unless someone else can figure these things out, I guess the release has to wait until you have time.

それは残念だ。ほかの誰かが対処できなければリリースは延期しなければならないな。

他の人がStepanに「おめでとう」を言う中、Stallmanは追い打ちをかけた。

It doesn't take special talents to reproduce -- even plants can do it. On the other hand, contributing to a program like Emacs takes real skill. That is really something to be proud of.

It helps more people, too.

子孫を作るってのには大した才能は要らない。植物でさえできることだ。 それに比べてEmacsのようなプログラムに貢献するのは誇るに足る本当の才能だ。

もっとたくさんの人を助けることになるしね。

いや、そりゃそうなんだけど、ねぇ。


«前の日記(2007年08月19日) 最新 次の日記(2007年08月21日)» 編集