2010年3月21日日曜日

宣言的プログラムこそクラウド時代のプログラムだ?!

 金曜の夜は久しぶりにCACAnet福岡の勉強会だった。といっても会長の山崎先生と2人だけの勉強会だった。山崎先生とはICOTつながりで、CACAnetの会員にもなっていたりする。
 勉強会の話は、RESTで考えることをもっとやらないといけないねって話から始まって、Representationが重要だよって話を経由して、Prologのユニフィケーションや関数型言語のチャーチ・ロッサー性が成り立つようなネットワーク処理がクラウドや高分散した世界には重要になるよねって話になった。学生のころ勉強した話から芽が吹き出すのは楽しい。そのころ、高並列処理には関数型言語や論理型言語が重要だとまじめに学んでいたが、実際のところはもっと現実的な世界に話は進んでいってしまって、過去の話にしてしまっていたが、今のクラウド化する分散処理、並列処理に時代にはもしかしたら面白いものに展開できるかもしれない。
 旧きを温ねて新しきを知るにもっていけるどうか?私は固くなった頭をやわらかくすることに努力が必要である。インデックスだけの昔話だけではなく、フリーズしている脳細胞を活性化させる時代がきたような気が少しだけした。

2010年3月11日木曜日

VirtualBoxその後

 VirtualBox 3.1.4はこんなによくできているとは知らなかった。とりあえずのインストールをちゃんと設定を考えて入れ直した。Ubuntuも64bit対応のものをインストール、Windows7もIDEをPIIX4だったものをICH6に変更して再インストール。Windows7は直接インストールしたようにはサクサク軽快ではないが、Ubuntuはサクサク軽快なのでうれしい。Windows7の上のUbuntuは役立つだろう。
 気になったのは、Ubuntuでカーネルを新しいものにすると、ディスプレイの設定関係のアドオンを再度インストールしなくてはいけないこと。ウィンドウのサイズに追従しなくなってしまった。まあ、面倒ではないのでいいとしよう。
 Macintoshの環境で悩んでいるのはキーバインド。かな漢字変換のキーが変わるのは使いにくい。同じGoogle日本語入力を使ってもキーバインドが変わっているのはいただけない。コマンド+スペースで変換開始できるようにならないものだろうか?
 さてさて、いろいろOSは使えるようになったのだが、このブログも含めて最近の作業の多くはみんなブラウザの中。ブラウザが仮想コンピュータなのである。Googleの考え方は正しいのだろう。PCのデスクトップとネットワークがシームレスになるのは以前からいろいろ考えられてきているが、結論はブラウザが強力になってデスクトップマネージャ化することになりそうだ。案外答えは簡単なものだった。そもそもウィンドウシステムというのはカッコいいが効率はあまりよくない。Macintoshも最初はマルチウィンドウはあまり使ってい無かった気がする。

2010年3月8日月曜日

VirtualBoxに目覚める?

 Windows7のXPモードがE3300で気持ちよく動いたので、では今度はUbuntuも仮想マシンで動かしてみようと思いました。最初はVirtualPCで動かそうと思ったのですが、VirtualBoxの性能がいいとう噂を聞いたので、SunからVirtualBoxをダウンロードしてきて、インストールしてみました。
 いままで、VMWarePlayerでUbuntuのイメージは動かすことがあったのですが、Virtual環境で1からインストールをすることはありませんでした。まあ、ちょっとやってみようとこのまえ作成したUbuntu 9.10のCDでインストールをしまいた。面倒ならやめようと思ってはじめたのですが、超簡単。最初は画面の大きさが800x600までしかダメで、こりゃダメねと思ったのですが、そのあたりはちゃんと準備があって、画面関係のドライバのCDイメージがちゃんとマウントできるようになっておりました。それをインストールしてリブートしたらもうバッチリという具合です。いやはや簡単。CPUコアも2つちゃんと使えます。
 これに気をよくして、大学でiMacにVirtualBoxを入れて、Windows 7 Professionalをインストールしてみました。これもまた簡単。同じようにドライバのインストーラがマウントされるので、それをインストールして画面の問題はOK。キーボードがMac用の小さなものなのでかな漢字変換に困ってしまいましたが、これは調べればどうにかなると思います。
 使ったのはWindows 7 Professional 64bit版ですが、問題がちょっとあって、音が出ないのである。VirtualBoxではAC'97で見えるように設定して動かしたのですが、AC'97のデバイスを認識してくれません。性格にはデバイスは認識しているのですが、AC'97デバイスと思ってくれていないか、そもそもドライバが無いようなのです。情報センターからSoundBlasterにすればいいという話を聞きましたが、こちらはさらにまったく認識しません。
 結論は64bit版のAC'97コーデックを探してインストールするということになりました。RealtekからWindows 7用のAC'97ドライバが提供されていることがわかったので、それを入れてみたところ、無事音を出すことができました。
 よく考えてみると、最近はHD Audioで、64bit対応のハードウェアはもはやAC'97なんて使っていないはずなのです。Intelから提供されているかと見てみましたが、AC'97はXPまでです。VirtualBoxのAC'97という仕様がいけないのではないかと思いました。まあ、Realtekが64bit版を出してくれていたことは感謝です。
 あとでネットを見てみるとやはり64bit版の問題みたいです。32bitならちゃんと見つけてくれるようです。

2010年3月4日木曜日

Haskellがおもしろいが...

 学生時代の卒業研究は純関数型言語の処理系だった。関数型言語の理論をしっかり勉強したわけではないので、入り口程度しかわかっていないのですが、自作の言語のために変なプログラムばかり書いていたために、けっこう関数型言語の特徴がわかっているつもりである。遅延評価とか無限リストとかあーだこーだと言って勉強したころが思い出されます。
 学生ころとそれほど新しい何かがあるというわけでもないが、コンパイラがあってそこそこ実用的なプログラミングができるようになっていることはうれしい。手続き的な副作用を排した入出力は当時もいろいろ議論していた気がするが、モナドはわかりにくいが面白さを感じる。
 C++やJavaが広く普及してオブジェクト指向プログラミングがプログラミングの基本のようになったが、大きなシステムでも作らない限りそれほど恩恵を感じることは少ない。もちろんさまざまなライブラリが充実したことはオブジェクト指向の普及によるところが大きいのですが、具体的なコンピュータへのインプリメンテーションから逃れにくいものを感じていた。オブジェクトがどのコンピュータにあるかと考えざるをえないのである。ネットワークに分散する処理を考える場合はオブジェクト的思考をしないほうがいいような気がする。
 ということでHaskellでのプログラミングに興味がわいてきた。Haskellの研究をしたいというわけではなく、Haskell的発想で頭をリセットしてみたいという気持ちである。どうもオブジェクト指向化した頭がプログラミングを面倒にしている気がして、プログラムのわかり安さはもっと別のところにもあるような気がするので、まずは環境を変えてみようというわけなのである。