先日来、書いてきた「技術の真髄」だが、 ようやっと今月分(前半)が完成した。
前半の内容は
などについて。 目新しい内容としては世界最初のプログラミング言語Plankalkulについてくらいかな。
後半も書かなきゃ。
前田くんやかずひこくんによってレポートされている通り、そういう講座が開かれた。
講師が私の担当教官であることから、お手伝いに行く。かなり詰め込みぎみだったし、 プログラミング未経験者の割合も高かったので、どうなることかと思ったが、 意外となんとかなったようだ。
詳細なレポートが出る予定もあるらしい。
Robert Feldtのところの学生の論文が発表になった。
まだ、中身は読んでないんだけど、テーマはどれも興味深い。
Examination in May
Software Engineering programme, 4th year
- Anders Alexandersson, "RubyComp - a Ruby-to-LLVM Compiler Prototype", [PDF]
- Jan-Åke Hedström, "RubySharp - a Ruby to CIL Compiler", [PDF]
- Kerstin Lyngfelt, "MorphR - a Morphic GUI in Ruby", [PDF]
- Philippa Olofsson, "CheckR - Extendible Static Analysis Tool for Ruby", [PDF]
Computer Science programme, 3rd year
- Olle Johansson, "Plugin-Based Automated Testing Tool for .NET Assemblies"
- Maria Samuelsson, "Attityder om programvaruutveckling - en förstudie i hur programvaruutvecklares inställning påverkar deras arbete" (Swedish only!)
Examination in August
Software Engineering programme, 4th year
- Jennie Sjökvist, "MutatoR - a Mutation Testing Framework for Ruby"
Computer Science programme, 3rd year
- Sanny Jacobsson
というか、こんなん見てると自分が書こうとしている論文がちゃちなものに見えてくるなあ。 ぜんぜん分野は違うけど。
上記のセミナー中にちょっと時間が取れたので、メールオーガナイザーのフロントエンドに手をつけた。
Emacs Lispで400行ほど書いたら、
くらいまでできるようになって、「メールリーダー」としては一通り機能するようになった。 バックエンドは山口でデバッグしてたしね。
あとは、
があれば、当面必要な機能はカバーするだろう。
今まで、メールを読むのはGmailで、返事を書くにはcmailで改めてメールを読み込んで、 という不自然なことをしていたが、やっと一本化できそうだ。
最終的にはWeb(かIMAP)のフロントエンドも用意して、 Windowsマシンからもメールが読めるようになると完璧だ。
とか、やってるほどヒマじゃないのに、本当は。 忙しい時ほど、副業が進むのはなぜ?
ITmediaによるセキュリティキャンプ2004のレポート。
おおむね成功だったようだ。また、若者の前向きな態度にうれしく思う。 若い世代の力を発揮するのを見ることほど喜ばしいことは少ない。
妻の希望により、斐川町の「ゆめタウン」へ。普段よくいく松江の店には飽きたんだって。
催事場で、中古パソコンを展示している。リースアップのノートパソコンをクリーニングして販売している。 だいたいWindows MeころのPCが4,5万円くらい。もしノートが必要だったら買ったかもしれないなあ。 あいにく古いPCが余っている状態なので買うことはない。
ひさしぶりに温泉にいく。末娘は温泉初体験。
司会。託児のお手伝い。
神権会でレッスン。神殿について。
しかし、個人的にはとうてい満足できる出来ではなかった。 聞いてくださった方に申し訳ない。
ピントは明確になってないし、 話の流れはデザインされてないし、 参加を促すきっかけは不足しているし、 質問は練られてないし、 まとめは曖昧だし、 時間配分は雑だし。
しばらく教えることから離れていたとはいえ、 これでは全然ダメダメだ。
もうちょっと精進しよう。
えーと、要するに「いびつなことはいいことだ」ということなのかな?
私が日本を代表してるような表現は正直こっぱずかしいのだが、 「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のようなプログラムに貢献するのは誇るに足る本当の才能だ。
もっとたくさんの人を助けることになるしね。
いや、そりゃそうなんだけど、ねぇ。
まちづくり三鷹の人たちの計らいで、家族連れでジブリの森美術館へ。 大変堪能した。
末の娘は(実物大?)猫バスでおおはしゃぎし、 時間が短いと文句をたらたらだった。 1セッション5分は確かに短い。 彼女は2回も並んでたけど。
私(たち)は屋上のラピュタの文字を見て「読める、読めるぞっ」などと 悦に入っていた。娘はその場所で「目がッ、目がーっ」と叫んでいた人がいたのを 目撃したようだが、それは違うだろう。むしろ、「きみは今ラピュタ王の前にいるのだ」くらい言ってほしい。
しかし、ムスカ様は魅力的な台詞が多い。
あと、「やどさがし」という短編映画も面白かった。 人間の声によりすべての音を表現する、という試みは面白かったが、 私としてはむしろ全編を通じたアニミズムが印象的だった。 西洋ではありえない発想。日本以外のアジアではどうなんだろう?
それから、アニメーターたちの持つ「ものづくり」の態度や発想も印象的だったなあ。
で、三鷹産業プラザに移動して、講演。
Rubyの未来について。もっとも過去について語りすぎて、 未来の分量がどうしても少なくなってしまったのはちょっと失敗。 その辺に期待していた人が多かっただろうから、申し訳ない。
その後、質疑応答やら写真撮影(!)やら。
ありがたいのだが、正直、とても恥ずかしい。
その後、家族と合流して、出雲最終便で松江に。