昨日は慣れない英語で慣れない Erlang と慣れない swf の事を書いて、寝不足で気分はどん底だ。でも趣味でやってるだけなので誰も恨めない。仕事では Pepsi という言語のための Socket インタフェースを書いている。これは結構面白く、IPv6 になって C の API が新しくなり、私がウェブの仕事をしていた頃より良くなっている。特に IP アドレスが隠蔽されているのは良い。
これをやろうと思った動機は、Pepsi と Squeak の間で通信をさせようと思ったからだ。Squeak で GUI を作るのは簡単なので、Socket を通じて Pepsi のオブジェクトを覗いたり、ツリー状に表示すれば役に立つし、頑張ればリモートデバッガだって出来る。これでありがちな鶏卵問題から抜け出したい。
これまでは Pepsi 用の開発ツールを Pepsi 自身で書くというの私の戦略だった。しかし問題なのが、便利なツールを書こうと思ったら便利なツールが必要なのに、イアンさんはしょっちゅう GUI の API に手を加えるので前に書いた物が次の開発に全然使えず、全然前に進まない。これを脱するのに、Squeak を活用しようと思いついた。
最初もっと単純にパイプを使う事を考えていたんだけど、あとで Windows の Squeak がパイプを上手く使えない事が分かった。あと、大島さんがソケットにしたらとアドバイスを下さった事もあって思い切ってソケットのラッパをやる事にした。下調べも含めてライブラリの開発には二週間ほどかかった。一番面倒だったのは select(2) と fd_set をマッピングする事だった。
あと引っかかったのは mingw で getaddrinfo(3) を使うには -DWINVER=0x0501 のようなオプションを付けて Windows XP 以降専用にしないといけない事だ。検索に引っかかるようわざとらしくここに書く。
ちょっと話は変わるけど、Squeak を活用する大きな動機に、Squeak しか使えないベテランプログラマも Pepsi に親しんでもらおうという事がある。ベテランプログラマというのは頑固で、何が何でも Squeak しか使わない。彼らがそれでもやって行けるのが、元々 Squeak - Smalltalk というものが何十年も未来を見越して設計された環境だからだろう。
新しい言語の開発に関わって、皮肉な事に Smalltalk の設計がいかに良く出来ているかが良くわかった。このような先進性のある言語を学ぶ事で、何十年たっても一線で活躍するプログラマになる事が出来る。私もずっとこれからプログラマでいたいので、そういう物を学びたい。しかし問題なのが、私たちにとって、何十年も古びない物は何なのだろうという事だ。
最近流行の言語を試すとトレンドが見えてくる。Erlang 式のアクターによるプロセス通信は、単純で分かりやすいので他の言語にどんどん採用されるだろう。Scala は call by name を使ったユーザ定義の制御構造など、沢山の面白い技術のショーケースになっていて目が離せない。三十年後、このようなトレンドはどうなっているだろうか。私の予想は、ハードウェアを直接プログラムが当たり前になるので三十年後にはソフトウェア技術者全員失業して今のトレンド全部台無しという物だが、色々想像すると楽しい。