LLDN (2) - Language Update

Langauge Updateでは各言語の動向が報告された。

awk

awkをXML対応にする計画 があるらしい。gawkベースで、RHELに対するFCみたいなgawkに対する先行開発で、xgawkって言うらしい。知らなかった。Gentooには入ってるらしいけど。

言われてみれば、レコード/フィールド処理のためのawkなんだから、そりゃXMLでも出番はあるよね。それでもawkのちっこいという利点が失われていないのは嬉しい。

Curl, http://www.curlap.com/

ライセンスだのなんだのが激しく揺れ動いたけれど、結局今は住商情報システムが完全に買い取った形らしい。更なる機能追加があったとか。しかもプラグインサイズはFlashより小さく、速度面でもFlashに勝てるらしい。

個人的にはCurlは好きだ。次世代のWeb言語としてふさわしい力がある。でも、実際に業務で使おうとすると、難点はやはりプラグインの普及率となる。その点について質問してみたけれど、どうもはっきりしない返答だった。とにかく頑張って普及させるしかないらしい。頑張れ。「SurgeはWindowsの一部です」とか「SurgeはGeckoの一部です」とか言い張る勢いで頑張れ。

それにしても、CurlGaucheって仲良くできないものかな。kahuaに見るようなS式の使い方とCurlの仕様は非常に近いものがあると思うのだけれど。クライアントがCurlでサーバーがKahuaとか、実は最強だろうか。Apache2のOutputFilterで、それこそsedでもperlでも何でも使って s/(/{/g すれば。

Gauche

しばらくアップデートしないままで触って遊んでいたら、いつの間にか凄く変わっていたらしい。処理系をSchemeで再実装してself compileするし、プロファイラは装備されるし、アプリケーションはいっぱい出てくるし、特にKahuaは凄すぎるし、もう大変。おまけに、次期0.8.6では拡張ライブラリが作りやすくなったり、更に進化するらしい。

Kahuaはあとのフレームワーク対決に出ていたので後述。

Haskell

仕様はHaskell98の2003年改訂以来変わっていないらしい。でも、 GHC には遂にコマンドラインインタプリタが実装された。

アプリケーションとしては、 Darcs なんちゅうリビジョン管理システムが作られたり(Patch Algebraとかいう背景理論が数学的に気になる)、 Pugs なんて、Perl6処理系が実装されてしまったり。PugsPerl界にもとんでもない影響を与えていて……知らなかったよ。Parrot系の進展があまりにも遅いから、まだまだしばらくはそっちは注視しないでいいかなと思っていたら、世間はいつの間にか進んでいた。これは、今日からでもPugsでPerl6を触るべきかな。

ML

名前はよく聞くけど、中身はよく知らなかった言語。関数言語だけど、非純粋で正格な、ある意味ではHaskellの逆を行く言語らしい。非純粋でない……発表者・上野氏曰く「汚れてしまった」のだという。汚れた現実をモナドとか難しい概念で覆い隠すんではなくて、より直感的に扱う代わりに、汚れてしまったのだと。そして、それでも美しいのだと。

これはHaskellにも通じるけれど、強い型付けの関数型言語に見られる型による証明系は魅力的。コンパイルが通った => 型は合ってる => coreは吐かないっていうこっちの世界から見たら、C++のなんと泥臭い事よ。それがC++の魅力でもあるのだけれど。でもこの型システムは確かに生産性の向上にはつながるだろうな。(現場に関数型言語を使いこなせる人材が十分にいるならね。LLDNに来るような人は別として、その他は再帰関数の時点で既に挫折する人間多数何じゃ無かろうか)

F# = OCaml.NETってのもあるらしい。

Perl

ParrotでのPerl6は相変わらず、と見ていた。でも、知らない間にPugsが。Perl6の文法はすばらしい。後方互換性を犠牲にするだけはある。私がPerlメインからRubyメインに移った理由のほとんどが、Perl6では解消されている。表記は美しいし、これでEffective Perlの後半に載ってるような美しいコードも書ければもう文句はない。再びPerlに流れるRubyistが多数発生しそうな予感。とにかく、今日からPerl6の勉強を始める。

PHP

性能が向上したり、今まで不揃いだったDBインターフェースを共通化するPDOっていうのがあったり、いろいろだけれど、私、PHPは嫌いだし。

Ruby

Rubyはねー。 ruby-dev を読んでるので私はあまり新鮮さは感じなかったのだけれど。でも動いたのは動いた。 Ruby on Rails があって、 YARV があって、 Rubyist Magazine があって。

Python

インデント強制が生理的に受け付けない言語。でも力は認めるしかない。インデント強制もきっと、Rubyの変数名先頭強制と同じで慣れると気持ちいいんだろう。どうせ、そこから外れるコーディングなんかしないわけだし。何となく、触ってみようかという気持ちが再び沸き上がってきた。でもPerl6が先か。

そういえばHaskellにインデントを強制されるのは気持ち悪くない。何故? 何だかPythonを不当に差別しているような気がしてきた。

PyPyとかいうPythonで実装されたPython処理系があって、J2EEでは最早おなじみのJythonがあって、更に.NETにもParrotにも載っかってて。Nokia Series 60にも搭載されたらしい。へ〜。

Squeak

去年のLL WeekendのレポートでSqueak自体を使ってプレゼンテーションしているのを指して「オブジェクトを見ている」と表現した人がいた。どこで聞いたか忘れた。この言葉を実感できる発表だった。これはもう、Squeakが動くのを見ないことには実感できないのだろう。目に映る全てがオブジェクト、というとPythonRubyと同じ表現になってしまうのだけれど、レベルが違うのだ。

これが、Smalltalkのメッセージ送信なのか。これがオブジェクトなのか。これがSimulaと並ぶOOの源流の1つ、その直系の子孫であって……言葉にできない。

LLDN (3) に続く