えーと、要するに「いびつなことはいいことだ」ということなのかな?
私が日本を代表してるような表現は正直こっぱずかしいのだが、 「Windowsのことがわからないおっさん」という表現は 実はあんまりはずれてないかも。
ただし、わからないのは主にWindowsプログラミングであって、 日常的な操作や設定くらいは(人より回り道することはあっても)なんとかできる。
でも、ワードやエクセルやパワーポイントは今でも使えない。
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コード(最終版)と比較するのは反則かもしれない。
Dolphon開発終了にインスパイアされたエントリふたたび。 「Smalltalkが生産性に欠ける」というのは、 またずいぶん大胆なエントリタイトルだと思う。
が、ここでは「言語としてははるかに劣るJavaが、 その言語としてのなじみやすさや クラスライブラリの蓄積によって 『普通のプログラマ』の生産性を向上させることにより、 Smalltalkエキスパートよりも低コストでのソフトウェア開発を可能にした」という ことが重視されている。
数少ない「選ばれた人」の生産性がいくら高くても、 圧倒的に多い「普通の人」の(安い)生産性にはかなわない、 という視点か。
完全に同意はしないものの、「普通の人に優しい」というのは、 Rubyが唯一LispやSmalltalkに勝っている点だけに、 個人的にはアリな視点だと思う。
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のようなプログラムに貢献するのは誇るに足る本当の才能だ。
もっとたくさんの人を助けることになるしね。
いや、そりゃそうなんだけど、ねぇ。